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:
Name | Image | Description | Tags | Architectures | |
---|---|---|---|---|---|
Panther | |||||
husarion/panther | Docker image with a Panther ROS package | ||||
humble | arm64 | ||||
noetic | arm64 | ||||
ROSbot XL | |||||
husarion/rosbot-xl | ROSbot XL image to run on the real hardware and in simulation (under separate tags) | ||||
humble | amd64 arm64 | ||||
galactic | amd64 arm64 | ||||
ROSbot 2R/PRO | |||||
husarion/rosbot | Docker images for ROSbot 2, ROSbot 2R and ROSbot 2 PRO robots. | ||||
noetic | 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:
Name | Image | Description | Tags | Architectures | |
---|---|---|---|---|---|
Gazebo: Panther | |||||
husarion/panther-gazebo | Image for simulation of Panther in Gazebo | ||||
humble | amd64 | ||||
noetic | amd64 | ||||
Gazebo: ROSbot XL | |||||
husarion/rosbot-xl-gazebo | Gazebo simulation of ROSbot XL | ||||
humble | amd64 | ||||
Gazebo: ROSbot 2R / 2 PRO | |||||
husarion/rosbot-gazebo | Gazebo simulation of ROSbot 2R / 2 PRO | ||||
humble | amd64 | ||||
Webots: ROSbot 2R / XL | |||||
husarion/webots | Dockerized Webots simulations for Husarion robots | ||||
humble | amd64 | ||||
galactic | amd64 | ||||
O3DE: ROSbot XL | |||||
husarion/o3de | O3DE simulation with Husarion robots | ||||
1.2.0 | amd64 | ||||
1.1.1 | amd64 | ||||
Minimal setup
In this section you can find minimal setup for running the container on a specific robot.
Panther
- Physical Robot
- Simulation
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!
# Launching:
# docker compose up
x-common-config:
&common-config
network_mode: host
restart: always
ipc: host
tty: true
environment:
- ROS_IP=10.15.20.2
- ROS_MASTER_URI=http://10.15.20.2:11311
services:
ros_master:
image: ros:noetic-ros-core
<<: *common-config
command: roscore
panther_ros:
image: husarion/panther:noetic-1.0.0-20230324-stable
<<: *common-config
privileged: true
env_file: /tmp/panther_config.conf
volumes:
- ~/.ssh/id_rsa:/root/.ssh/id_rsa
- /tmp/panther_config.yaml:/tmp/panther_config.yaml
command: >
roslaunch --wait
panther_bringup bringup.launch
# Launching:
# xhost +local:docker
# docker compose up
services:
panther:
image: husarion/panther-gazebo:noetic-1.0.43-20230823
runtime: nvidia
volumes:
- /tmp/.X11-unix:/tmp/.X11-unix
- /dev/null:/run/husarion/panther_config.env
environment:
- DISPLAY=${DISPLAY:?err}
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=all
command: roslaunch panther_gazebo panther_simulation.launch
ROSbot XL
- Physical Robot
- Simulation
# Launching:
# docker compose up
services:
rosbot-xl:
image: husarion/rosbot-xl:humble-0.8.2-20230712
command: ros2 launch rosbot_xl_bringup bringup.launch.py mecanum:=${MECANUM:-True}
micro-ros:
image: husarion/micro-xrce-agent:v2.4.1
ports:
- 8888:8888/udp
command: MicroXRCEAgent udp4 --port 8888
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 \
--mount type=bind,source=/dev/ttyUSBDB,target=/dev/ttyUSBDB \
husarion/rosbot-xl:humble-0.8.2-20230712 \
flash-firmware.py -p /dev/ttyUSBDB
# Launching:
# xhost +local:docker
# docker compose up
services:
rosbot-xl:
image: husarion/rosbot-xl-gazebo:humble
container_name: rosbot-xl-gazebo
runtime: nvidia
volumes:
- /tmp/.X11-unix:/tmp/.X11-unix
environment:
- DISPLAY=${DISPLAY:?err}
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=all
command: ros2 launch rosbot_xl_gazebo simulation.launch.py mecanum:=True camera_model:=intel_realsense_d435
To run the simulation run the following command in the same path as the localization of the compose.yaml
:
docker compose up
You will see:
Now in the new terminal window you can launch teleop_twist_keyboard
node to manually control the robot in the simulation:
user@laptop:~/$ docker exec -it rosbot-xl-gazebo bash
root@ee15a3e1151c:/ros2_ws# ros2 run teleop_twist_keyboard teleop_twist_keyboard l
This node takes keypresses from the keyboard and publishes them
as Twist messages. It works best with a US keyboard layout.
---------------------------
Moving around:
u i o
j k l
m , .
For Holonomic mode (strafing), hold down the shift key:
---------------------------
U I O
J K L
M < >
t : up (+z)
b : down (-z)
anything else : stop
q/z : increase/decrease max speeds by 10%
w/x : increase/decrease only linear speed by 10%
e/c : increase/decrease only angular speed by 10%
CTRL-C to quit
currently: speed 0.5 turn 1.0
ROSbot 2R/ 2 PRO
- Physical Robot
- Simulation
# Launching:
# docker compose up
services:
rosbot:
image: husarion/rosbot:humble-0.6.1-20230712
command: ros2 launch rosbot_bringup bringup.launch.py mecanum:=${MECANUM:-False}
micro-ros:
image: husarion/micro-xrce-agent:v2.4.1
devices:
- ${SERIAL_PORT:?err}
environment:
- SERIAL_PORT
command: MicroXRCEAgent serial -D $SERIAL_PORT serial -b 576000
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 \
husarion/rosbot:humble-0.6.1-20230712 \
/flash-firmware.py /root/firmware.bin
# Launching:
# xhost +local:docker
# docker compose up
services:
rosbot:
image: husarion/rosbot-gazebo:humble
container_name: rosbot-gazebo
runtime: nvidia
volumes:
- /tmp/.X11-unix:/tmp/.X11-unix
environment:
- DISPLAY=${DISPLAY:?err}
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=all
command: ros2 launch rosbot_gazebo simulation.launch.py mecanum:=${MECANUM:-False}
To run the simulation run the following command in the same path as the localization of the compose.yaml
:
docker compose up
Now in the new terminal window you can launch teleop_twist_keyboard
node to manually control the robot in the simulation:
user@laptop:~/$ docker exec -it rosbot-gazebo bash
root@ee15a3e1151c:/ros2_ws# ros2 run teleop_twist_keyboard teleop_twist_keyboard l
This node takes keypresses from the keyboard and publishes them
as Twist messages. It works best with a US keyboard layout.
---------------------------
Moving around:
u i o
j k l
m , .
For Holonomic mode (strafing), hold down the shift key:
---------------------------
U I O
J K L
M < >
t : up (+z)
b : down (-z)
anything else : stop
q/z : increase/decrease max speeds by 10%
w/x : increase/decrease only linear speed by 10%
e/c : increase/decrease only angular speed by 10%
CTRL-C to quit
currently: speed 0.5 turn 1.0