docker环境下的rviz qt的可视化

在docker环境中rviz qt等可视化较为简单,原理一般是利用宿主机的界面来进行显示,话不多说,直接上干货!

1.需要镜像的启动文件(实际上就是运行docker容器的脚本,此脚本配置了一些需要的环境变量)

HERE=$(pwd)
DEV_CONTAINER="rviz_test:latest"
xhost +
XAUTH=/tmp/.docker.xauth
touch $XAUTH
if [ ! -f $XAUTH ]
then
   xauth_list=$(xauth nlist :0 | sed -e 's/^..../ffff/')
   if [ ! -z "$xauth_list" ]
   then
       echo $xauth_list | xauth -f $XAUTH nmerge -
   else
       touch $XAUTH
   fi
   chmod a+r $XAUTH
fi

docker run -it \
   --env="DISPLAY=$DISPLAY" \
   --env="QT_X11_NO_MITSHM=1" \
   --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
   --env="XAUTHORITY=$XAUTH" \
   --volume="$XAUTH:$XAUTH" \
   -v $HERE:/workspace:rw \
   -w /workspace \
   -u root \
   --privileged=true --rm \
   --name=rviz_test\
   --runtime=nvidia \
   $DEV_CONTAINER \
   bash

注意:以上的脚本基本上需要的配置都涵盖了,其他镜像不需要这么复杂

2.需要运行界面的docker容器(此处以ubuntu16.04 下ros1的官方镜像作为示例,原因是这个更改的有点复杂,容易体现工作量…)

此处为具体的docker file:

FROM nvidia/opengl:1.2-glvnd-runtime-ubuntu16.04 as glvnd
FROM osrf/ros:kinetic-desktop-full
 
COPY --from=glvnd /usr/local/lib/x86_64-linux-gnu /usr/local/lib/x86_64-linux-gnu
COPY --from=glvnd /usr/local/lib/i386-linux-gnu /usr/local/lib/i386-linux-gnu
 
#COPY 10_nvidia.json /usr/local/share/glvnd/egl_vendor.d/10_nvidia.json
RUN echo '/usr/local/lib/x86_64-linux-gnu' >> /etc/ld.so.conf.d/glvnd.conf && \
   echo '/usr/local/lib/i386-linux-gnu' >> /etc/ld.so.conf.d/glvnd.conf && \
   ldconfig
ENV LD_LIBRARY_PATH /usr/local/lib/x86_64-linux-gnu:/usr/local/lib/i386-linux-gnu${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
# nvidia-container-runtime
ENV NVIDIA_VISIBLE_DEVICES \
   ${NVIDIA_VISIBLE_DEVICES:-all}
ENV NVIDIA_DRIVER_CAPABILITIES \
   ${NVIDIA_DRIVER_CAPABILITIES:+$NVIDIA_DRIVER_CAPABILITIES,}graphics

RUN apt-get update && \
   apt-get install -y \
   build-essential \
   libgl1-mesa-dev \
   libglew-dev \
   libsdl2-dev \
   libsdl2-image-dev \
   libglm-dev \
   libfreetype6-dev \
   libglfw3-dev \
   libglfw3 \
   libglu1-mesa-dev \
   freeglut3-dev \
   dbus

3.宿主机的其他需要
我的主机需要另外安装了docker,nvidia-docker,nvidia-docker2 ,这个安装说明很多,就不一一说了
注意:另外,虽然使用了docker 环境,但是不能保证按照步骤来都可以实现,因为毕竟主机环境还有些区别,主要是把报错解决掉,就可以了。

4.其他
本人主要使用ros环境,但是ubuntu16.04基本要被淘汰,还是建议直接上ubuntu18.04+,ubuntu18.04+的ros docker官方镜像已经做好了NVIDIA的支持,因此本文中docker file都不需要,只需要第一项的启动脚本。

5.本文的参考:
https://blog.csdn.net/weixin_39837709/article/details/109099684

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值