docker容器中安装ROS1/ROS2(不用配任何环境,10分钟搞定)

默认电脑已经安装了docker,没安装看这篇文章Docker 安装 (完整详细版)

在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

每次进入容器前都需要先启动容器

docker start $containerId

你可能感兴趣的:(VINS系列专栏,docker,容器,运维,ROS,算法,学习,机器人)