配置可视化docker+ROS环境

一直以来,我以为docker是没有图形界面的,我就用它做过编译服务,构建编译环境。时隔多年,再次用到,它居然支持了。

1. docker图形界面配置

主机端运行命令:“ xhost + ”,使能宿主机接收其他客户端的显示需求

docker端配置显示参数,“ export DISPLAY=":0.0" ”,使用unix socket方式连接到Xserver,使用显示端0.0

docker启动参数需要映射显示服务节点目录,“ -v /tmp/.X11-unix:/tmp/.X11-unix:rw ”

这样,docker中显示client通过映射将对Xserver的请求透传到主机端DISPALY,DISPLAY对应主机端的显示接口,主机端也使能接收,完成显示。

2. docker支持硬件加速的图形界面配置

上面的配置应对简单的图形界面足够。有些图形显示程序如ROS的rviz程序需要调用图形加速,也就是依赖libgl.so等库来启动硬件加速,就需要添加硬件加速支持。ROS做了一些工作,针对nvidia显卡,提供了nvidia-docker1和nvidia-docker2工具,针对AMD和Intel显卡使用默认mesa库。ubuntu中使用命令“ apt-get install nvidia-docker ”,具体见https://github.com/NVIDIA/nvidia-docker,这张图也解释了nvidia-docker原理:

从图上看,还需要nvidia显卡驱动为nvidia-docker提供接口和服务。要注意的是,docker中调用的接口要在主机中有相对应的实现,具体就体现在驱动的版本上面(吐槽:nvivida驱动程序没写好,版本不同不相互兼容,换人!)。docker和主机安装相同版本的驱动我试过没问题,猜测如果不相同,主机中的版本要比docker中的高才行,主机中版本低是有问题的(亲身体验)。

如果使用AMD或者intel显卡,就能省了驱动安装这一步(表扬:mesa人家的驱动就做的比较好,各个版本之间能兼容)。

到这里在docker上执行ROS的rviz就能在主机显示器上显示图形界面了。

3. 主机+虚拟机+docker环境配置

有时候硬件资源有限,主机需要跑windows,Linux环境只能跑在虚拟机上了,比如vmware或者virtualbox,docker再安装在linux虚拟机上,这样的组合也是可以的。

虚拟机上的显卡就只能用mesa开源库,docker上按照mesa配置,docker上ROS的rviz可以运行。首先要卸载nvidia的驱动,然后安装xserver-xorg-video-nouveau驱动包。虽然可能windows上有nvidia显卡,但是virtualbox将其虚拟化为mesa接口的显卡了,就不用docker这一层再做相关工作。

4. tips

docker上的ros版本和主机上的ROS版本可以不一样。

装完驱动等等库,可以检查/usr/local/lib下的libgl*。

 

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值