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.shto initiate ROS 2 environment - run
rviz2 &to start RViz - run
ros2 bag play -r 10 -s rosbag_v2 --loop rootfs/16-mcity1.bagto play the downloaded bag file
- run
-
In the container GUI
- open config file
demo-ROS2.rvizin 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.bagin terminal 1 - run
source /root/rootfs/foxy_setup.sh; (ros2 run rqt_image_view rqt_image_view &); python3 /root/rootfs/image_subscriber-ros2.pyin terminal 2 - select image topic
/front_camera/image_rawand/img_grayto 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.pyin 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.pyin 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/srcand 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.templateand build your image withdocker build -f Dockerfile.template --tag=IMAGE_NAME
- No topic showes up in
rqt_image_view- Try to run
ros2 topic listbefore 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 initor line 6 in the Makefile does not work- Replace
`pwd`with the absolute path of this tutorial folder
- Replace
ros2: command not foundorNo module named 'rclpy'- run
source /root/rootfs/foxy_setup.shin 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.shafter sourcingfoxy_setup.sh
- Restart your docker (exit container then
- How to skip the
source /root/rootfs/foxy_setup.shstep- Add
source /root/rootfs/foxy_setup.shto the end of/root/.bashrc, restart the terminal
- Add
- Copy and paste to/from noVNC is annoying
- Add
-localhost nothe end of the second line in/root/startVNC.sh, restart docker and useifconfigto 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