@@ -552,6 +552,7 @@ <h1>Source code for isaaclab.sensors.frame_transformer.frame_transformer</h1><di
552
552
< span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> pxr</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> UsdPhysics</ span >
553
553
554
554
< span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> isaaclab.sim</ span > < span class ="w "> </ span > < span class ="k "> as</ span > < span class ="w "> </ span > < span class ="nn "> sim_utils</ span >
555
+ < span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> isaaclab.utils.string</ span > < span class ="w "> </ span > < span class ="k "> as</ span > < span class ="w "> </ span > < span class ="nn "> string_utils</ span >
555
556
< span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> isaaclab.markers</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> VisualizationMarkers</ span >
556
557
< span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> isaaclab.utils.math</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> combine_frame_transforms</ span > < span class ="p "> ,</ span > < span class ="n "> convert_quat</ span > < span class ="p "> ,</ span > < span class ="n "> is_identity_pose</ span > < span class ="p "> ,</ span > < span class ="n "> subtract_frame_transforms</ span >
557
558
@@ -620,6 +621,26 @@ <h1>Source code for isaaclab.sensors.frame_transformer.frame_transformer</h1><di
620
621
< span class ="c1 "> # return the data</ span >
621
622
< span class ="k "> return</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _data</ span >
622
623
624
+ < span class ="nd "> @property</ span >
625
+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> num_bodies</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="nb "> int</ span > < span class ="p "> :</ span >
626
+ < span class ="w "> </ span > < span class ="sd "> """Returns the number of target bodies being tracked.</ span >
627
+
628
+ < span class ="sd "> Note:</ span >
629
+ < span class ="sd "> This is an alias used for consistency with other sensors. Otherwise, we recommend using</ span >
630
+ < span class ="sd "> :attr:`len(data.target_frame_names)` to access the number of target frames.</ span >
631
+ < span class ="sd "> """</ span >
632
+ < span class ="k "> return</ span > < span class ="nb "> len</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _target_frame_body_names</ span > < span class ="p "> )</ span >
633
+
634
+ < span class ="nd "> @property</ span >
635
+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> body_names</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="nb "> list</ span > < span class ="p "> [</ span > < span class ="nb "> str</ span > < span class ="p "> ]:</ span >
636
+ < span class ="w "> </ span > < span class ="sd "> """Returns the names of the target bodies being tracked.</ span >
637
+
638
+ < span class ="sd "> Note:</ span >
639
+ < span class ="sd "> This is an alias used for consistency with other sensors. Otherwise, we recommend using</ span >
640
+ < span class ="sd "> :attr:`data.target_frame_names` to access the target frame names.</ span >
641
+ < span class ="sd "> """</ span >
642
+ < span class ="k "> return</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _target_frame_body_names</ span >
643
+
623
644
< span class ="w "> </ span > < span class ="sd "> """</ span >
624
645
< span class ="sd "> Operations</ span >
625
646
< span class ="sd "> """</ span >
@@ -631,6 +652,18 @@ <h1>Source code for isaaclab.sensors.frame_transformer.frame_transformer</h1><di
631
652
< span class ="k "> if</ span > < span class ="n "> env_ids</ span > < span class ="ow "> is</ span > < span class ="kc "> None</ span > < span class ="p "> :</ span >
632
653
< span class ="n "> env_ids</ span > < span class ="o "> =</ span > < span class ="o "> ...</ span > </ div >
633
654
655
+ < div class ="viewcode-block " id ="FrameTransformer.find_bodies "> < a class ="viewcode-back " href ="../../../../source/api/lab/isaaclab.sensors.html#isaaclab.sensors.FrameTransformer.find_bodies "> [docs]</ a > < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> find_bodies</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> name_keys</ span > < span class ="p "> :</ span > < span class ="nb "> str</ span > < span class ="o "> |</ span > < span class ="n "> Sequence</ span > < span class ="p "> [</ span > < span class ="nb "> str</ span > < span class ="p "> ],</ span > < span class ="n "> preserve_order</ span > < span class ="p "> :</ span > < span class ="nb "> bool</ span > < span class ="o "> =</ span > < span class ="kc "> False</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="nb "> tuple</ span > < span class ="p "> [</ span > < span class ="nb "> list</ span > < span class ="p "> [</ span > < span class ="nb "> int</ span > < span class ="p "> ],</ span > < span class ="nb "> list</ span > < span class ="p "> [</ span > < span class ="nb "> str</ span > < span class ="p "> ]]:</ span >
656
+ < span class ="w "> </ span > < span class ="sd "> """Find bodies in the articulation based on the name keys.</ span >
657
+
658
+ < span class ="sd "> Args:</ span >
659
+ < span class ="sd "> name_keys: A regular expression or a list of regular expressions to match the body names.</ span >
660
+ < span class ="sd "> preserve_order: Whether to preserve the order of the name keys in the output. Defaults to False.</ span >
661
+
662
+ < span class ="sd "> Returns:</ span >
663
+ < span class ="sd "> A tuple of lists containing the body indices and names.</ span >
664
+ < span class ="sd "> """</ span >
665
+ < span class ="k "> return</ span > < span class ="n "> string_utils</ span > < span class ="o "> .</ span > < span class ="n "> resolve_matching_names</ span > < span class ="p "> (</ span > < span class ="n "> name_keys</ span > < span class ="p "> ,</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _target_frame_names</ span > < span class ="p "> ,</ span > < span class ="n "> preserve_order</ span > < span class ="p "> )</ span > </ div >
666
+
634
667
< span class ="w "> </ span > < span class ="sd "> """</ span >
635
668
< span class ="sd "> Implementation.</ span >
636
669
< span class ="sd "> """</ span >
@@ -926,16 +959,39 @@ <h1>Source code for isaaclab.sensors.frame_transformer.frame_transformer</h1><di
926
959
< span class ="k "> if</ span > < span class ="n "> debug_vis</ span > < span class ="p "> :</ span >
927
960
< span class ="k "> if</ span > < span class ="ow "> not</ span > < span class ="nb "> hasattr</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="s2 "> "frame_visualizer"</ span > < span class ="p "> ):</ span >
928
961
< span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> frame_visualizer</ span > < span class ="o "> =</ span > < span class ="n "> VisualizationMarkers</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> cfg</ span > < span class ="o "> .</ span > < span class ="n "> visualizer_cfg</ span > < span class ="p "> )</ span >
962
+
963
+ < span class ="k "> try</ span > < span class ="p "> :</ span >
964
+ < span class ="c1 "> # isaacsim.util is not available in headless mode</ span >
965
+ < span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> isaacsim.util.debug_draw._debug_draw</ span > < span class ="w "> </ span > < span class ="k "> as</ span > < span class ="w "> </ span > < span class ="nn "> isaac_debug_draw</ span >
966
+
967
+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> debug_draw</ span > < span class ="o "> =</ span > < span class ="n "> isaac_debug_draw</ span > < span class ="o "> .</ span > < span class ="n "> acquire_debug_draw_interface</ span > < span class ="p "> ()</ span >
968
+ < span class ="k "> except</ span > < span class ="ne "> ImportError</ span > < span class ="p "> :</ span >
969
+ < span class ="n "> omni</ span > < span class ="o "> .</ span > < span class ="n "> log</ span > < span class ="o "> .</ span > < span class ="n "> info</ span > < span class ="p "> (</ span > < span class ="s2 "> "isaacsim.util.debug_draw module not found. Debug visualization will be limited."</ span > < span class ="p "> )</ span >
970
+
929
971
< span class ="c1 "> # set their visibility to true</ span >
930
972
< span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> frame_visualizer</ span > < span class ="o "> .</ span > < span class ="n "> set_visibility</ span > < span class ="p "> (</ span > < span class ="kc "> True</ span > < span class ="p "> )</ span >
931
973
< span class ="k "> else</ span > < span class ="p "> :</ span >
932
974
< span class ="k "> if</ span > < span class ="nb "> hasattr</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="s2 "> "frame_visualizer"</ span > < span class ="p "> ):</ span >
933
975
< span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> frame_visualizer</ span > < span class ="o "> .</ span > < span class ="n "> set_visibility</ span > < span class ="p "> (</ span > < span class ="kc "> False</ span > < span class ="p "> )</ span >
976
+ < span class ="c1 "> # clear the lines</ span >
977
+ < span class ="k "> if</ span > < span class ="nb "> hasattr</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="s2 "> "debug_draw"</ span > < span class ="p "> ):</ span >
978
+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> debug_draw</ span > < span class ="o "> .</ span > < span class ="n "> clear_lines</ span > < span class ="p "> ()</ span >
934
979
935
980
< span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> _debug_vis_callback</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> event</ span > < span class ="p "> ):</ span >
936
981
< span class ="c1 "> # Update the visualized markers</ span >
937
- < span class ="k "> if</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> frame_visualizer</ span > < span class ="ow "> is</ span > < span class ="ow "> not</ span > < span class ="kc "> None</ span > < span class ="p "> :</ span >
938
- < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> frame_visualizer</ span > < span class ="o "> .</ span > < span class ="n "> visualize</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _data</ span > < span class ="o "> .</ span > < span class ="n "> target_pos_w</ span > < span class ="o "> .</ span > < span class ="n "> view</ span > < span class ="p "> (</ span > < span class ="o "> -</ span > < span class ="mi "> 1</ span > < span class ="p "> ,</ span > < span class ="mi "> 3</ span > < span class ="p "> ),</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _data</ span > < span class ="o "> .</ span > < span class ="n "> target_quat_w</ span > < span class ="o "> .</ span > < span class ="n "> view</ span > < span class ="p "> (</ span > < span class ="o "> -</ span > < span class ="mi "> 1</ span > < span class ="p "> ,</ span > < span class ="mi "> 4</ span > < span class ="p "> ))</ span >
982
+ < span class ="n "> all_pos</ span > < span class ="o "> =</ span > < span class ="n "> torch</ span > < span class ="o "> .</ span > < span class ="n "> cat</ span > < span class ="p "> ([</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _data</ span > < span class ="o "> .</ span > < span class ="n "> source_pos_w</ span > < span class ="p "> ,</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _data</ span > < span class ="o "> .</ span > < span class ="n "> target_pos_w</ span > < span class ="o "> .</ span > < span class ="n "> view</ span > < span class ="p "> (</ span > < span class ="o "> -</ span > < span class ="mi "> 1</ span > < span class ="p "> ,</ span > < span class ="mi "> 3</ span > < span class ="p "> )],</ span > < span class ="n "> dim</ span > < span class ="o "> =</ span > < span class ="mi "> 0</ span > < span class ="p "> )</ span >
983
+ < span class ="n "> all_quat</ span > < span class ="o "> =</ span > < span class ="n "> torch</ span > < span class ="o "> .</ span > < span class ="n "> cat</ span > < span class ="p "> ([</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _data</ span > < span class ="o "> .</ span > < span class ="n "> source_quat_w</ span > < span class ="p "> ,</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _data</ span > < span class ="o "> .</ span > < span class ="n "> target_quat_w</ span > < span class ="o "> .</ span > < span class ="n "> view</ span > < span class ="p "> (</ span > < span class ="o "> -</ span > < span class ="mi "> 1</ span > < span class ="p "> ,</ span > < span class ="mi "> 4</ span > < span class ="p "> )],</ span > < span class ="n "> dim</ span > < span class ="o "> =</ span > < span class ="mi "> 0</ span > < span class ="p "> )</ span >
984
+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> frame_visualizer</ span > < span class ="o "> .</ span > < span class ="n "> visualize</ span > < span class ="p "> (</ span > < span class ="n "> all_pos</ span > < span class ="p "> ,</ span > < span class ="n "> all_quat</ span > < span class ="p "> )</ span >
985
+
986
+ < span class ="k "> if</ span > < span class ="nb "> hasattr</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="s2 "> "debug_draw"</ span > < span class ="p "> ):</ span >
987
+ < span class ="c1 "> # Draw lines connecting the source frame to the target frames</ span >
988
+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> debug_draw</ span > < span class ="o "> .</ span > < span class ="n "> clear_lines</ span > < span class ="p "> ()</ span >
989
+ < span class ="c1 "> # make the lines color yellow</ span >
990
+ < span class ="n "> source_pos</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _data</ span > < span class ="o "> .</ span > < span class ="n "> source_pos_w</ span > < span class ="o "> .</ span > < span class ="n "> cpu</ span > < span class ="p "> ()</ span > < span class ="o "> .</ span > < span class ="n "> tolist</ span > < span class ="p "> ()</ span >
991
+ < span class ="n "> colors</ span > < span class ="o "> =</ span > < span class ="p "> [[</ span > < span class ="mi "> 1</ span > < span class ="p "> ,</ span > < span class ="mi "> 1</ span > < span class ="p "> ,</ span > < span class ="mi "> 0</ span > < span class ="p "> ,</ span > < span class ="mi "> 1</ span > < span class ="p "> ]]</ span > < span class ="o "> *</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _num_envs</ span >
992
+ < span class ="k "> for</ span > < span class ="n "> frame_index</ span > < span class ="ow "> in</ span > < span class ="nb "> range</ span > < span class ="p "> (</ span > < span class ="nb "> len</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _target_frame_names</ span > < span class ="p "> )):</ span >
993
+ < span class ="n "> target_pos</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _data</ span > < span class ="o "> .</ span > < span class ="n "> target_pos_w</ span > < span class ="p "> [:,</ span > < span class ="n "> frame_index</ span > < span class ="p "> ]</ span > < span class ="o "> .</ span > < span class ="n "> cpu</ span > < span class ="p "> ()</ span > < span class ="o "> .</ span > < span class ="n "> tolist</ span > < span class ="p "> ()</ span >
994
+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> debug_draw</ span > < span class ="o "> .</ span > < span class ="n "> draw_lines</ span > < span class ="p "> (</ span > < span class ="n "> source_pos</ span > < span class ="p "> ,</ span > < span class ="n "> target_pos</ span > < span class ="p "> ,</ span > < span class ="n "> colors</ span > < span class ="p "> ,</ span > < span class ="p "> [</ span > < span class ="mf "> 1.5</ span > < span class ="p "> ]</ span > < span class ="o "> *</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _num_envs</ span > < span class ="p "> )</ span >
939
995
940
996
< span class ="w "> </ span > < span class ="sd "> """</ span >
941
997
< span class ="sd "> Internal simulation callbacks.</ span >
0 commit comments