Chạy ROS 1 qua docker

Dưới đây là mô tả về cách triển khai của tôi để chạy ros-noetic với các gui đồ họa gazebo,rviz,... có thể hiển thị được trên Windown với docker

Với giả định rằng mọi người đọc bài viết này đều có cơ sở và hiểu biết cơ bản về Docker & Docker Compose tôi sẽ không đề cập lại các khái niệm cơ bản liên quan.

Cài đặt VcXsrv

VcXsrv là một X server cho Windown, nó là một dạng phần mềm cho phép các phần mềm Linux chạy trong Docker/WSL có thể hiển thị trên Windown.

  • Bạn có thể download và cài đặt nó tại đây.

  • Sau khi cài đặt, bạn khởi chạy XLaunch, sau đó chọn Multiple windowns, bật Disable access control để container docker có thể kết nối.

Tạo docker compose file

Trong trường hợp của mình, tôi sử dụng osrf/ros:noetic-desktop-full là image chính để triển khai, bạn có thể tham khảo cấu trúc file docker-compose.yaml dưới đây của tôi.

services:
  ros1_noetic:
    image: osrf/ros:noetic-desktop-full
    environment:
      - DISPLAY=host.docker.internal:0
      - QT_X11_NO_MITSHM=1
    volumes:
      - ./ros1_ws:/ros_ws
    command: bash -c "source /opt/ros/noetic/setup.bash && sleep infinity"
    extra_hosts:
      - "host.docker.internal:host-gateway"
    privileged: true
    tty: true
    stdin_open: true

Sau đó bạn có thể chạy docker-compose up -d ros1_noetic để khởi chạy container của mình.

Kiểm tra GUI

Sau khi container được load lên mà không xảy ra lỗi, gần như mọi thứ đã được hoàn thành, bạn có thể kiểm tra lại các GUI của linux container đã có thể hiển thị trên giao diện Windown hay chưa bằng cách truy cập vào container qua docker exec -it <container_name> bash sau đó sourrce ROS source /opt/ros/noetic/setup.bash và chạy 1 trong 2 gui tool là gazeborviz

Last updated