參考鏈接:【Ubuntu】Docker中配置ROS并可視化Rviz及Gazebo_docker ros-CSDN博客
前言:
其實這個東西是相當必要的,因為我們有時候需要在一臺電腦上跑好幾個項目,每個項目都有不同的依賴,這些依賴沖突搞得人頭皮發麻,與其整理亂糟糟的依賴關系,不如直接給每個項目一個環境。
一、詳細步驟
1.拉取鏡像
sudo docker pull osrf/ros:noetic-desktop-full
2.允許本地機器上的用戶或進程連接到 X?server
sudo xhost +local:
不允許就是sudo xhost -local
3.構建容器
# volume=/tmp/.X11-unix:/tmp/.X11-unix 掛載宿主機和docker文件互傳
# --device=/dev/dri:/dev/dri 有了這個才能夠顯示,可能讓docker使用顯卡
docker run -it \--volume=/tmp/.X11-unix:/tmp/.X11-unix \--device=/dev/dri:/dev/dri \ --device=/dev/snd \--env="DISPLAY=$DISPLAY" \--env="QT_X11_NO_MITSHM=1" \--name=ros_noetic_test_new \osrf/ros:noetic-desktop-full
4.顯示rviz和gazebo
(1)打開兩個終端,進入容器內
#ros_noetic_test 是容器名
docker exec -it ros_noetic_test bash
(2)刷新環境變量
source ./ros_entrypoint.sh
(3)一個啟動roscore 一個啟動rviz或者gazebo
二、docker 相關指令
1. 查看當前容器
#只能查看當前正在啟動的容器
docker ps
#查看所有容器
docker ps -a
2. 啟動容器
docker start 容器名
3. 停止容器
docker stop 容器名