Trước đây mình học robotic và có cơ hội làm việc với ROS(Robot Operating System). Mình thấy ROS là một framework rất hay để các bạn làm quen với lập trình robot. Đồng thời ROS cũng cung cấp nhiều API để việc lập trình robot dễ dàng hơn.
Hiện tại công việc của mình là cloud engineer nên thay vì tiếp xúc làm việc nhiều với robot thì mình deploy các services nhiều hơn. Tuy nhiên thì sở thích là robot nên mình vẫn chạy 1 số project về Robot và xe tự lái. Đó là lý do có trang web này. Và mình thấy có thể kết hợp 2 mảng này để tạo nên 1 số dự án thú vị.
Trong bài này mình sẽ hướng dẫn các bạn cài đặt ROS2 trên docker container:
Nói sơ qua Docker là gì?
Bạn có thể coi Docker trên PC như một máy tính bên trong máy tính của bạn. Docker là một dịch vụ cung cấp các máy ảo độc lập được cài đặt sẵn những phần mền cần thiết. Những máy ảo này giúp cuộc sống của bạn dễ dàng hơn vì chúng đi kèm với các phiên bản phần mềm phù hợp cho bất kỳ ứng dụng nào bạn đang cố gắng chạy.
Lý do cài ROS nên docker container là gì, khi bạn muốn cài ros trên windows hoặc MacOS cũng được, nhưng sẽ phức tạp hơn. Do đó có thể chọn xài máy ảo(VM) chạy linux, hoặc xài docker, coi là bản mới của VM cũng được.
Ok vào bài:
Đầu tiên: Cài docker cho window trước, làm theo hướng dẫn từ Microsoft là chuẩn nhất:
Cài docker trên win cho UbuntuApp:
https://docs.docker.com/docker-for-windows/install/
Ai cài docker trên window gặp vấn đề thì mình sẽ post 1 bài riêng sau, sau khi cài docker thì tick vào ô Use WL2:

Sau khi cài docker trong window rồi thì cài Ubuntu app:
Bằng Link này: Get Ubuntu 20.04 LTS – Microsoft Store
Mở app Ubuntu, đầu tiên kiểm tra docker có chạy không:
docker
Nếu không báo lỗi tiếp tục pull và run docker container có ros2-vnc, gõ lệnh sau:
docker run -p 6080:80 --shm-size=512m tiryoh/ros2-desktop-vnc:dashing
Bước tiếp theo, vào google chrome, vào link sau:

Tới bước này là các bạn có 4 màn hình để làm việc, có thể chuyển qua lại ở góc dưới bên trái màn hình.
Có máy ảo docker rồi giờ mình tiếp tục cài ROS:
Cài đặt TurtleBot3
Nhấp vào biểu tượng menu ở phía dưới cùng bên trái.
Đi tới System Tools -> LXterminal.

Tải xuống TurtleBot3.
wget https://raw.githubusercontent.com/ROBOTIS-GIT/turtlebot3/ros2/turtlebot3.repos
mkdir -p ~/turtlebot3_ws/src
vcs import src < turtlebot3.repos
Đợi 2 phút để turtlebot 3 được tải xuống container.

Compile code bằng lệnh sau:
colcon build --symlink-install

Set the biến môi trường.
echo 'source ~/turtlebot3_ws/install/setup.bash' >> ~/.bashrc
echo 'export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/turtlebot3_ws/src/turtlebot3/turtlebot3_simulations/turtlebot3_gazebo/models' >> ~/.bashrc
echo 'export TURTLEBOT3_MODEL=waffle_pi' >> ~/.bashrc
source ~/.bashrc
Chạy thử Gazebo trên ROS2:
Bạn nào từng hoặc cần nghiên cứ về ROS sẽ biết các lệnh này: Launch the simulation using the ros2 launch command.
ros2 launch turtlebot3_gazebo empty_world.launch.py
Đợi 1 lúc để Gazebo được bật lên, bình thường nó đã lâu rồi, chạy giả lập trong docker container thì phải lâu hơn chút. Dưới đây là thành quả.

Thực hiện theo các bước trên các bạn có thể giả lập 1 môi trường ảo cho robot trên một máy ảo chạy trên window của bạn cùng với sự trợ giúp của Docker và Ubuntu app 2020 trên Microsoft Store. Tất cả các phần mềm trên đều miễn phí.
Làm sao tắt ROS 2 docker container:
1 là mấy bạn vào app Ubuntu cái mà đang chạy docker container và tắt nó đi, hoặc dùng lệnh sau:
docker stop ros2-desktop-vnc
Muốn bật lại thì command là:
docker restart ros2-desktop-vnc