docker上运行ros

docker上运行ros

1、方法一:使用小鱼的一键安装工具

wget http://fishros.com/install -O fishros && . fishros 

优点:快速、便捷
缺点:我在虚拟机上构建docker容器后可以顺利运行,并可以顺利运行rviz和和gazebo;但是在双系统的ubuntu18上构建docker容器后无法运行rviz和docker,估计是显卡驱动这一块的问题,折腾了一天,没解决,放弃!

2、方法二:使用wiki社区的方法
注意:这个是在nvidia-docker2上进行构建的
1)创建目录并构建Dockerfile文本

mkdir my_melodic_image
cd my_melodic_image
touch Dockerfile

2)进入Dockerfile文件,并将以下文本复制到Dockerfile

sudo gedit Dockerfile
FROM osrf/ros:melodic-desktop-full

# nvidia-container-runtime
ENV NVIDIA_VISIBLE_DEVICES \
    ${NVIDIA_VISIBLE_DEVICES:-all}
ENV NVIDIA_DRIVER_CAPABILITIES \
    ${NVIDIA_DRIVER_CAPABILITIES:+$NVIDIA_DRIVER_CAPABILITIES,}graphics

3)在my_melodic_image文件夹下编译Dockerfile

cd my_melodic_image/
docker build -t my_melodic_image .

4)创建运行镜像的bash脚本并将以下文本复制到里面

sudo gedit run_my_image.bash 
XAUTH=/tmp/.docker.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" \
    --runtime=nvidia \
    my_melodic_image \
    bash

5)更改脚本权限,使脚本可以运行

chmod a+x run_my_image.bash

6)执行脚本

./run_my_image.bash

7)最后进入容器并运行rviz

roscore > /dev/null & rosrun rviz rviz

注意:wiki社区提供的方法有nvidia-docker1跟nvidia-docker2两种,可以根据自己电脑安装的nvidia-docker版本来选择对应的方法

我使用了这种方法,顺利在docker容器中运行rviz和gazebo

相关资料:
1)https://zhuanlan.zhihu.com/p/493274143
2)http://wiki.ros.org/docker/Tutorials/Hardware%20Acceleration#nvidia-docker2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值