A ROSBOT 2R running ROS 2 Humble can start the Astra camera without exposing its topics to the robot when its Docker images and ROSBOT firmware are not aligned. The reported case was resolved after pulling the latest sensor images following the firmware update. Use the compose configuration and verification sequence below to isolate the camera before testing the complete robot.
Use a host-networked Humble compose stack
Run the ROSBOT, Astra, and RPLIDAR containers with host networking and the same ROBOT_NAMESPACE environment setting. Pass the USB bus into the Astra container so its driver can access the camera.
x-common-config: &common-config
environment:
- ROBOT_NAMESPACE
network_mode: host
ipc: host
restart: unless-stopped
services:
rosbot:
image: husarion/rosbot:humble-0.13.1-20240201
<<: *common-config
devices:
- ${SERIAL_PORT:?err}
command: >
ros2 launch rosbot_bringup combined.launch.py
mecanum:=${MECANUM:-False}
serial_port:=$SERIAL_PORT
serial_baudrate:=576000
astra:
image: husarion/astra:humble
<<: *common-config
devices:
- /dev/bus/usb/
command: ros2 launch /husarion_utils/astra.launch.py
rplidar:
image: husarion/rplidar:humble
<<: *common-config
devices:
- /dev/ttyRPLIDAR:/dev/ttyUSB0
command: >
ros2 launch sllidar_ros2 sllidar_launch.py
serial_baudrate:=${RPLIDAR_BAUDRATE:-256000}
Align the ROSBOT firmware and container image
The firmware flash command and compose file must use the same ROSBOT image version. For the supplied configuration, both reference husarion/rosbot:humble-0.13.1-20240201. After flashing, explicitly pull the current sensor images; flashing firmware does not establish that the Astra and RPLIDAR images are current.
- Stop and remove the existing containers:
docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q) - Flash the firmware from the matching ROSBOT image:
docker run --rm -it --privileged husarion/rosbot:humble-0.13.1-20240201 flash-firmware.py -f /root/firmware.bin - Pull the images declared by the compose file:
docker compose pull
Isolate the Astra camera and inspect startup logs
Before diagnosing ROS 2 topic discovery across the full stack, run Astra alone. This separates camera initialization from the ROSBOT and lidar containers.
docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q)
docker compose up astra
A successful startup ends with messages stating depth is started, color is started, and device started. If any message is absent or different, retain the Astra container logs for diagnosis; the evidence does not identify a single cause for alternate output.
Start the stack and verify topic visibility
After the standalone camera test succeeds, start the complete compose stack and query ROS 2 from another terminal on the robot. Host networking and a consistent namespace are the supported compose conditions for local topic discovery.
docker compose up -d
ros2 topic list
Confirm that the list includes topics from the robot, lidar, and Astra camera. If Astra reports a successful device start but its topics remain absent, compare the namespace environment across all services and confirm that docker compose pull completed after the firmware flash.
FAQ
Why does the ROSBOT 2R Astra camera run but publish no visible topics?
The documented case was resolved by pulling the latest Docker images after flashing the ROSBOT firmware. Also verify that every service uses host networking and the same ROBOT_NAMESPACE setting.
How do I test only the Astra camera container?
Stop and remove the existing containers, then run docker compose up astra. Successful logs end with depth is started, color is started, and device started.
Which ROSBOT Humble firmware image matches this compose file?
The supplied compose and flash command both use husarion/rosbot:humble-0.13.1-20240201. Keep those references identical, then run docker compose pull to update the sensor images.