Isaac Manipulator on Jetson Thor: isaac_ros_cumotion_moveit fails to launch while other Isaac ROS packages work correctly

I am trying to run Isaac Manipulator on the Jetson Thor platform.

Currently, the following Isaac ROS packages all build successfully and can be verified using rosbag playback:

  • isaac_ros_cumotion
  • isaac_ros_rtdetr
  • isaac_ros_foundationpose
  • isaac_ros_ess

However, isaac_ros_cumotion_moveit cannot be launched successfully on Jetson Thor.

I am attaching the following information for reference:

  1. Complete command log
  • All commands used after OS installation to set up the environment
  • Downloading and building all the above Isaac ROS packages
  1. Binary-based execution
  • Video showing the runtime behavior when using binary packages
  • Terminal log when launching MoveIt
  • Terminal log when launching cuMotion
  1. Source-based execution
  • Video showing the runtime behavior when using source builds
  • Terminal log when launching MoveIt
  • Terminal log when launching cuMotion

Hello @shentunghuang1,

Thanks for posting in the Isaac ROS forum!
From the log you provided, it mentioned the robot xacro being loaded by franka.launch.py is being passed a parameter named mock_sensor_commands, but that parameter is not declared in the xacro file (or is misspelled/removed).
In that xacro:

  • Either declare the argument at the top, for example:

    <xacro:arg name="mock_sensor_commands" default="false"/>
    
  • Or remove/rename any use of mock_sensor_commands to match the current xacro arguments actually defined in that file.

As for launching cumotion package, the error ModuleNotFoundError: No module named 'isaac_manipulator_ros_python_utils' shows that isaac_manipulator_ros_python_utils package is not installed or not on PYTHONPATH in this environment. Python raisedModuleNotFoundError and the node dies.
You could use below command to install the debian package and source it before launching it.
sudo apt-get update
sudo apt-get install -y ros-jazzy-isaac-manipulator-ros-python-utils

1 Like

Hello VC, thank you again for your continued support.
Inside the container, I have executed the following commands:

sudo apt-get update
rosdep update && rosdep install --from-paths ${ISAAC_ROS_WS}/src/isaac_ros_cumotion --ignore-src -y
sudo apt-get install -y ros-jazzy-isaac-manipulator-ros-python-utils

However, I am still encountering the same issue.

What makes this more troublesome is that I cannot find the Franka robot .xacro file. I am unable to locate it either inside the container or on the host machine.

Please refer to the attached image. I hope the commands I used to search for the file are correct.

Additionally, I would like to mention that on an x86 machine (this topic), I also cannot find the Franka robot .xacro file. However, MoveIt is still able to launch successfully.

This makes me wonder whether the Franka robot is actually not using a .xacro file, or if my understanding is incorrect.

Actually, the franka.launch.py works by patching an upstream demo.launch.py provided by the moveit2_tutorials package.
And we noticed that in ROS 2 Jazzy (main branch of moveit2_tutorials), that tutorial has been updated to use a Kinova Gen3 robot rather than Franka, so the current launch file for the Franka quickstart may not work ask as demo.launch.py is no longer present.
We are working on fixing this issue and will keep you updated with any new developments.

1 Like

Hello VC I also tried loading the UR robot. Below is the sequence of commands I executed:

user@user:~$ isaac-ros activate
/mnt/nova_ssd/workspaces/isaac_ros-dev
Attaching to running container: isaac_ros_dev_container
Docker workspace: /workspaces/isaac_ros-dev

admin@user:/workspaces/isaac_ros-dev$ sudo apt-get update

admin@user:/workspaces/isaac_ros-dev$ rosdep update && rosdep install --from-paths ${ISAAC_ROS_WS}/src/isaac_ros_cumotion --ignore-src -y
.
.
.
#All required rosdeps installed successfully

admin@user:/workspaces/isaac_ros-dev$ source install/setup.bash

admin@user:/workspaces/isaac_ros-dev/isaac_ros_assets$ ls
isaac_ros_ess  isaac_ros_foundationpose  isaac_ros_rtdetr  models  r2b_2024

admin@user:/workspaces/isaac_ros-dev$ mkdir -p ${ISAAC_ROS_WS}/isaac_ros_assets/urdf && \
    xacro -o ${ISAAC_ROS_WS}/isaac_ros_assets/urdf/ur10e.urdf /opt/ros/jazzy/share/ur_description/urdf/ur.urdf.xacro ur_type:=ur10e name:=ur10e

admin@nexcobot:/workspaces/isaac_ros-dev/isaac_ros_assets/urdf$ ls
ur10e.urdf

admin@user:/workspaces/isaac_ros-dev$ ros2 launch isaac_ros_cumotion_examples ur.launch.py ur_type:=ur10e
[INFO] [launch]: All log files can be found below /home/admin/.ros/log/2026-01-08-14-42-35-122327-user-18611
[INFO] [launch]: Default logging verbosity is set to INFO
WARNING:root:Cannot infer URDF from `/opt/ros/jazzy/share/ur_moveit_config`. -- using config/ur.urdf
WARNING:root:Cannot infer SRDF from `/opt/ros/jazzy/share/ur_moveit_config`. -- using config/ur.srdf
WARNING:root:"File /opt/ros/jazzy/share/ur_moveit_config/config/ur.urdf doesn't exist"
WARNING:root:The robot description will be loaded from /robot_description topic 
[ERROR] [launch]: Caught exception in launch (see debug for traceback): "package 'ur_robot_driver' not found, searching: ['/workspaces/isaac_ros-dev/install/isaac_ros_foundationpose', '/workspaces/isaac_ros-dev/install/isaac_ros_rtdetr', '/workspaces/isaac_ros-dev/install/isaac_ros_ess', '/workspaces/isaac_ros-dev/install/isaac_ros_cumotion_examples', '/workspaces/isaac_ros-dev/install/isaac_ros_cumotion_moveit', '/workspaces/isaac_ros-dev/install/isaac_ros_cumotion', '/workspaces/isaac_ros-dev/install/isaac_ros_cumotion_robot_description', '/workspaces/isaac_ros-dev/install/isaac_ros_cumotion_python_utils', '/workspaces/isaac_ros-dev/install/isaac_ros_cumotion_interfaces', '/workspaces/isaac_ros-dev/install/curobo_core', '/opt/ros/jazzy']"

I also tried modifying a Python launch script to avoid starting ur_robot_driver, but I am curious about the following:

  1. Both my modified launch script and the provided example fail to find ur.urdf and ur.srdf.
  2. Based on my understanding of the command, why does it not try to load ur10e.urdf and ur10e.srdf instead?

Below, I’ve attached the my modified Python launch script

Sorry for the trouble. I would like to ask if there is any cuMotion MoveIt example for a specific robot that you have personally tested and confirmed to work.

If there is an example that I can successfully run on my side as well, I would like to use that working example as a baseline and modify it for my use case.

Take a look here:

I could run the examples of Isaac Manipulation for Isaac Sim which involve UR and cuMotion with MoveIt.
You can find the fixes I used in in this repo, let me know if it’s of some help.

1 Like

Hello marco.pastorio, thank you for your suggestions. I tried your approach: first doing a git clone inside the src folder, and then running apply-isaac-manipulation-fixes.sh. From the logs, it seems the process completed successfully, so I hope my workflow was not incorrect.

Unfortunately, regardless of whether it is on the x86 or the Thor platform, the example programs for both the UR and Franka robots still cannot run. Below are the results of running the two robots on both platforms.

x86 platform:

Thor platform:

Hi @shentunghuang1 ,
I still have to try the examples for Franka in this Isaac ROS version, but I noticed this on your log:

[ERROR] [ros2_control_node-5]: process has died [pid 3906, exit code -11, cmd '/opt/ros/jazzy/lib/controller_manager/ros2_control_node --ros-args --params-file /opt/ros/jazzy/share/kinova_gen3_7dof_robotiq_2f_85_moveit_config/config/ros2_controllers.yaml -r /controller_manager/robot_description:=/robot_description'].

It seems to be trying to load the controller for Kinova robots instead of Franka, maybe some error in the launcher stack?

For UR robots it gives:

[ERROR] [launch]: Caught exception in launch (see debug for traceback): "package 'ur_robot_driver' not found

You either miss the dependency or there could be some mixup. I could successfully launch the example using both ur_robot_driver and ur_description but you’d need to modify the ur_sim_macro.xacro file for the latter.

I just reinstalled it all in Thor with Jetpack 7.1 and, a part from some issues with DNS from inside the isaac-ros container, it still worked fine.

The way I install it is by leveraging some bootstrap scripts I made to simplify setting up all the required env variables before building the image so I can have all dependencies installed in the container and all Isaac ROS packages built from source.



You find the instructions HERE, but to simplify:

  • Install all prerequisites

  • Clone the isaac_ros_custom_bringup repo in $ISAAC_ROS_WS/src folder

cd ${ISAAC_ROS_WS}/src
git clone https://github.com/pastoriomarco/isaac_ros_custom_bringup
  • Setup the config files for isaac-ros CLI to build from source al isaac ROS packages:
bash ${ISAAC_ROS_WS}/src/isaac_ros_custom_bringup/isaac_ros_4/scripts/bootstrap_isaac_ros_cli_files.sh --source
  • Build isaac-ros container from local dockerfile and configs:
isaac-ros activate --build-local

Once inside you can apply the fixes with:

bash ${ISAAC_ROS_WS}/src/isaac_ros_custom_bringup/isaac_ros_4/scripts/apply-isaac-manipulation-fixes.sh

Then you can follow official instructions to launch the packages/examples. If you have Isaac Sim I suggest you to start from Pick and Place — Isaac ROS, as this page also has the instructions to set up the config files that are used in other examples too.

Also, you’ll have to set these env variables each time you restart the container, even if the config files are there already:

# Point to the directory containing your configuration files
export ISAAC_MANIPULATOR_WORKFLOW_CONFIG_DIR="${ISAAC_ROS_WS}/isaac_manipulator_config"
export ISAAC_MANIPULATOR_PICK_AND_PLACE_CONFIG_DIR="${ISAAC_ROS_WS}/isaac_manipulator_config"

To make that example work you’ll have to start the Isaac Sim scene as instructed in the example page. Last time I checked, there’s a problem loading the gripper: if it’s not fixed yet, you can find a workaround here.



PLEASE NOTE: About building all packages from source, consider that isaac_ros_custom_bringup’s bootstrap script includes FoundationStereo by default. If you have less than 12/16GB VRAM the build may fail. I just rebuilt it all and isaac_ros_foundationstereo_models_install package used up to almost 10GB VRAM during build.

If it does fail, once inside the container you can install FoundationStereo packages from apt-get and use colcon build --packages-up-to with the missing packages, but you’ll have to install these packages each time you start the container unless you modify the dockerfiles.

The whole process is customizable both from the scripts I made and from isaac-ros-cli config files, so this coul be automated too. I made it to have everything I need ready and I didn’t take much time to cover various edge cases. Since you have Thor too you may check if it works in that platform first.

It’s not perfect and it can surely be made lighter/better, but I just needed something that allows me to spend my time testing Isaac ROS packages and not setting up the container. I’ll refine if/when needed!



PS: if you use all default DDS settings (like me), please remember to disable the WiFi at least on one of the machines involved in the interaction between Isaac Sim and Isaac ROS, otherwise they’ll broadcast to all networks and jam the execution. Sometimes it still works, but most of the times there’s partial or no communication and nodes crash, at least on my setup.

1 Like

Hello marco.pastorio

My colleague and I tried again, but it still didn’t work. However, my colleague found a workaround.

In franka.launch.py, change:

franka_demo_launch_file = path.join(
    get_package_share_directory('moveit2_tutorials'),
    'launch',
    'demo.launch.py'
)

to:

franka_demo_launch_file = path.join(
    get_package_share_directory('moveit_resources_panda_moveit_config'),
    'launch',
    'demo.launch.py'
)

Then change:

lf = lf.replace(
    'run_move_group_node =',
    'augment_moveit_config(moveit_config)\n    run_move_group_node ='
)

to:

lf = lf.replace(
    'move_group_node =',
    'augment_moveit_config(moveit_config)\n    move_group_node ='
)

After rebuilding, it worked.

Thank you very much for your help. However, due to the urgency of the task, I have given up further investigation of this issue and reinstalled Ubuntu 22.04 along with Isaac ROS 2.3. Everything is working smoothly now.

2 Likes

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.