Conversation
Review: USD Best Practices AlignmentOverall, this is a solid contribution that fills an important gap in the spec. The hierarchical concatenation model, TF scoping rule, and multi-robot deployment guidance are well thought out and consistent with USD composition semantics. The suggestions below are refinements, not blockers. Suggestions
Review performed against the NVIDIA Asset Structure Principles and the existing composition rules in Sections 1.2.1–1.2.6 of this REP. |
jhanca-robotecai
left a comment
There was a problem hiding this comment.
Good spot with the incorrect section number and great addition of the sample code.
The comment about the absolute namespaces can be ignored or addressed in a follow-up PR.
|
|
||
| Simulators must concatenate all `ros:context:namespace` values found on an interface prim's ancestor chain (in top-down order, from the stage root to the interface prim itself) to form the fully-resolved namespace for that interface: | ||
| * Each non-empty `ros:context:namespace` segment contributes one path component. Simulators must insert a `/` separator between segments and normalize the result (e.g., segments `"robot_1"` and `"left_camera"` produce the namespace `/robot_1/left_camera`). | ||
| * Each non-empty `ros:context:namespace` segment contributes one path component and must be authored as a bare name with no leading or trailing `/`. Simulators must insert a `/` separator between segments and normalize the result (e.g., segments `"robot_1"` and `"left_camera"` produce the namespace `/robot_1/left_camera`). |
There was a problem hiding this comment.
The comment on no leading / characters prevents from using absolute namespaces. Personally, I don't necessarily see the need for such namespaces in OpenUSD. On the other hand, such limitation makes this standard less close to what ROS 2 offers.
Similarly, we might want to consider allowing tilde characters ~ and substitutions {}.
There was a problem hiding this comment.
I am okay with clarifying that if a leading forward slash is present then we use a absolute namespace.
And perhaps use a different character to indicate this is a compoasable namespace vs absolute.
If there are multiple absolute namespaces in the prim hierarchy, do we resolve to the closest absolute namespace as we traverse from the primary ros pub/sub prim upwards the stage tree?
In Isaac Sim, private namespaces isnt as useful since it is essentially a single ros node that runs the multiple publishers and subscribers.
But if there is a way to include private namespace functionality in this standard I am open to discussions!
Co-authored-by: Jan Hanca <jan.hanca@robotec.ai>
No description provided.