System Environment:
- Hardware: Jetson Orin Nano 8GB Developer Kit
- Software: Fresh flash of JetPack 6.2.1 (L4T 36.4.4)
- ROS Distro: ROS 2 Humble
- Docker Image:
nvcr.io/nvidia/isaac/ros:aarch64-ros2_humble_77e6a678c2058abf96bedcb8f7dd4330
Problem Summary:
After successfully building the ZED ROS 2 driver from source inside the official Isaac ROS dev container (by following the official “Isaac ROS ZED Setup” guide), the driver fails to launch. The error indicates a missing libx264 encoder, pointing to a bug in the base container’s ffmpeg system library.
Steps to Reproduce:
- Start with a clean Jetson on JetPack 6.2.1.
- Meticulously follow the official “Isaac ROS ZED Setup” guide:
- Create a clean workspace.
- Clone
zed-ros2-wrapper -b humble-v4.2.5. - Clone
isaac_ros_common. - Launch the container with
run_dev.sh. - Install the ZED SDK inside the container with
install-zed-aarch64.sh. - Install dependencies and build the workspace with
rosdepandcolcon build. The build completes successfully.
- Source the workspace:
source install/setup.bash. - Attempt to launch the ZED driver:
ros2 launch zed_wrapper zed_camera.launch.py camera_model:=zed2i.
Observed Result:
The launch fails with multiple instances of the following error: [ERROR] [zed.zed_node]: Failed to load plugin image_transport/ffmpeg_pub, error string: unknown encoder: libx264
Expected Result:
The ZED driver should launch successfully without errors.
Additional Diagnostics:
Running ffmpeg -encoders | grep x264 inside the container returns nothing. This confirms the libx264 codec is not available to the ffmpeg program, even after libx264-dev is installed via apt. This indicates the ffmpeg library in the base Docker image was not compiled correctly.