前言
这一篇笔记是基于上一篇笔记的基础上,补充一下如何针对 ROS 进行配置。关于 vscode 以及 docker 的基本设置可以参考我的上一篇笔记: vscode 配置 docker 开发环境(一)
操作系统
目前在 ubuntu 和 deepin 测试过没问题,在 macOS 下可以运行 ros 以及 rqt_gui,但是 rviz 对 openGL 版本有要求用 XQuartz 没办法解决,所以建议在 mac 下使用 vnc 或者虚拟机之类的办法。
前提条件
这里假设机器已经至少安装好:
- vscode - 关于 vscode 的安装方法可以参考网上的其他资源,vscode 需要安装
remote-development
插件 - docker - 安装完成后,运行
docker --version
看是否能正确输出版本号 - 最好已经熟悉如何通过 vscode 进入 docker container 的基本设置
vscode 中关于 docker container 的设置主要是集中在 Dockerfile
和 .devcontainer.json
。下面主要对这两个文件的设置进行总结
理想效果
- 能够利用已有的 Dockerfile 构建 ROS 的 image 并成功通过 vscode 进入相应的 container 中
- container 环境中能够顺利运行 ROS 相关项目
- 可以在 container 中运行 rviz,rqt_gui 等 GUI 程序
Dockerfile
Dockerfile
中描述了 docker image 构建过程的相关配置,这里主要是以 ubuntu 18.04 为基础,再安装 ROS melodic 以及相关软件,我的 Dockerfile
如下:
1 | # 基础镜像 |
.devcontainer.json
.devcontainer.json
中主要定义了进入容器的相关设置,这里除了常规的设置以外,由于需要支持 rviz, rqt_gui 等 gui 软件,需要进行额外的设置。我的 .devcontainer.json
如下:
1 | { |
以上除了基础设置以外,还针对了 ros gui 进行了相应的设置如下:
- 利用 X server 进行图形界面的转发和显示:
"DISPLAY", "QT_X11_NO_MITSHM=1", "QT_GRAPHICSSYSTEM="
:转发三个 qt 相关的环境变量/tmp/.X11-unix
:挂载 X11 unit scoker
- 允许容器使用机器的相关设备驱动
/dev/dri
--priviledged, --net=host
:这两个主要是让容器共享宿主机的网络
除了 .devcontainer.json
中的设置以外,host 还需要运行以下指令: xhost +local:
来运行本地连接
测试
rqt_gui 和 rviz 都能成功打开
运行基本的 ros 项目:(listener 和 talker)
这里图方便就找了 ros 官方教程中的第一个项目来测试,一个节点打印消息,另一个节点订阅该消息同样打印出来,结果如下:
结语
总的来说,这还是只是很初步的设置,也还没有跑过很大型的项目;后续如果有遇到其他问题还会进行补充。