Wandelbots Docs

Type to search the documentation

Press ESC to close⌘K to open

Add external axis

Learn how to use an external axis in your NOVA simulation

Add external axis

Create and configure an external axis for your robot by building a static base and moving carriage, applying necessary APIs and joints, and mounting your robot on top.

Configure the external axis position using one of two methods:

  1. ActionGraph-based, with position control via signal exchange with On BUS IO Change OGN or
  2. ArticulationRootAPI-based, with position control via dedicated virtual controller.

Final result:

Model the external axis in Isaac Sim

Build the external axis structure with a static base and moving carriage as shown in the stage tree below.

  1. In the World prim, create the Xform cell with the child external axis.
  2. Create the children Xforms base and carriage.
  3. Create one Cube mesh for each child Xform. Scale and position as you like.
  4. Add Rigid Body with Colliders Preset to base and carriage.
  5. Create a PrismaticJoint that connects base and carriage.
  6. Create a FixedJoint called root_joint with the Xform base as Body 0.
  7. Import a robot into the scene and place it onto the carriage.
  8. Start the simulation and test your setup at runtime.
stage tree for axis

Controlling the external axis

There are two approaches to control the external axis from NOVA. One is a more Isaac Sim native approach based on robot or bus signals on NOVA side and an Action Graph on Isaac Sim side. The other is more sophisticated, based on specific APIs and allows for a NOVA native control via virtual controllers.

This approach aligns more closely with native Isaac Sim workflows but provides less convenience. The position of the external axis is set via a dedicated signal created in NOVA. The following configurations must be made in NOVA and Isaac Sim.

NOVA

  1. Create NOVA instance.
  2. Create robot virtual controller.
  3. Add a Bus signal with the following values:
    • IO ID: string, e.g., Some ID
    • Data type: REAL
    • Address: 800
    • Description: optional
profinet signal in NOVA

Isaac Sim

  1. Create the Action Graph as depicted on the right.
  2. The highlighted node controls the property drive:linear:physics:targetPosition of the external axis’ PrismaticJoint`.
  3. The other Write Prim Attribute node sets the robot’s property xformOp:translate to equal the carriage prim’s attribute of the external axis offset by 0.55m, because there is an offset in z direction with the Yaskawa_AR3120 base link.
  4. Configure the On Bus IO Change node to listen to the Bus signal, e.g., Some ID, you created earlier in NOVA.
action graph

Applying the ArticulationRootAPI to the external axis

This approach is more sophisticated, but offers more convenience, because both the external axis and the robot can be controlled via two dedicated virtual controllers in NOVA.

  1. Add ArticulationRootAPI to the external axis’ Xform using AddPhysicsArticulation Root.
  2. Apply the IsaacRobotAPI to the external axis’ Xform using AddEdit API Schema.
  3. In the same window, apply IsaacLinkAPI to the base and carriage Xforms and IsaacJointAPI to the PrismaticJoint.
  4. In the external axis Xform’s Property window, assign the PrismaticJoint to the isaac:physics:robotJoints property and base and carriage to the isaac:physics:robotLinks property.
  5. In the robot’s Property window, specify carriage as Body 0.
  6. Add the Linear Drive API to your PrismaticJoint and set the damping and stiffness as displayed.
  7. Connect your robot and the external axis articulation to your NOVA virtual controllers.
isaac robot api
api schema
root joint
linear drive api