Skip to content

Commit 2aaca07

Browse files
Merge pull request #85 from andrewkaufman/releasePrep
Release prep
2 parents 38765c8 + 69178be commit 2aaca07

File tree

3 files changed

+28
-17
lines changed

3 files changed

+28
-17
lines changed

CHANGELOG.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# 0.1.0rc1
2+
3+
## Features
4+
5+
- Applied all current Newton USD Schemas (v0.1.0rc2) alongside UsdPhysics schemas
6+
- URDF joint mimics are now converted via `NewtonMimicAPI`
7+
18
# 0.1.0b1
29

310
## Features
@@ -109,7 +116,7 @@
109116
## USD Data Conversion
110117

111118
- **Joint Conversion**
112-
- Calibration, Dynamics, Safety Controller, and Mimic have no equivalent in `UsdPhysics`
119+
- Calibration, Dynamics, and Safety Controller have no equivalent in `UsdPhysics` nor `NewtonPhysics` schemas
113120
- These are all converted as custom attributes on the Joint prim
114121
- **Geometry Conversion**
115122
- No other file formats beyond OBJ/DAE/STL are supported

docs/concept_mapping.md

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,14 @@ To facilitate a shared understanding between subject matter experts of these com
2323

2424
| Version | Reference Documents |
2525
| :---- | :---- |
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) |
2727

2828
### General Assumptions and Constraints
2929

3030
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.
3131

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+
3234
### Definitions, Acronyms, Abbreviations
3335

3436
| Term or Abbreviation | Description |
@@ -53,6 +55,8 @@ This URDF to OpenUSD data mapping describes the one-way conversion from URDF to
5355
| 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. |
5456
| 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. |
5557
| 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. |
5660

5761
## Data and Serialization Concepts
5862

@@ -144,7 +148,7 @@ The following table describes concept mappings between URDF and USD. All URDF co
144148
| [link/collision](#linkcollision) | Various `UsdGeomGPrims`,<br>`UsdReference` (for meshes),<br>`UsdPhysicsCollisionAPI`,<br>`UsdPhysicsMeshCollisionAPI` | Defines collision geometry & physical properties of the link |
145149
| [geometry](#geometry) | Various `UsdGeomGPrims`,<br>`UsdReference` (for meshes) | Defines the geometry for visuals and collisions |
146150
| [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. |
148152
| [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). |
149153
| [gazebo](#gazebo) | N/A | URDF extensions specific to the Gazebo simulator. Not a generalizable URDF element. See [Custom Elements](#custom-elements). |
150154
| 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
645649
| [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 |
646650
| [axis](#element-axis) | `physics:axis` | The joint's axis of motion. |
647651
| [limit](#element-limit) | `physics:lowerLimit`,<br>`physics:upperLimit` | Physical limits of certain joints |
652+
| [mimic](#element-mimic) | `NewtonMimicAPI` | Mimicking the behavior of other joints |
648653
| [calibration](#element-calibration) | ***GAP*** | Calibration information for the joint |
649654
| [dynamics](#element-dynamics) | ***GAP*** | Friction and damping for the joint |
650655
| [safety\_controller](#element-safety_controller) | ***GAP*** | Safety control of the joint |
651-
| [mimic](#element-mimic) | ***GAP*** | Mimicking the behavior of other joints |
652656

653657
##### Element: parent
654658

@@ -708,6 +712,18 @@ In USD, these joints do have lower & upper limits, but do not have effort & velo
708712
| velocity | ***GAP*** | maximum velocity (rad/s or m/s) |
709713
| effort | ***GAP*** | maximum torque/force (Nm/N) |
710714

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 |
724+
| offset | `newton:mimicCoef0` | offset (default: 0.0) |
725+
| multiplier | `newton:mimicCoef1` | multiplier (default: 1.0) |
726+
711727
##### Element: calibration
712728

713729
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
743759
| k\_position | ***GAP*** | Position control gain for safety controller |
744760
| k\_velocity | ***GAP*** | Velocity control gain for safety controller |
745761

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.
751-
752-
| URDF | OpenUSD | Description |
753-
| :---- | :---- | :---- |
754-
| joint | ***GAP*** | name of the joint to mimic |
755-
| multiplier | ***GAP*** | multiplier (default: 1.0) |
756-
| offset | ***GAP*** | offset (default: 0.0) |
757-
758762
### transmission
759763

760764
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.

urdf_usd_converter/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# SPDX-FileCopyrightText: Copyright (c) 2025 The Newton Developers
22
# SPDX-License-Identifier: Apache-2.0
3-
__version__ = "0.1.0b1"
3+
__version__ = "0.1.0rc1"

0 commit comments

Comments
 (0)