Any machine with Docker installed. Learn more about Docker and container here.
Setup ROS in Docker (demo video)
Open a Terminal/Powershell
For x64 machine, run make init
will download and initalize the container with ROS Foxy/Noetic.
If you don't have make
, just copy and run line 6 in the Makefile.
For arm64 machine, run make init-arm
.
A CLI to the container will be granted after this step.
For GUI access, use your broswer to visit this page with [password].
Other operations on the container can be found in the Makefile.
Play a ROS1 Bag File (demo video)
-
Download a bag file from here and move it to the shared folder rootfs/. Learn more about ROS bag here.
-
In the container CLI
- run
source /root/rootfs/foxy_setup.sh
to initiate ROS 2 environment - run
rviz2 &
to start RViz - run
ros2 bag play -r 10 -s rosbag_v2 --loop rootfs/16-mcity1.bag
to play the downloaded bag file
- run
-
In the container GUI
- open config file
demo-ROS2.rviz
in folder /root/rootfs/ from RViz, it should show the images and point clouds now
- open config file
-
Image ROS Node (view code | demo video)
In the container GUI, open mutiple terminals
- run
source /root/rootfs/foxy_setup.sh; ros2 bag play -r 10 -s rosbag_v2 --loop rootfs/16-mcity1.bag
in terminal 1 - run
source /root/rootfs/foxy_setup.sh; (ros2 run rqt_image_view rqt_image_view &); python3 /root/rootfs/image_subscriber-ros2.py
in terminal 2 - select image topic
/front_camera/image_raw
and/img_gray
to see the original image and the gray image produced by the ROS node.
- run
-
PointCloud ROS Node (view code | demo video)
In the container GUI,
- run
apt install -y python3-pcl ros-foxy-sensor-msgs-py; python3 /root/rootfs/point_cloud_subscriber-ros2.py
in terminal 2 - pointcloud file will be exported to shared folder rootfs/ by the ROS node
In the host machine, use CouldCompare or Matlab to view the exported pointcloud file
- run
-
GPS ROS Node (view code)
In the container GUI,
- run
pip install utm; python3 /root/rootfs/gps_subscriber-ros2.py
in terminal 2 - the ROS node will print the gps coordinates
- run
Create Your ROS Package and Docker Image (ROS1 | ROS2 | Docker Cheat Sheets)
-
Create a workspace with
mkdir -p /root/rootfs/demo_workspace/src
and initialize it following the tutorials [ROS 1, ROS 2] -
Follow the rest of tutorials to create your ROS package and ROS node [ROS 1, ROS 2]
-
Add the dependencies of your package to
Dockerfile.template
and build your image withdocker build -f Dockerfile.template --tag=IMAGE_NAME
- No topic showes up in
rqt_image_view
- Try to run
ros2 topic list
before runningrqt_image_view
- Try to run
- Docker does not work on my computer
- You can use a VM/WSL as an alternative, follow the setup in the Dockerfile (install fresh Ubuntu 20.04 and all the dependencies)
make init
or line 6 in the Makefile does not work- Replace
`pwd`
with the absolute path of this tutorial folder
- Replace
ros2: command not found
orNo module named 'rclpy'
- run
source /root/rootfs/foxy_setup.sh
in your terminal and try again
- run
- Get
Aborted (core dumped)
when runningrviz2
- Restart your docker (exit container then
make start
) and try again, DO NOT sourcenoetic_setup.sh
after sourcingfoxy_setup.sh
- Restart your docker (exit container then
- How to skip the
source /root/rootfs/foxy_setup.sh
step- Add
source /root/rootfs/foxy_setup.sh
to the end of/root/.bashrc
, restart the terminal
- Add
- Copy and paste to/from noVNC is annoying
- Add
-localhost no
the end of the second line in/root/startVNC.sh
, restart docker and useifconfig
to show DOCKER_IP, then connect to DOCKER_IP:5901 with an VNC client (CAUTION! This will expose your docker VNC to public IP instead of localhost)
- Add