I am a student learning about computer vision and pose estimation.
I have installed FoundationPose on a Jetson Orin NX 16GB with an Intel realsense D435i depth camera
I have completed the tutorials for RT-DETR and FoundationPose
I am trying to run FoundationPose on a new object, and I have added the mesh .obj file (pinkcat in question in the following command) and the texture file to the folders, and I am trying to run this command: ros2 launch isaac_ros_foundationpose isaac_ros_foundationpose.launch.py refine_engine_file_path:=${ISAAC_ROS_WS}/isaac_ros_assets/models/foundationpose/refine_trt_engine.plan score_engine_file_path:=${ISAAC_ROS_WS}/isaac_ros_assets/models/foundationpose/refine_trt_engine.plan mesh_file_path:=${ISAAC_ROS_WS}/mesh/pinkcat_scaled.obj texture_path:=${ISAAC_ROS_WS}/mesh/Texture_pinkcat.png launch_rviz:=true launch_bbox_to_mask:=true mask_height:=480mask_width:=640
Welcome to the Isaac ROS forum and thanks for your post!
One thing to note is that the command you entered to launch FoundationPose should have two separate arguments (you missed a space): mask_height:=480 mask_width:=640
Also, score_engine_file_path should point to the score engine, not the refine engine, e.g.:
As for running the isaac_ros_rtdetr example, have you tried running with the rosbag to see if it works? ros2 bag play -l ${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_rtdetr/quickstart.bag
rosbag seems to work fine, so I suspect the issue is somehow in my image stream from realsense camera to the rtdetr example. I’m not very sure where to begin debugging at the rtdeter side, unfortunately…
I found an error in the log when I attempted to rerun the realsense example:
[component_container_mt-1] [ERROR] [1771996054.503912747] [isaac_ros_examples.container]: Could not find requested resource in ament index
[ERROR] [launch_ros.actions.load_composable_nodes]: Failed to load node ‘realsense2_camera’ of type ‘realsense2_camera::RealSenseNodeFactory’ in container ‘/isaac_ros_examples/container’: Could not find requested resource in ament index
Edit:
I read some github issues from realsense-ros and one of the suggestions was to reverse the usb-c cable orientation and try again, this did not work
some other commands I have tried:
$ros2 launch realsense2_camera rs_camera.launch
Package ‘realsense2_camera’ not found: “package ‘realsense2_camera’ not found, searching: [‘/opt/ros/humble’]”
Package ‘realsense2_camera’ not found: “package ‘realsense2_camera’ not found, searching: [‘/opt/ros/humble’]”
$lsusb
Bus 002 Device 005: ID 8086:0b3a Intel Corp. Intel(R) RealSense™ Depth Camera 435i
Bus 002 Device 002: ID 0bda:0489 Realtek Semiconductor Corp. 4-Port USB 3.0 Hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 0bda:c822 Realtek Semiconductor Corp. Bluetooth Radio
$realsense-viewer (inside the Docker container)
launches realsense viewer and color / stereo both work
Upon further investigation, it seems the realsense2 package is not installed on my docker container, even though I went through the entire NVIDIA realsense ros setup tutorial on Isaac ROS RealSense Setup — isaac_ros_docs documentation
$ros2 pkg list | grep realsense returns empty
& $dpkg -l | grep realsense also returns empty
in the Docker container.
I can confirm that this step in the realsense install tutorial: cd ${ISAAC_ROS_WS}/src/isaac_ros_common/scripts && touch .isaac_ros_common-config && echo CONFIG_IMAGE_KEY=ros2_humble.realsense > .isaac_ros_common-config
was properly followed and so was this step: cd ${ISAAC_ROS_WS} && colcon build --symlink-install --packages-up-to-regex realsense*
I do not understand why the realsense package just doesnt seem to work. any guidance or resources on how to troubleshoot this would be immensely appreciated…
I have tried source install/setup.bash after colcon step for realsense, and my rtdetr and foundationpose tutorials work! (this source step was not mentioned in the realsense setup tutorial)
I have also fixed the initial command: ros2 launch isaac_ros_foundationpose isaac_ros_foundationpose.launch.py refine_engine_file_path:=${ISAAC_ROS_WS}/isaac_ros_assets/models/foundationpose/refine_trt_engine.plan score_engine_file_path:=${ISAAC_ROS_WS}/isaac_ros_assets/models/foundationpose/score_trt_engine.plan mesh_file_path:=${ISAAC_ROS_WS}/mesh/pinkcat_scaled.obj texture_path:=${ISAAC_ROS_WS}/mesh/Texture_pinkcat.png launch_rviz:=true launch_bbox_to_mask:=true mask_height:=480 mask_width:=640
based on your pointers from earlier
unfortunately the camera still seems to not show up on rviz
my expectation is that some image would pop up and prompt me to click the bounding box due to launch_bbox_to_mask:=true but I do not observe that happening either. is there an issue with my ros2 command? or perhaps some steps I am missing to enable foundationpose for a custom object
here is the log file when I run the command mentioned above:
Your RViz screenshot shows Global Status: “Fixed Frame has no tf data”, which means the frame selected in Global Options → Fixed Frame is not present in /tf or /tf_static.
You need to either choose a frame that already exists in TF, or publish one yourself.
If you just want to test the feature and don’t have a suitable TF yet, you can simulate one in a separate terminal with:
ros2 run tf2_ros static_transform_publisher \
0 0 0 0 0 0 1 \
world camera_1_link
This will continuously publish a TF from world → camera_1_link.
Replace camera_1_link with whatever frame your camera driver is actually using (you can see it in /tf).
After that, in RViz, set Fixed Frame = world so RViz can use that frame without errors.
Much appreciated for pointing out the fixed frame issue.
I have also noticed that I have made the foolish assumption that foundationpose / Rviz would launch the realsense camera (or at least run the driver) but that was not the case.
After launching the realsense driver in another terminal using
However, I am aware there is a mask that has to be fed into foundationpose to enable the pose estimation. my understanding is that launch_bbox_to_mask:=true parameter launches some bounding box to mask converter, but it still seems like the Node is idle once Rviz is launched.
the pose estimation still doesnt seem to be working for me, so it seems I will be focusing on debugging the mask issue now
It would be easier for us to assist if you could share the exact command you used to launch FoundationPose, and the full console log from that run.
Note that launch_bbox_to_mask:=true only starts the Detection2D → mask node, which converts existing 2D detections into a mono8 mask. It does not start a 2D detector by itself.
If you only ran the command you posted earlierros2 launch isaac_ros_foundationpose isaac_ros_foundationpose.launch.py ... launch_bbox_to_mask:=true ... you would still be missing a 2D detector (for example SyntheticaDETR).
In our reference example, this is provided via: rt_detr_engine_file_path:=${ISAAC_ROS_WS}/isaac_ros_assets/models/synthetica_detr/sdetr_grasp.plan which brings up the RT-DETR detector that publishes the bounding boxes needed for the bbox→mask node and FoundationPose to work.
simulate TF ros2 run tf2_ros static_transform_publisher 0 0 0 0 0 0 1 world camera_link
run foundationpose (I have adjusted the command with the DETR portion you mentioned above, but the bounding box still doesnt seem to work) ros2 launch isaac_ros_foundationpose isaac_ros_foundationpose.launch.py refine_engine_file_path:=${ISAAC_ROS_WS}/isaac_ros_assets/models/foundationpose/refine_trt_engine.plan score_engine_file_path:=${ISAAC_ROS_WS}/isaac_ros_assets/models/foundationpose/score_trt_engine.plan mesh_file_path:=${ISAAC_ROS_WS}/mesh/pinkcat_scaled.obj texture_path:=${ISAAC_ROS_WS}/mesh/Texture_pinkcat.png rt_detr_engine_file_path:=${ISAAC_ROS_WS}/isaac_ros_assets/models/synthetica_detr/sdetr_grasp.plan launch_rviz:=true launch_bbox_to_mask:=true mask_height:=480 mask_width:=640
here is the log output from the foundationpose terminal:
SyntheticaDETR is an exact-instance detector trained on a fixed set of objects, so when you swap in a new object like your pink cat without a matching trained RT-DETR model, the detector won’t be able to detect it.
To get correct results on a new object, you need a detector model trained specifically for it. You can follow this documentation to create a 3D mesh for your specific object, and refer to this guide here for model training details.
Many thanks for your guidance regarding this issue. I have begun looking into training a detr model for the 2D detection. much appreciated for your patience and prompt responses to my issues.
I will be closing the issue now, as I believe this post has run its course.
Once again, my sincerest thanks for your guidance.