01-argus_camera sample failes to execute.
$ docker run -v /tmp/argus_socket:/tmp/argus_socket --runtime nvidia --network host rbonghi/isaac-ros-tutorial:argus-camera
sourcing /opt/ros/foxy/install/setup.bash
ROS_ROOT /opt/ros/foxy
ROS_DISTRO foxy
[INFO] [launch]: All log files can be found below /root/.ros/log/2022-03-16-02-14-05-382117-JetsonNano2GB-1
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [isaac_ros_argus_camera_mono-1]: process started with pid [56]
[INFO] [image_saver-2]: process started with pid [57]
[image_saver-2] /opt/ros/foxy/install/lib/image_view/image_saver: symbol lookup error: /opt/ros/foxy/install/lib/libimage_view_nodes.so: undefined symbol: _ZN15image_transport19create_subscriptionEPN6rclcpp4NodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt8functionIFvRKSt10shared_ptrIKN11sensor_msgs3msg6Image_ISaIvEEEEEESA_17rmw_qos_profile_t
[ERROR] [image_saver-2]: process has died [pid 57, exit code 127, cmd '/opt/ros/foxy/install/lib/image_view/image_saver --ros-args --params-file /tmp/launch_params_m969rq_4 -r /image:=/image_raw'].
[isaac_ros_argus_camera_mono-1] [INFO] [1647396846.785554173] [argus_monocular]: Argus Version: 0.98.3 (multi-process)
[isaac_ros_argus_camera_mono-1]
[isaac_ros_argus_camera_mono-1] [INFO] [1647396846.786330650] [argus_monocular]: Set the camera model using the node parameter "device"
[isaac_ros_argus_camera_mono-1] [INFO] [1647396846.786393881] [argus_monocular]: Set the sensor mode using the node parameter "sensor"
[isaac_ros_argus_camera_mono-1] [INFO] [1647396846.786423413] [argus_monocular]: Set the output image format using the node parameter "output_encoding". Supported encodings: "mono8" and "rgb8"
[isaac_ros_argus_camera_mono-1]
[isaac_ros_argus_camera_mono-1] [INFO] [1647396846.786450237] [argus_monocular]: Following camera model indices are available:
[isaac_ros_argus_camera_mono-1] [INFO] [1647396846.786906394] [argus_monocular]:
[isaac_ros_argus_camera_mono-1] [INFO] [1647396846.786981708] [argus_monocular]: 0 porg_front_RBPCV2
[isaac_ros_argus_camera_mono-1] [INFO] [1647396846.787013844] [argus_monocular]: Sensor modes supported for this camera device:
[isaac_ros_argus_camera_mono-1] [INFO] [1647396846.787635578] [argus_monocular]: 0 (3264 x 2464)
[isaac_ros_argus_camera_mono-1] [INFO] [1647396846.788080485] [argus_monocular]: 1 (3264 x 1848)
[isaac_ros_argus_camera_mono-1] [INFO] [1647396846.788535236] [argus_monocular]: 2 (1920 x 1080)
[isaac_ros_argus_camera_mono-1] [INFO] [1647396846.789020248] [argus_monocular]: 3 (1640 x 1232)
[isaac_ros_argus_camera_mono-1] [INFO] [1647396846.789394371] [argus_monocular]: 4 (1280 x 720)
[isaac_ros_argus_camera_mono-1] [INFO] [1647396846.789823809] [argus_monocular]: 5 (1280 x 720)
[isaac_ros_argus_camera_mono-1] [INFO] [1647396846.789917145] [argus_monocular]:
[isaac_ros_argus_camera_mono-1] [INFO] [1647396846.790234288] [argus_monocular]: Capturing from device 0 using sensor mode 0 (3264x2464)
[isaac_ros_argus_camera_mono-1] [WARN] [1647396846.790430387] [argus_monocular]: Cannot get ISyncSensorCalibrationData interface
[isaac_ros_argus_camera_mono-1] [INFO] [1647396847.173752517] [argus_monocular]: Starting repeat capture requests.
[isaac_ros_argus_camera_mono-1] [INFO] [1647396848.020285720] [argus_monocular]: Consumer Running
It seems like the image_saver
node called from isaac_ros_argus_camera_mono_launch.py
is not available to launch which is called from 01-argus_camera/Dockerfile.
https://github.com/rbonghi/isaac_ros_argus_camera/blob/63e353f2aeb5b34c69044e39cbb2712b67eda05b/isaac_ros_argus_camera_mono/launch/isaac_ros_argus_camera_mono_launch.py#L26
|
CMD ["ros2", "launch", "isaac_ros_argus_camera_mono", "isaac_ros_argus_camera_mono_launch.py"] |
Environment
Jetson Nano 2GB + JetPack 4.6 + rbonghi/isaac_ros_tutorial (6f4c315)
$ pwd
/home/ubuntu/isaac_ros_tutorial
$ git log | head -n1
commit 6f4c3156f1c5c1675466dddb6efc18fcbecfd8c8
To Reproduce
- Install JetPack 4.6 on Jetson Nano (I tried with 2GB model)
- Run git clone
https://github.com/rbonghi/isaac_ros_tutorial.git
- Run
cd ~/isaac_ros_tutorial && bash ./scripts/fix_jetson_docker.sh
- Run
cd ~/isaac_ros_tutorial && bash ./scripts/build_docker.sh 00-isaac_ros_base
- Run
cd ~/isaac_ros_tutorial && bash ./scripts/build_docker.sh 01-argus_camera --no-pull-base-image
- It is important to add
--no-pull-base-image
to make it clear to use base image build and stored in local storage
- Start docker container with
docker run --rm -it -v /tmp/argus_socket:/tmp/argus_socket --runtime nvidia --network host rbonghi/isaac-ros-tutorial:isaac-ros-base
and run ros2 run image_view image_saver
inside the container
symbol lookup error
occurs
- Start docker container with
docker run --rm -it -v /tmp/argus_socket:/tmp/argus_socket --runtime nvidia --network host rbonghi/isaac-ros-tutorial:argus-camera bash
and run ros2 run image_view image_saver
inside the container
symbol lookup error
occurs
- Start docker container with
docker run --rm -it -v /tmp/argus_socket:/tmp/argus_socket --runtime nvidia --network host dustynv/ros:foxy-ros-base-l4t-r32.6.1
and run ros2 run image_view image_saver
inside the container
Actual Behavior
The following error occurs while executing image_saver
node from isaac_ros_argus_camera_mono_launch.py
:
/opt/ros/foxy/install/lib/image_view/image_saver: symbol lookup error: /opt/ros/foxy/install/lib/libimage_view_nodes.so: undefined symbol: _ZN15image_transport19create_subscriptionEPN6rclcpp4NodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt8functionIFvRKSt10shared_ptrIKN11sensor_msgs3msg6Image_ISaIvEEEEEESA_17rmw_qos_profile_t
The error message contains the keyword rmw_qos_profile
, but I have confirmed that changing the DDS does not change the message.
- testing with rmw_fastrtps_cpp on
rbonghi/isaac-ros-tutorial:isaac-ros-base
$ docker run --rm -it -v /tmp/argus_socket:/tmp/argus_socket --runtime nvidia --network host rbonghi/isaac-ros-tutorial:isaac-ros-base
sourcing /opt/ros/foxy/install/setup.bash
ROS_ROOT /opt/ros/foxy
ROS_DISTRO foxy
root@JetsonNano2GB:/# echo $RMW_IMPLEMENTATION
rmw_fastrtps_cpp
root@JetsonNano2GB:/# ros2 run image_view image_saver
/opt/ros/foxy/install/lib/image_view/image_saver: symbol lookup error: /opt/ros/foxy/install/lib/libimage_view_nodes.so: undefined symbol: _ZN15image_transport19create_subscriptionEPN6rclcpp4NodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt8functionIFvRKSt10shared_ptrIKN11sensor_msgs3msg6Image_ISaIvEEEEEESA_17rmw_qos_profile_t
root@JetsonNano2GB:/#
- testing with rmw_cyclonedds_cpp on
rbonghi/isaac-ros-tutorial:isaac-ros-base
$ docker run --rm -it -v /tmp/argus_socket:/tmp/argus_socket --runtime nvidia --network host rbonghi/isaac-ros-tutorial:isaac-ros-base
sourcing /opt/ros/foxy/install/setup.bash
ROS_ROOT /opt/ros/foxy
ROS_DISTRO foxy
root@JetsonNano2GB:/# export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
root@JetsonNano2GB:/# echo $RMW_IMPLEMENTATION
rmw_cyclonedds_cpp
root@JetsonNano2GB:/# ros2 run image_view image_saver
/opt/ros/foxy/install/lib/image_view/image_saver: symbol lookup error: /opt/ros/foxy/install/lib/libimage_view_nodes.so: undefined symbol: _ZN15image_transport19create_subscriptionEPN6rclcpp4NodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt8functionIFvRKSt10shared_ptrIKN11sensor_msgs3msg6Image_ISaIvEEEEEESA_17rmw_qos_profile_t
root@JetsonNano2GB:/#
Expected Behavior
No error message. For example, executing ros2 run image_view image_saver
on dustynv/ros:foxy-ros-base-l4t-r32.6.1
image shows no error.
- testing with rmw_fastrtps_cpp on
dustynv/ros:foxy-ros-base-l4t-r32.6.1
$ docker run --rm -it -v /tmp/argus_socket:/tmp/argus_socket --runtime nvidia --network host dustynv/ros:foxy-ros-base-l4t-r32.6.1
sourcing /opt/ros/foxy/install/setup.bash
ROS_ROOT /opt/ros/foxy
ROS_DISTRO foxy
root@JetsonNano2GB:/# export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
root@JetsonNano2GB:/# echo $RMW_IMPLEMENTATION
rmw_fastrtps_cpp
root@JetsonNano2GB:/# ros2 run image_view image_saver
^C[INFO] [1644807660.880021914] [rclcpp]: signal_handler(signal_value=2)
- testing with rmw_cyclonedds_cpp on
dustynv/ros:foxy-ros-base-l4t-r32.6.1
$ docker run --rm -it -v /tmp/argus_socket:/tmp/argus_socket --runtime nvidia --network host dustynv/ros:foxy-ros-base-l4t-r32.6.1
sourcing /opt/ros/foxy/install/setup.bash
ROS_ROOT /opt/ros/foxy
ROS_DISTRO foxy
root@JetsonNano2GB:/# export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
root@JetsonNano2GB:/# echo $RMW_IMPLEMENTATION
rmw_cyclonedds_cpp
root@JetsonNano2GB:/# ros2 run image_view image_saver
1644891136.986210 [0] image_save: using network interface eth0 (udp/192.168.100.10) selected arbitrarily from: eth0, docker0
^C[INFO] [1644891141.894060703] [rclcpp]: signal_handler(signal_value=2)
Debug
I guess this is caused after this commit (af316a1), because the image_transport package has been rebuilt which other packages that depend on it have not been rebuilt such as the image_view package.
After adding some sources to .rosinstall
file and re-building the packages, image_saver node seems to be working fine.
$ cat << "EOF" | tee /tmp/run.sh
#!/bin/bash -eux
mkdir -p /tmp/ros_ws/src
cd /tmp/ros_ws
export ROS_PKG=ros_base
export ROS_DISTRO=foxy
rosinstall_generator --deps --rosdistro ${ROS_DISTRO} ${ROS_PKG} \
launch_xml \
launch_yaml \
launch_testing \
launch_testing_ament_cmake \
demo_nodes_cpp \
demo_nodes_py \
example_interfaces \
camera_calibration_parsers \
camera_info_manager \
cv_bridge \
v4l2_camera \
vision_opencv \
vision_msgs \
image_geometry \
image_pipeline \
image_transport \
compressed_image_transport \
compressed_depth_image_transport \
> ros2.${ROS_DISTRO}.${ROS_PKG}.rosinstall && \
cat ros2.${ROS_DISTRO}.${ROS_PKG}.rosinstall && \
vcs import src < ros2.${ROS_DISTRO}.${ROS_PKG}.rosinstall
find /tmp/ros_ws/src/* -type f -print | xargs grep 'image_transport' 2>/dev/null | grep "depend>" | sed -E "s#.*/(.*)/package\.xml:.*#\1#g" | xargs -I@ grep -B 1 -A 2 local-name.*/@$ ros2.${ROS_DISTRO}.${ROS_PKG}.rosinstall
EOF
$ bash /tmp/run.sh
- git:
local-name: image_pipeline/image_publisher
uri: https://github.com/ros2-gbp/image_pipeline-release.git
version: release/foxy/image_publisher/2.2.1-1
- git:
local-name: image_pipeline/depth_image_proc
uri: https://github.com/ros2-gbp/image_pipeline-release.git
version: release/foxy/depth_image_proc/2.2.1-1
- git:
local-name: image_pipeline/image_proc
uri: https://github.com/ros2-gbp/image_pipeline-release.git
version: release/foxy/image_proc/2.2.1-1
- git:
local-name: image_pipeline/image_view
uri: https://github.com/ros2-gbp/image_pipeline-release.git
version: release/foxy/image_view/2.2.1-1
- git:
local-name: image_pipeline/image_rotate
uri: https://github.com/ros2-gbp/image_pipeline-release.git
version: release/foxy/image_rotate/2.2.1-1
- git:
local-name: image_pipeline/stereo_image_proc
uri: https://github.com/ros2-gbp/image_pipeline-release.git
version: release/foxy/stereo_image_proc/2.2.1-1
- git:
local-name: image_transport_plugins/compressed_image_transport
uri: https://github.com/ros2-gbp/image_transport_plugins-release.git
version: release/foxy/compressed_image_transport/2.3.1-1
- git:
local-name: image_transport_plugins/compressed_depth_image_transport
uri: https://github.com/ros2-gbp/image_transport_plugins-release.git
version: release/foxy/compressed_depth_image_transport/2.3.1-1