Naming of child_frame_ids in the ROS2 Publish Transform Tree

I want to publish the pose of multiple simulated humans (omni.anim.people) with ROS2.
In a first attempt, I added the auto generated prims ‘/World/Characters/Tom’ to the targetPrims of the TF-Publisher node, however, these values did not change when the person was walking around.
With a bit of experimentation, I found that “/World/Characters/w3/male_adult_construction_01/ManRoot/male_adule_construction_01” has the correct transform so I added this to the target_prims for all of my humans (called b1, w1, w2, w3).

In the tf-message, I get these _child_frame_ids:

male_adult_construction_01
World_Characters_w2_male_adult_construction_01_ManRoot_male_adult_construction_01
World_Characters_w1_male_adult_construction_01_ManRoot_male_adult_construction_01
World_Characters_b1_male_adult_construction_01_ManRoot_male_adult_construction_01

I think the publisher uses the last part of the prim_path as name and if it detects a collision, it uses the whole prim_path as name. That works, but I guess it would be better to also use the full prim_path of the first element so that all prims use the same format. If I now want to use the data, I can parse the identifier from 3 out of 4 transforms, but need to implement a special rule for the first human.

So how about adding an optional value in the target_prims, e.g. in the format of ‘prim_path;tf_frame’ so it’s possible to explicitly set the child_frame_id instead of relying on the auto-naming?

Hey @FooTheBar! Yes you are right, the child_frame_ids all have the same name “male_adult_construction_01” which causes the published child_frame_ids to use the full prim path to distinguish them.

One thing you can do is to use property “name override” to override the name for other characters. For example, override the character w2 to male_adult_construction_02, w1 to male_adult_construction_03, b1 to male_adult_construction_04. Then the published child_frame_ids would be male_adult_construction_01, male_adult_construction_02, male_adult_construction_03, male_adult_construction_04 without the prim path.

Here is what I tried. I have two “female_adult_business_02” characters in the scene and I added name override for one of them to “female_adult_business_03”. The published child_frame_ids would be “female_adult_business_02” and “female_adult_business_03” respectively.

I hope this will satisfy your needs.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.