Skip to main content

Docker Images for Husarion robots

Welcome. In this section you will find useful information about Docker images for our company's robots. Below is a table presenting in a compact form Docker images enabling quick launch of a given robot. Below the tables, you will also find a chapter Minimal Setup showing the minimum configuration of the container that is needed for proper startup (e.g. in the case of a camera, specify the device port).

If you are not sure how to launch images you can learn it form Examples section.

Hardware​

Here's the list of Docker images hosted on Husarion's Docker Hub to be run on the real robots:

NameImageDescriptionTagsArchitectures
Husarion UGV
husarion/husarion-ugvStatus Badge
Docker image for https://github.com/husarion/husarion_ugv_ros - a ROS 2 driver for Panther and Lynx
jazzy
arm64
humble
arm64
ROSbot 3 / XL
husarion/rosbotStatus Badge
Docker images for ROSbot 2, ROSbot 2R and ROSbot 2 PRO robots.
jazzy
amd64 arm64
humble
amd64 arm64

Simulation​

Here's the list of Docker images hosted on Husarion's Docker Hub with robot simulations to be run on your computer:

NameImageDescriptionTagsArchitectures
Gazebo: Husarion UGV
husarion/husarion-ugv-gazeboStatus Badge
Docker image for https://github.com/husarion/husarion_ugv_ros. Gazebo Simulation for Panther na Lynx
jazzy
amd64
humble
amd64
Gazebo: ROSbot 3 / XL
husarion/rosbot-gazeboStatus Badge
Gazebo simulation of ROSbot 2R / 2 PRO
jazzy
amd64 arm64
humble
amd64

Minimal setup​

In this section you can find minimal setup for running the container on a specific robot.

Husarion UGV​

warning

This Docker image is intended to be run on the Built-in Computer. DO NOT run it on the User Computer (the one located in the User Shelf).

Also note that in the production setup in Panther, the ROS node is already launched!

compose.yaml
x-common-config: &common-config
network_mode: host
ipc: host
restart: always
env_file:
- /home/husarion/config/common/.env # env configuration including namespace, domain id, DDS, etc.

services:
husarion_ugv_ros:
image: husarion/husarion-ugv:jazzy-2.3.2-20260622
container_name: husarion_ugv_ros
<<: *common-config
security_opt:
- apparmor:unconfined # allow for dbus PowerOff
devices:
- /dev/bus/usb
- /dev/gpiochip0
- /dev/spiled-channel1
- /dev/spiled-channel2
- /dev/input/js0
device_cgroup_rules:
- 'c 189:* rmw' # USB devices
- 'c 254:0 rmw' # gpiochip0
- 'c 153:* rmw' # spiled-channel1, spiled-channel2
- 'c 13:0 rmw' # gamepad
volumes:
- /run/husarion/robot_config.env:/run/husarion/robot_config.env
- /run/husarion/robot_config.yaml:/run/husarion/robot_config.yaml
- /run/dbus/system_bus_socket:/run/dbus/system_bus_socket
- /sys/bus/iio/devices:/sys/bus/iio/devices:ro # Read-only access to IIO devices
- ~/.ssh/id_rsa:/root/.ssh/id_rsa
- /home/husarion/config:/config
# Realtime hardware (https://control.ros.org/master/doc/ros2_control/controller_manager/doc/userdoc.html#determinism)
ulimits:
rtprio:
soft: 99
hard: 99
memlock:
soft: -1
hard: -1
command: >
ros2 launch husarion_ugv_bringup bringup.launch.py
common_dir_path:=/config
launch_gamepad:=true

ROSbot 3 / XL​

compose.yaml
x-common-config:
&common-config
restart: unless-stopped
network_mode: host
ipc: host

services:
rosbot:
image: husarion/rosbot:jazzy
<<: *common-config
devices:
- /dev/ttySERIAL # MCU communication port
- /dev/gpiomem
- /dev/gpiochip4 # For RPi 4 or ThinkerBoard set to /dev/gpiochip0
- /dev/input # Joystick
- /dev/bus/usb # FTDI
environment:
- RMW_IMPLEMENTATION=rmw_fastrtps_cpp
- FASTRTPS_DEFAULT_PROFILES_FILE=/ros2_ws/src/rosbot_ros/docker/dds-config-udp.xml
command: >
ros2 launch rosbot_bringup rosbot.yaml
info

Before running this compose.yaml, make sure you have the proper version of the firmware installed on the microcontroller. To do so:

docker run --rm -it --privileged <docker_image> \
ros2 run rosbot_utils flash_firmware --robot-model rosbot