由于
ros
常与本地环境冲突,为了不影响大量的本地项目,因此选择在docker
中搭建ros
环境,从而与本地环境隔离,但会引入docker
中无法可视化的问题,而ros
项目常需要与rviz
及gazebo
配合开发,以下提供可视化的解决方案
一、创建容器
- 拉取镜像文件
ros安装是个费时费力费脑且看脸的工作
从osrf(OpenSource Robotics Foundation)
拉取对应版本的image
,包含了ros
环境,节省安装步骤及时间,若自行安装参考[详细介绍在Unbuntu20.04中安装ROS,含所有报错解决方法]
sudo docker pull osrf/ros:noetic-desktop-full
系统版本 | ROS1版本 |
---|---|
16.04 | kinetic |
18.04 | melodic |
20.04 | noetic |
通过sudo docker images
查看是否拉取成功,REPOSITORY
为osrf/ros
,TAG
为noetic-desktop-full
- 创建容器
在创建容器之前,一定要先在terminal
内输入xhost +
命令,以解除Xserver
服务器的限制,成功后会打印
access control disabled, clients can connect from any host
而后使用如下指令创建容器
sudo docker run -it -v [/home/xxx/Projects:/home/xxx/Projects] --device=/dev/dri --group-add video --volume=/tmp/.X11-unix:/tmp/.X11-unix --env="DISPLAY=$DISPLAY" --name=[ros-display] [IMAGE_ID] /bin/bash
通过sudo docker ps -a
查看容器列表,创建成功后默认直接进入docker
二、使用容器
- 启动多个
terminal
众所周知ros
需要多个terminal
配合工作,即需要多个terminal
进入同一个container
,可使用如下指令
sudo docker exec -it [container_id] /bin/bash
- 编译
ros
工程
在[2.2]中创建容器时,通过-v /home/xxx/Projects:/home/xxx/Projects
将本地路径映射到docker
中,进入catkin_ws
目录,其中src
内包含ros
工程代码,使用catkin_make
进行编译
- 启动
rviz
编译完成后,使用source ./devel/setup.bash
将工作空间加入环境变量,输入rviz
,若报错
could not contact ROS master at http://xx.xx.xx.xx:11311
需要先执行roscore
,再次尝试rviz
,若能成功显示,即可执行带有rviz
和gazebo
的launch
项目,尽情roslaunch
三、删除指令
删除image
sudo docker rmi -f [image_id]
删除container
文章来源:https://www.toymoban.com/news/detail-740691.html
sudo docker rm [container_id]
四、实例
Docker可视化实例参考【Docker】《视觉SLAM十四讲》Docker环境配置及代码复现文章来源地址https://www.toymoban.com/news/detail-740691.html
到了这里,关于【Ubuntu】Docker中配置ROS并可视化Rviz及Gazebo的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!