Quadruped

About

The Quadruped is used to simulate 12 DOF quadrupeds such as the Unitree A1, the Unitree Go1 and the ANYmal C in Omniverse Isaac Sim, it also includes a basic 12 DOF quadruped controller for basic movements. Use this extension to create A1 or Go1 robot in the Stage and use the controller provided or subscribe to a external controller through ROS.

This extension is enabled by default. If it is ever disabled, it can be re-enabled from the Extension Manager by searching for omni.isaac.quadruped.

../_images/isaac_quadruped_1.gif

API Documentation

See the API Documentation for complete usage information.

Tutorials & Examples

The following tutorials and examples showcase how to best use this extension:

Keyboard Mappings (for all examples):

  • Forward: NUM 8 or Up Arrow

  • Backward: NUM 2 or Down Arrow

  • Right: NUM 6 or Right Arrow

  • Left: NUM 4 or Left Arrow

  • Turn Left: NUM 7 or N

  • Turn Right: NUM 9 or M

Simulator Example

To run the Example:

  1. Go to the top menu bar and click Isaac Examples > Quadruped

  2. Press the Load Scene button

  3. Press the Open Source Code button to view the source code. The source code illustrates how to create, add, and control the sensor using the Python API.

  4. Press the PLAY button to begin simulating

  5. Press the RESET button to reset the simulation to the initial state

../_images/isaac_quadruped_example_0.gif

Standalone Examples

Prerequisite

ROS noetic is required, and roscore must be running for ROS related standalones

a1_standalone.py

  • This standalone demonstrates an Unitree A1 robot trotting in a warehouse environment with the option to insert a list of waypoints and headings for the robot to follow using this command:

    ./python.sh standalone_examples/api/omni.isaac.quadruped/a1_standalone.py --waypoint standalone_examples/api/omni.isaac.quadruped/waypoints.json
    
  • The waypoint is specified in a json file format that contains “x”, “y” for global coordinates, and “rad” for the heading direction.

a1_direct_ros1_standalone.py

  • This standalone demonstrates an Unitree A1 robot in a warehousing setting which subscribing to an external torque controller for joint torque control while publishing imu, foot force, joint position, velocity, and body odometry information using this command:

    ./python.sh standalone_examples/api/omni.isaac.quadruped/a1_direct_ros1_standalone.py
    

a1_vision_ros1_standalone.py

  • This standalone demonstrates an Unitree A1 robot in a custom scene publishing stereo ROS camera and IMU data for visual image odometry in ROS 1. Users can connect the isaac sim topics to an external ROS vision inertial odometry package for doing odometry using this command:

    ./python.sh standalone_examples/api/omni.isaac.quadruped/a1_vision_ros1_standalone.py
    

    For the ros package set up information, please see: Visual Inertial Odometry with Quadruped

a1_vision_ros2_standalone.py

  • This standalone demonstrates an Unitree A1 robot in a custom scene publishing stereo ROS2 camera data for visual image odometry in ROS 2 using this command:

    ./python.sh standalone_examples/api/omni.isaac.quadruped/a1_vision_ros2_standalone.py
    

go1_ros1_standalone.py

  • This standalone demonstrates an Unitree Go1 robot on the ground plane publishing foot position and foot forces, which can be plotted using external ros packages.

    ./python.sh standalone_examples/api/omni.isaac.quadruped/go1_ros1_standalone.py
    
    ../_images/isaac_quadruped_2.gif

anymal_standalone.py

  • This standalone demonstrates an ANYmal C robot that is controlled by a neural network policy. The rough terrain policy was trained in IsaacGym and takes as input the state of the robot, the commanded base velocity, and the surrounding terrain and outputs joint position targets.

    ./python.sh standalone_examples/api/omni.isaac.quadruped/anymal_standalone.py