Any machine with Docker installed. Learn more about Docker and container here.
Setup ROS in Docker (demo video)
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 build before running make init.
A CLI to the container will be granted after this step.
For GUI access, use your broswer to visit this page.
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 ./noetic_setup.shto initiate ROS 1 environment - run
roscore &andrviz &to start RViz - run
rosbag play -r 10 --loop rootfs/16-mcity1.bagto play the downloaded bag file
- run
-
In the container GUI
- open config file
demo.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 ./noetic_setup.sh; (roscore &); rosbag play -r 10 --loop rootfs/16-mcity1.bagin terminal 1 - run
source ./noetic_setup.sh; (rqt_image_view &); python3 /root/rootfs/image_subscriber.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; python3 /root/rootfs/point_cloud_subscriber.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
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
- RLException: roscore cannot run as another roscore/master is already running
- You only need one roscore, you can ignore this error