默认电脑已经安装了docker,没安装看这篇文章Docker 安装 (完整详细版)
ROS和docker各种结合看官方文档 dockerTutorials
在OSRF中拉取想要的 ROS 版本 docker 镜像
网址为 拉取命令在这里
我是安装noetic版本,因为这个兼容比较多现有的工程
docker pull osrf/ros:noetic-desktop-full
拉取完后创建容器,但是为了能在docker中能打开窗口,将使用以下参数,只需要修改名字即可,your_name 改成你想要的名字,必须英文
如果想远程部署的,具体参数看这个链接Using GUI’s with Docker
docker run -it \
--name your_name \
--env="DISPLAY" \
--env="QT_X11_NO_MITSHM=1" \
--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
osrf/ros:noetic-desktop-full \
rqt
这个时候必然会报错,上步的目的是为了创建有对应参数的容器,
错误内容正常应该为
Authorization required, but no authorization protocol specified
could not connect to display :1
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
然后
docker ps -a
查看刚刚创建的容器的 id
运行下面这句,把 $containerId 替换为容器的 id
xhost +local:`docker inspect --format='{{ .Config.Hostname }}' $containerId`
提示信息出现这个就是成功了
non-network local connections being added to access control list
然后就可以运行容器啦,$containerId 换成容器名字也可以
docker start $containerId
然后再运行以下进入容器
docker exec -it your_name /bin/bash
此时进入容器了,再在容器里面运行这句
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
然后
source ~/.bashrc
这时候再开2个终端,每个终端都使用以下命令进入
docker exec -it your_name /bin/bash
然后把下面的3行指令按顺序分别执行在3个终端中
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
能用键盘控制就成功了
使用以下命令退出容器
exit
每次进入容器前都需要先设置与主机的UI交互id
xhost +local:`docker inspect --format='{{ .Config.Hostname }}' $containerId`
然后启动容器
docker start $containerId
然后才能进入容器
docker exec -it your_name /bin/bash
剩下的配置和运行vins环境看这篇Ubuntu20.04下运行VINS系列:VINS-Mono、VINS-Fusion和GVINS