Isaac ROS VSLAM v2.1.0 not executing

Hey there!

I am using a Jetson Orin Nano dev kit (Jetpack 5.1.2 with Isaac ROS VSLAM 2.1.0) and an Intel RealSense D455 (FW 5.13.0.5, SDK 2.55.1, and ROS package 4.51.1).

I cloned the isaac_ros_common and isaac_ros_visual_slam packages using git checkout v2.1.0. Then I ran the Docker, exited, and added:

cd ${ISAAC_ROS_WS}/src/isaac_ros_common/scripts && \
touch .isaac_ros_common-config && \
echo CONFIG_IMAGE_KEY=ros2_humble.user.realsense > .isaac_ros_common-config

After compiling all packages without errors, I launched:

ros2 launch isaac_ros_visual_slam isaac_ros_visual_slam_realsense.launch.py

This gave me the following output:

[INFO] [launch]: All log files can be found below /home/admin/.ros/log/2024-07-09-12-53-44-346611-ubuntu-26015
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [component_container-1]: process started with pid [26026]
[INFO] [realsense2_camera_node-2]: process started with pid [26028]
[component_container-1] [INFO] [1720547625.047770709] [visual_slam_launch_container]: Load Library: /workspaces/isaac_ros-dev/install/isaac_ros_visual_slam/lib/libvisual_slam_node.so
[component_container-1] [ERROR] [1720547625.050744096] [visual_slam_launch_container]: Failed to load library: Could not load library dlopen error: libcuvslam.so: cannot open shared object file: No such file or directory, at /tmp/binarydeb/ros-humble-rcutils-5.1.4/src/shared_library.c:99
[ERROR] [launch_ros.actions.load_composable_nodes]: Failed to load node 'visual_slam_node' of type 'nvidia::isaac_ros::visual_slam::VisualSlamNode' in container '/visual_slam_launch_container': Failed to load library: Could not load library dlopen error: libcuvslam.so: cannot open shared object file: No such file or directory, at /tmp/binarydeb/ros-humble-rcutils-5.1.4/src/shared_library.c:99
[realsense2_camera_node-2] [INFO] [1720547625.070476515] [camera.camera]: RealSense ROS v4.51.1
[realsense2_camera_node-2] [INFO] [1720547625.070682278] [camera.camera]: Built with LibRealSense v2.55.1
[realsense2_camera_node-2] [INFO] [1720547625.070713831] [camera.camera]: Running with LibRealSense v2.55.1
[realsense2_camera_node-2] [WARN] [1720547625.115188759] [camera.camera]: Device 1/1 failed with exception: failed to set power state
[realsense2_camera_node-2] [ERROR] [1720547625.115268312] [camera.camera]: The requested device with  is NOT found. Will Try again.
[realsense2_camera_node-2] [WARN] [1720547631.151184323] [camera.camera]: Device 1/1 failed with exception: failed to set power state
[realsense2_camera_node-2] [ERROR] [1720547631.151299493] [camera.camera]: The requested device with  is NOT found. Will Try again.
[realsense2_camera_node-2] libusb: debug [libusb_get_device_descriptor]
[ERROR] [realsense2_camera_node-2]: process has died [pid 26028, exit code -11, cmd '/workspaces/isaac_ros-dev/install/realsense2_camera/lib/realsense2_camera/realsense2_camera_node --ros-args -r __node:=camera -r __ns:=/camera --params-file /tmp/launch_params_g5ep1o11'].
^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[component_container-1] [INFO] [1720547754.923453045] [rclcpp]: signal_handler(signum=2)
[INFO] [component_container-1]: process has finished cleanly [pid 26026]

I am not sure what is happening, as I didn’t change any of the code and have maintained all versions mentioned in the documentation. Any possible solutions?

P.S. I am using 5.1.2 because 6.0.0 does not include the CH340 or L2303 drivers, which I need for a UART connection. I tried these steps but they didn’t work. If there is another way to add these drivers, I would greatly appreciate it if you could share it so I can move to Jetpack 6.0.0.

P.S. I am trying to combine the 3.0.0 documentation with some commands I have been using from 2.1.0 and ZED. Is there a way to share 2.1.0 documentation?

Thanks!

Hi @jim.fabian

Thank you for your detailed message, let me reply on all key topics:

This issue may be related to other similar topics RealSense D435i Not Working With Jetson Orin Nano 8GB Jetpack 6.0 but at this time I cannot check the old requirements for the realsense and Isaac ROS 2.1.0

The support should be available for drivers with CH340 or L2303. Additionally, I noticed that you’ve opened a new topic at Missing of Support CH340 or L2303 drivers on Jetpack 6.0
I think you should be able to work on Jetpack 6.0 without any issues, but let’s wait for a reply from @WayneWWW on this subject.

The ZED support is temporarily suspended, but it will be reinstated soon. I keep you posted when will be released

For the next release will be also added archive documentation for the previous release. I keep you posted when will be released.

If you have any other questions or need further explanation, feel free to ask.

Best,
Raffaello

Hi jim!

I’m not sure if it was the same bug I created when v3.0 came out, but I fixed all the repositories in the last commit before the release, isaac_ros_common has two more commits after v2.1.0.

To view the documentation for the previous version, you can clone the documentation repository, checkout to the version, and open the files locally. I am currently using it and have not found any broken links.

1 Like

Thank you, Rodrigo, for your hint to have access to the old documentation.

About the realsense, we have released a fix and now you can rerun our demo.
You can simply run sudo apt-get update and reinstall the package, and now it will work.

Let me know if is fixed now

Raffaello

Hello @rodrigo.delgado1 @Raffaello . I really appreciate both your answers. I am trying to use Jetpack 6, which took a while to install, including the docker.

Regarding the UART communication as the problem I am facing using Jetpack 6, I found a package that open the THS1 UART (Pin 6, 8, 10 from J12) and use it for uXRCE-DDS communication (also my objective). However it doesn’t work in my case.

Which steps should I do in order to have PIN6, 8 and 10 available for uXRCE-DDS UART communication?

It may help to describe shortly what this package do. It uses this file to prepare the jetson:

if [ "$TARGET" = "jetson" ]; then
	sudo pip3 install Jetson.GPIO smbus2

	sudo apt-get install -y \
		nvidia-jetpack

elif [ "$TARGET" = "pi" ]; then
	sudo pip3 install RPi.GPIO
fi

sudo pip3 install \
	meson \
	pyserial \
	pymavlink \
	dronecan

########## configure environment ##########
echo "Configuring environment"
sudo usermod -a -G dialout $USER
sudo groupadd -f -r gpio
sudo usermod -a -G gpio $USER
sudo usermod -a -G i2c $USER
mkdir -p $XDG_CONFIG_HOME/systemd/user/

if [ "$TARGET" = "jetson" ]; then
	sudo systemctl stop nvgetty
	sudo systemctl disable nvgetty
	sudo cp $TARGET_DIR/99-gpio.rules /etc/udev/rules.d/
	sudo udevadm control --reload-rules && sudo udevadm trigger
fi

Then use this file to add a service which includes DDS

#!/bin/bash

sudo true

if uname -ar | grep tegra; then
	TARGET=jetson
else
	TARGET=pi
fi

TARGET_DIR="$PWD/platform/$TARGET"

# clean up legacy if it exists
sudo systemctl stop dds-agent &>/dev/null
sudo systemctl disable dds-agent &>/dev/null
sudo rm /etc/systemd/system/dds-agent.service &>/dev/null

echo "Installing micro-xrce-dds-agent"
sudo snap install micro-xrce-dds-agent --edge
# Install the service
sudo cp $TARGET_DIR/services/dds-agent.service $XDG_CONFIG_HOME/systemd/user/
systemctl --user daemon-reload
systemctl --user enable dds-agent.service
systemctl --user restart dds-agent.service