Quick Start for ManyMove Repo on Nvidia Isaac ROS
Hi, I’m Marco from Italy, and I’m building a repo that handles planning/execution, collision objects, signals, HMI, and logic with behavior trees.
I’m building it for myself to use: I’m a roboticist and an end user, I usually program in RAPID or KRL. I needed to deploy some new applications with another brand of robots that supports ROS natively, so instead of learnin yet another language I decided to go with ROS. and I’m quite new to ROS. Transitioning from industrial robotics languages to ROS has proven quite a challenge, and I structured the repository I wrote to resemble some of the concepts I’m used to in industrial automation. I tried to take a step further and use behaviortrees to implement the control logic, as it can make handling complex programs a bit easier.
I’m sharing this because I would love to receive some feedback, either on the ManyMove package itself or on how to better reshape it to fully leverage the Isaac Manipulator workflow. As I said, I’m building it for myself as an end user, and if I can make it usable for everyone it would be consequently more usable for myself too!
Here’s the link:
https://github.com/pastoriomarco/manymove
My end goal is to deploy a bin picking solution with NVIDIA Jetson Orin. For now, I’m almost operational on a pick-and-place solution that uses all standard ROS packages for ROS2 Humble, like MoveIt, OMPL, and so on. I’ll thoroughly test the Isaac Manipulator workflow and packages, but I really need to deploy a couple of robots in production first.
WARNING: it’s still highly experimental. If you try it, be aware that stability and safety are not guaranteed: use at your own risk! Read all the instructions and disclaimers before trying it.
I already created a draft launcher and application with isaac_ros_cumotion
and Ufactory Lite6 cobot.
For now it only works on ROS2 Humble. Don’t try the Jazzy version yet, it won’t work.
Here’s a little step-by-step to try it out:
Step 1: Developer Environment Setup
First, set up the compute and developer environment by following Nvidia’s instructions:
Step 2: Follow isaac_ros_cumotion_moveit
Tutorial
Complete the isaac_ros_cumotion_moveit
tutorial, preferably using the “build from source” tab (it’s the only one I tested):
https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_cumotion/isaac_ros_cumotion_moveit/index.html
Verify that the example with the Franka robot works before proceeding!
ATTENTION: Step 3 needs to be run from inside the Docker container, so AFTER you run these lines from the above link for isaac_ros_cumotion_moveit tutorial:
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh
Also, inside the container you must have already built isaac_ros_cumotion_examples:
sudo apt-get update
rosdep update && rosdep install --from-paths ${ISAAC_ROS_WS}/src/isaac_ros_cumotion --ignore-src -y
cd ${ISAAC_ROS_WS} && \
colcon build --packages-up-to isaac_ros_cumotion_examples
source install/setup.bash
Step 3: Install xarm_ros2
and ManyMove
Packages
Now you should be inside the first terminal with isaac_ros_cumotion_examples built and sourced.
To install xarm_ros2 and manymove you may follow the instructions from each package.
The example behaviortree logic is based on BehaviorTree.CPP v3.8, so you can install the old version of Groot to visualized. You can install it outside the container, as inside it would not compile as is.
To save you some time, here are the direct commands to install and build both packages, copy the required files on the correct folders and start cuMotion to receive commands:
cd ${ISAAC_ROS_WS}/src
git clone https://github.com/pastoriomarco/xarm_ros2.git --recursive -b $ROS_DISTRO
git clone --branch=humble https://github.com/pastoriomarco/manymove.git
cd ${ISAAC_ROS_WS}/src/xarm_ros2
git pull
git submodule sync
git submodule update --init --remote
cd ${ISAAC_ROS_WS}/src
rosdep update
rosdep install --from-paths . --ignore-src --rosdistro $ROS_DISTRO -y
mkdir -p ${ISAAC_ROS_WS}/src/xarm_ros2/xarm_description/meshes/other
cp ${ISAAC_ROS_WS}/src/manymove/manymove_object_manager/meshes/custom_end_tools/* ${ISAAC_ROS_WS}/src/xarm_ros2/xarm_description/meshes/other/
cp ${ISAAC_ROS_WS}/src/manymove/manymove_planner/config/xarm_user_params.yaml ${ISAAC_ROS_WS}/src/xarm_ros2/xarm_api/config/
cp ${ISAAC_ROS_WS}/src/manymove/manymove_planner/config/cuMotion/lite6_gr.xrdf ${ISAAC_ROS_WS}/src/xarm_ros2/xarm_description/urdf/lite6/lite6_gr.xrdf
cp ${ISAAC_ROS_WS}/src/manymove/manymove_planner/config/cuMotion/lite6.urdf ${ISAAC_ROS_WS}/src/xarm_ros2/xarm_description/urdf/lite6/lite6.urdf
cp ${ISAAC_ROS_WS}/src/isaac_ros_cumotion/isaac_ros_cumotion_moveit/config/isaac_ros_cumotion_planning.yaml ${ISAAC_ROS_WS}/src/xarm_ros2/xarm_moveit_config/config/moveit_configs
cd ${ISAAC_ROS_WS}
colcon build --packages-skip realsense_gazebo_plugin
colcon build --packages-skip realsense_gazebo_plugin xarm_gazebo
source install/setup.bash
ros2 run isaac_ros_cumotion cumotion_planner_node --ros-args \
-p robot:=${ISAAC_ROS_WS}/src/xarm_ros2/xarm_description/urdf/lite6/lite6_gr.xrdf \
-p urdf_path:=${ISAAC_ROS_WS}/src/xarm_ros2/xarm_description/urdf/lite6/lite6.urdf
Yes, I know, there are 2 consecutive “colcon build”, it’s a workaround for the xarm_gazebo that is not compiling on the Isaac ROS container. I’m sure it’s solvable, but if I use Isaac ROS I would rather aim at using Isaac SIM instead of Gazebo, so I’m not investing time in it for now.
After cuMotion warms up, you can launch ManyMove example with lite6 robot.
In a new terminal, start the container first:
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh
Then, from inside the container:
cd ${ISAAC_ROS_WS}
source install/setup.bash
ros2 launch manymove_planner lite_cumotion_movegroup_fake_cpp_trees.launch.py
That should do it. Now you can press start on the HMI to run the cycle.
I’m quite tight on time and I couldn’t build a decent documentation yet, let me know if you need some info to test it out!
I’ll try to add some detail about the various files to modify to adapt it to different applications in the ROS Discourse Topic.