使用鱼香ros一键安装ros_docker或者ros2_docker时,挂载主机usb和使用主机网络

前言

因为本人系统使用ubuntu22.04,所以无法直接安装ros1,也尝试过从源码进行编译,但是以失败告终,所以便想到使用docker安装ros-noetic版本,在使用鱼香 ros一键安装的过程中,发现安装脚本并没有挂载usb设备和网络,所以有了本篇博客。

安装流程

一 确保已经安装docker

  • (我觉得是废话)

二 拉取docker镜像

使用如下命令:

sudo docker pull [name]

这里[name]里面填写的东西我就直接copy鱼香ros大大的了(一键安装脚本里面的)

fishros2/ros:noetic-desktop-full
fishros2/ros:humble-desktop-full
fishros2/ros:foxy-desktop
osrf/ros:galactic-desktop
osrf/ros:iron-desktop-full
fishros2/ros:melodic-desktop-full
osrf/ros:rolling-desktop-full
osrf/ros:kinetic-desktop-full
osrf/ros:eloquent-desktop
osrf/ros:dashing-desktop
osrf/ros:crystal-desktop
osrf/ros:bouncy-desktop
osrf/ros:ardent-desktop
osrf/ros:lunar-desktop
osrf/ros:indigo-desktop-full

按需选择就行

三 创建容器

这一步是最关键的
直接贴命令

sudo docker run -dit \
--name=[your_container_name] \
--privileged  \
-v /dev:/dev \
-v /home/[your_username]:/home/[your_username] \
-v /tmp/.X11-unix:/tmp/.X11-unix  \
-e DISPLAY=unix$DISPLAY \
-w /home/[your_username] \
--net=host \
[上面镜像的名字]

[your_container_name]就是你的容器的名字(后面要用),[your_username]就是你的用户名。这一步直接简单粗暴的将/dev下的内容全部映射,一劳永逸解决问题()
参考链接:
https://www.bilibili.com/read/cv25771461/
原脚本是这样写的

command_create_x11 = "sudo docker run -dit --name={} -v {}:{} -v /tmp/.X11-unix:/tmp/.X11-unix {} -v /dev/dri:/dev/dri {} -e DISPLAY=unix$DISPLAY -w {}  {}".format(container_name,home,home,use_dri,use_snd,home,RosVersions.get_image(name))

这个脚本在安装的时候,–device挂载了–device=/dev/dri/renderD128和–device=/dev/snd。

四 编写启动脚本

鱼香ros大大的一键安装脚本最后会在~/.fishros/bin下生成一个[your_container_name]文件,这个文件的内容如下:

  • 文件中的[your_container_name]全部使用ros代替
xhost +local: >> /dev/null
echo "请输入指令控制ros: 重启(r) 进入(e) 启动(s) 关闭(c) 删除(d) 测试(t):"
read choose
case $choose in
s) docker start ros;;
r) docker restart ros;;
e) docker exec -it ros /bin/bash;;
c) docker stop ros;;
d) docker stop ros && docker rm ros1_1 && sudo rm -rf /home/[your_username]/.fishros/bin/ros;;
t) docker exec -it ros  /bin/bash -c "source /ros_entrypoint.sh && roscore";;
esac
newgrp docker

新建这个文件,复制内容,修改ros[your_username]
然后在~/.bashrc中添加环境变量export PATH=$PATH:/home/[your_username]/.fishros/bin/
最后source ~/.bashrc即可

五 检查安装

在终端中输入ros(就是前面的[your_container_name])在这里插入图片描述
输入t,自动运行roscore
在这里插入图片描述
安装成功,然后就可以输入e进入容器,可以使用rviz确认是否挂载成功,本人使用使用了激光雷达进行验证,结果是可以使用的
在这里插入图片描述

结束

虽然这个过程很简单,但是还是踩雷不少,希望这篇博客可以有一些帮助!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值