You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/concept_mapping.md
+19-15Lines changed: 19 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,12 +23,14 @@ To facilitate a shared understanding between subject matter experts of these com
23
23
24
24
| Version | Reference Documents |
25
25
| :---- | :---- |
26
-
| 25.02|[OpenUSD API Docs](https://openusd.org/release/api/index.html), [USD Terms and Concepts](https://openusd.org/release/glossary.html), [Github](https://github.com/PixarAnimationStudios/OpenUSD/tree/v25.02a), [Principals of Scalable Asset Structure](https://docs.omniverse.nvidia.com/usd/latest/learn-openusd/independent/asset-structure-principles.html)|
26
+
| 25.05|[OpenUSD API Docs](https://openusd.org/release/api/index.html), [USD Terms and Concepts](https://openusd.org/release/glossary.html), [Github](https://github.com/PixarAnimationStudios/OpenUSD/tree/v25.05), [Principals of Scalable Asset Structure](https://docs.omniverse.nvidia.com/usd/latest/learn-openusd/independent/asset-structure-principles.html), [Newton USD Schemas](https://github.com/newton-physics/newton-usd-schemas)|
27
27
28
28
### General Assumptions and Constraints
29
29
30
30
This URDF to OpenUSD data mapping describes the one-way conversion from URDF to USD. The expectation is that the majority of consumers interested in URDF/USD interchange prefer to migrate URDF robots to USD and continue iterating within the USD Ecosystem, rather than roundtrip back to ROS.
31
31
32
+
Newton is an extensible physics engine focussed on robot learning and development, with native USD parsing support & its own USD schemas, extending OpenUSD's UsdPhysics specification for robotics use cases. Since URDF is a robotics format, we make use of Newton USD Schemas to improve fidelity of the resulting USD layers from this converter.
33
+
32
34
### Definitions, Acronyms, Abbreviations
33
35
34
36
| Term or Abbreviation | Description |
@@ -53,6 +55,8 @@ This URDF to OpenUSD data mapping describes the one-way conversion from URDF to
53
55
| Composition | USD process of resolving layered opinions about the content into a definitive representation called a “stage”. The composed stage is not optimized for any runtime, but rather for navigability of the data. |
54
56
| Asset | Data organization concept within content pipelines; a set of data that can be identified and located; e.g. each robot is an asset, each texture file is an asset. |
55
57
| Component | An atomic asset/model representing one high-level element (e.g. prop, actor) in a 3D scene. |
58
+
| Newton | An open-source, GPU-accelerated, and extensible physics engine to advance robot learning and development. |
59
+
| Newton USD schemas | Extensions to OpenUSD's UsdPhysics specification, allowing USD layers to configure the Newton runtime data model. |
56
60
57
61
## Data and Serialization Concepts
58
62
@@ -144,7 +148,7 @@ The following table describes concept mappings between URDF and USD. All URDF co
144
148
|[link/collision](#linkcollision)| Various `UsdGeomGPrims`,<br>`UsdReference` (for meshes),<br>`UsdPhysicsCollisionAPI`,<br>`UsdPhysicsMeshCollisionAPI`| Defines collision geometry & physical properties of the link |
145
149
|[geometry](#geometry)| Various `UsdGeomGPrims`,<br>`UsdReference` (for meshes) | Defines the geometry for visuals and collisions |
146
150
|[material](#material)|`UsdShadeMaterial`,<br>`UsdShadeShaders`,<br>***GAP*** (projection shaders) | Defines the rendered appearance of the link (not the physical properties) |
147
-
|[joint](#joint)| Various `UsdPhysicsJoints`,<br>`UsdGeomXformOps` (for the child link),<br>***GAP*** (calibration, friction, damping, soft limits, mimic) | A joint for connecting two links as well as 3D transformation for the child link. |
151
+
|[joint](#joint)| Various `UsdPhysicsJoints`,<br>`UsdGeomXformOps` (for the child link),<br>`NewtonMimicAPI`,<br>***GAP*** (calibration, friction, damping, soft limits) | A joint for connecting two links as well as 3D transformation for the child link. |
148
152
|[transmission](#transmission)| N/A<br>(could be `UsdPhysicsDriveAPI` if it was fully specified) | Defines the mechanical transmission mechanism between actuators and joints, but is not well specified in URDF and therefore cannot map to USD. See [Custom Elements](#custom-elements). |
149
153
|[gazebo](#gazebo)| N/A | URDF extensions specific to the Gazebo simulator. Not a generalizable URDF element. See [Custom Elements](#custom-elements). |
150
154
| sensor (deprecated) | N/A | Implemented in URDF Dom but unsupported & unmaintained. See [urdf/XML/sensor](https://wiki.ros.org/urdf/XML/sensor) for details. See [Custom Elements](#custom-elements). |
@@ -645,10 +649,10 @@ URDF joints have several child elements, some of which are required while others
645
649
|[origin](#element-origin-1)|`physics:localPos0`,<br>`physics:localPos1`,<br>`physics:localRot0`,<br>`physics:localRot1`,<br><br>Also affects XformOps of the child link | Position and orientation of the child link relative to the parent link |
646
650
|[axis](#element-axis)|`physics:axis`| The joint's axis of motion. |
647
651
|[limit](#element-limit)|`physics:lowerLimit`,<br>`physics:upperLimit`| Physical limits of certain joints |
652
+
|[mimic](#element-mimic)|`NewtonMimicAPI`| Mimicking the behavior of other joints |
648
653
|[calibration](#element-calibration)|***GAP***| Calibration information for the joint |
649
654
|[dynamics](#element-dynamics)|***GAP***| Friction and damping for the joint |
650
655
|[safety\_controller](#element-safety_controller)|***GAP***| Safety control of the joint |
651
-
|[mimic](#element-mimic)|***GAP***| Mimicking the behavior of other joints |
652
656
653
657
##### Element: parent
654
658
@@ -708,6 +712,18 @@ In USD, these joints do have lower & upper limits, but do not have effort & velo
708
712
| velocity |***GAP***| maximum velocity (rad/s or m/s) |
709
713
| effort |***GAP***| maximum torque/force (Nm/N) |
710
714
715
+
##### Element: mimic
716
+
717
+
The joint/mimic element indicates that this joint “mimics” the behavior of another joint. The value of this joint can be computed as `value = multiplier * other_joint_value + offset`.
718
+
719
+
In USD there is no equivalent concept. However, in Newton USD Schemas there is `NewtonMimicAPI` which exactly matches a URDF mimic, although the formula is written differently, with the offset listed first and `coef` used to generalize the terms: `value = coef0 + coef1 * other_joint_value`.
720
+
721
+
| URDF | OpenUSD | Description |
722
+
| :---- | :---- | :---- |
723
+
| joint |`newton:target`| name of the joint to mimic. In USD this is a UsdRelationship attribute |
The reference positions of the joint, used to calibrate the absolute position of the joint.
@@ -743,18 +759,6 @@ In USD, joints do not have soft limits. See [Appendix C](#appendix-c-filling-con
743
759
| k\_position |***GAP***| Position control gain for safety controller |
744
760
| k\_velocity |***GAP***| Velocity control gain for safety controller |
745
761
746
-
##### Element: mimic
747
-
748
-
The joint/mimic element indicates that this joint “mimics” the behavior of another joint. The value of this joint can be computed as `value = multiplier * other_joint_value + offset`.
749
-
750
-
In USD there is no equivalent concept. See [Appendix C](#appendix-c-filling-concept-gaps) for possible solutions.
The transmission element is used to describe the mechanical relationship between one or more actuators (e.g motors, servos) and a single joint. This element is very rarely used in practice and largely undocumented.
0 commit comments