参考链接:【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 容器名