isaac_ros_cumotion_moveit

Source code on GitHub.

Quickstart

Set Up Development Environment

  1. Set up your development environment by following the instructions in Getting Started.

  2. Clone isaac_ros_common under ${ISAAC_ROS_WS}/src.

    cd ${ISAAC_ROS_WS}/src && \
       git clone -b release-3.2 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_common.git isaac_ros_common
    

Install isaac_ros_cumotion_moveit and Examples

  1. Launch the Docker container using the run_dev.sh script:

    cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
       ./scripts/run_dev.sh
    
  2. Install the prebuilt Debian package:

    sudo apt-get update
    
    sudo apt-get install -y ros-humble-isaac-ros-cumotion-examples
    

Set Up MoveIt 2 with cuMotion

Complete the following steps for your selected robot.

  1. Optional: If running on a physical UR robot, launch the robot driver in a separate terminal. Substitute the robot’s IP address for <ROBOT_IP_ADDRESS>, and replace ur10e with the correct robot model (both here and in the steps below) if using a UR robot other than UR10e.

    ros2 launch ur_robot_driver ur_control.launch.py ur_type:=ur10e robot_ip:=<ROBOT_IP_ADDRESS> launch_rviz:=false
    
  2. Generate a URDF for the UR10e from the corresponding xacro:

    mkdir -p ${ISAAC_ROS_WS}/isaac_ros_assets/urdf && \
        xacro -o ${ISAAC_ROS_WS}/isaac_ros_assets/urdf/ur10e.urdf /opt/ros/humble/share/ur_description/urdf/ur.urdf.xacro ur_type:=ur10e name:=ur10e
    
  3. Launch MoveIt (including RViz).

    ros2 launch isaac_ros_cumotion_examples ur.launch.py ur_type:=ur10e
    
  4. In a separate terminal, run the cuMotion planner node. Remember to first source install/setup.bash if package was built from source.

    ros2 run isaac_ros_cumotion cumotion_planner_node --ros-args \
       -p robot:=$(ros2 pkg prefix --share isaac_ros_cumotion_robot_description)/xrdf/ur10e.xrdf \
       -p urdf_path:=${ISAAC_ROS_WS}/isaac_ros_assets/urdf/ur10e.urdf
    

Using the cuMotion Planner in MoveIt

Enable cuMotion by ensuring that isaac_ros_cumotion and cuMotion are selected within the “Planning Library” pane within the “Context” tab in the bottom left corner of the RViz window.

https://media.githubusercontent.com/media/NVIDIA-ISAAC-ROS/.github/main/resources/isaac_ros_docs/repositories_and_packages/isaac_ros_cumotion/isaac_ros_cumotion_moveit/moveit_context.png/

Then select a target pose for the robot end effector, and click the “Plan” button in the “Planning” tab. For a demonstration of collision-aware planning, first add one or more obstacles in the “Scene Objects” tab.

Note

The “Execute” and “Plan & Execute” buttons in RViz will only work if a physical robot is connected or if the robot is emulated in the corresponding robot driver or via an external simulator. The MoveIt configuration for Franka includes such emulation via a “fake hardware” interface, but the same is not true for UR, which would require an external simulator such as URSim.

https://media.githubusercontent.com/media/NVIDIA-ISAAC-ROS/.github/main/resources/isaac_ros_docs/repositories_and_packages/isaac_ros_cumotion/isaac_ros_cumotion_moveit/moveit_planning.gif/

Warning

In normal operation, only a single MoveIt move_group node should be running at a time. If the node fails to exit cleanly, however, it may result in two nodes running when the graph is next launched. RViz then connects to both instances, which results in both requesting a plan from the cuMotion planner node via a MoveGroup action at nearly the same time. The second to arrive preempts the first without waiting for in-flight CUDA operations to complete, possibly resulting in “CUDA invalid” errors.

If such errors are observed, please ensure that only a single move_group node is running. The cuMotion planner node will be made more robust in a future release.

Try More Examples

To continue your exploration, check out the following suggested examples:

Troubleshooting

Isaac ROS Troubleshooting

For solutions to problems with Isaac ROS, see troubleshooting.