如何像正常使用ROS一样使用Docker ROS?Ubuntu22.04在docker中安装noetic版本ROS

这篇具有很好参考价值的文章主要介绍了如何像正常使用ROS一样使用Docker ROS?Ubuntu22.04在docker中安装noetic版本ROS。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

自从买了新电脑,遇到的麻烦接连不断。先是安装Ubuntu系统安装不上,安装完成之后网卡、触控板等硬件都没有打上驱动,折腾了老半天,把ubuntu的内核升级到了Ubuntu20.04所支持的最高版本,然而还是没有解决驱动的问题,遂一气之下将系统升级为了Ubuntu22.04,这一次安装完系统后驱动全部自动打好,之前的各种小毛病也消失了。

但是问题来了,鄙人习惯于使用Ubuntu20.04+ROS1 noetic进行开发,而Ubuntu22.04不支持ROS1,遂决定使用Docker ROS。因此我学习Docker仅仅是为了能够让Docker ROS使用起来和直接装在环境一样。

以下内容权且当作我的学习笔记。

Docker及其命令简介

1、Docker基本概念:

docker 镜像(image)与容器(container)的关系:

镜像:只读的模板,可以用来创建container容器

容器:在镜像之上的可编辑层

要使用Docker ROS,首先要有一个Docker镜像,然后使用docker run命令生成一个docker容器,而我们要使用的ROS就运行在这个容器里面。

2、Docker常用命令

1、镜像Image命令:
{image:tag}→{镜像名称:镜像版本号}

注:版本号默认是latest

docker images  # 查看本机镜像列表

docker rmi {-f} {image}  # 删除镜像(-f强制删除)

docker search {image}  # 搜索镜像

docker pull {image:tag}  # 拉取镜像

docker system df  # 查看镜像容器所占的空间
2、容器Container命令
docker ps -a  # 查看本机所有container

docker rm {container_name}  # 删除container

docker start {container_name}  # 打开container

docker stop {container_name}  # 关闭container

docker exec -it {container_name} /bin/bash  # 进入container
3、Docker服务命令:
syetemctl start docker  # 启动docker

systemctl stop docker  # 停止docker

systemctl restart docker  重启docker

查看docker状态: systemctl status docker

查看docker概要信息:docker info
4、Docker run命令:
# 后面会讲

Docker ROS的安装与配置

1、安装docker和镜像

直接使用鱼香ROS一键安装(使用鱼香ROS只是为了安装docker镜像)

小鱼的一键安装系列 | 鱼香ROS (fishros.org.cn)

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

选择noetic版本,安装过程中要输入container名称。安装完成之后应会生成一个你自己命名的container,输入名称即可进入。其实docker ros已经安装完了,但是这个container并不好用(没有nvidia-container-toolkit,没有串口且无法实现局域网通信),因此需要一些操作重新docker run一个container出来使用。

安装完成之后直接输入命令把container删掉,留下镜像就行。

输入以下命令:

docker images  # 查看镜像列表

显示如下图:

docker 安装ros noetic,docker,容器,ubuntu,linux

这个fishros2/ros:noetic-desktop-full就是我们要使用的镜像。(其他镜像是我自己装的,请忽视)

2、使用docker run命令生成一个我们需要的容器,并制作启动脚本

以下操作参考了这篇文章,欢迎大家前去围观:

针对ros机器人开发同学的docker入门教程 - 哔哩哔哩 (bilibili.com)

这个up@我不是姓崔的还做了视频:

【教程向】机器人专业Docker入门指南【鱼香ros】_哔哩哔哩_bilibili

我在学习的时候也参考学习了这篇文章,这里把我使用到的部分列出来:

1、docker run命令生成容器

直接说答案:

sudo docker run -dit \

--name={输入container的名称} \

--privileged  \

-e DISPLAY=unix$DISPLAY \

-w /home/{ubuntu用户名} \

--net=host \

-v /dev:/dev \

-v /home/{ubuntu用户名}:/home/{ubuntu用户名} \

-v /tmp/.X11-unix:/tmp/.X11-unix  \

fishros2/ros:noetic-desktop-full

#--gpus all \  # 如果安装了nvidia-container-toolkit,可以加上这一行

其中比较关键的是-v命令,其能够将docker内的文件夹内容与我们的主机实时映射,作用类似于VMware虚拟机的共享文件夹。关于容器数据卷详细教程可以参考这个视频:

30_容器数据卷能干嘛_哔哩哔哩_bilibili

2、如何像鱼香的docker ros一样打开和关闭ROS的container

鱼香ROS安装的容器可以输入容器名称这样进入,如下图所示:

docker 安装ros noetic,docker,容器,ubuntu,linux

但是你创建的容器的开关和进入需要使用以下命令,非常麻烦:

docker start {container_name}  # 打开container

docker stop {container_name}  # 关闭container

docker exec -it {container_name} /bin/bash  # 进入container

其实鱼香ROS不过是使用了脚本来进行启动,其脚本位置在/home/{用户名}/.fishros/bin/

以下是一键生成脚本的python文件

def generate_shell_file(container_name):
    shell_content = f'''
xhost +local: >> /dev/null
echo "请输入指令控制{container_name}: 重启(r) 进入(e) 启动(s) 关闭(c) 删除(d) 测试(t):"
read choose
case $choose in
r) docker restart {container_name};;
e) docker exec -it {container_name} /bin/bash;;
s) docker start {container_name};;
c) docker stop {container_name};;
d) docker stop {container_name} && docker rm {container_name} && sudo rm -rf /home/kr/.fishros/bin/ros;;
t) docker exec -it {container_name} /bin/bash -c "source /ros_entrypoint.sh && roscore";;
esac
newgrp docker
'''
    with open('/home/{user_name}/.fishros/bin/'+f'{container_name}', 'w',encoding='utf-8') as file: # 把{user_name}改成自己的用户名
        file.write(shell_content)

container_name = input("请输入容器名称:")
generate_shell_file(container_name)
print("Shell文件已生成!")

输入以下命令:

su -
python3 container_shell_producer.py

生成脚本成功后,还需要为其添加可执行权限:

cd /home/{user_name}/.fishros/bin/
chmod +x {脚本名称}

输入容器名称即可启动脚本,轻松启动关闭进入容器。

此时docker ros使用起来已经和20.04+noetic大差不差了。文章来源地址https://www.toymoban.com/news/detail-853987.html

到了这里,关于如何像正常使用ROS一样使用Docker ROS?Ubuntu22.04在docker中安装noetic版本ROS的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [Ubuntu 22.04] Docker安装及使用

    使用脚本自动安装 安装完成后验证 1. 拉取镜像并启动容器 注 :OPTION是参数,TAG是标签(版本号) 以Ubuntu 20.04为例,如下: 2. 创建容器 镜像拉取完成后,可以使用以下命令创建并启动一个基于 Ubuntu 20.04 镜像的容器 这将创建一个交互式的终端会话,可以在 Ubuntu 20.04 容器内

    2024年01月17日
    浏览(47)
  • 关于Ubuntu22.04,ros2-humble环境下,使用gazebo遇到的问题。

    遇到的问题: 打开gazebo时出现error:process has died的报错,虽然仍然可以打开gazebo,但是gazebo显示的并不是launch文件调用的world文件与urdf文件内容,可能显示前次使用gazebo时的内容,或者出现机器人模型乱转的情况。 问题原因: 前次使用gazebo后,没有完全关闭gazebo,尤其是

    2024年02月15日
    浏览(47)
  • Ubuntu22.04安装ROS2

    更新 apt 库 安装语言编码并且设置格式: 更新软件源 ps:如果在第三条命令输入之后出现了一下警告或者类似报错,如果没有,直接跳到第四步即可 解决办法就是设置 hosts 的域名位置跳转 List item 打开浏览器并且输入然后粘贴进入:https://www.ipaddress.com 在下面的输入栏中键入

    2024年02月02日
    浏览(45)
  • ubuntu22.04 virt-manager bridge虚拟机ip 一样

    ubuntu22.04 virt-manager 创建 ubuntu20.04 live-server 虚拟机,创建好后,使用bridge网络,正常运行。 clone虚拟机启动后,发现虚拟机的ip都一样,重启无效。 解决办法,把复制的虚拟机 hostname,改掉。 在virt-manager - edit - connection details - Virtual Networks,选择 xml。 添加 host mac=\\\'**\\\" name=“

    2024年01月17日
    浏览(36)
  • 【ROS系统】Ubuntu22.04系统中安装ROS2系统

    参考博客:ROS 安装详细教程 —— Ubuntu22.0.4 LTS 安装 首先,我们需要一个Ubuntu系统。 终端输入指令: 从ubuntu系统界面进行设置: 设置-软件升级-Ubuntu software- source code 为source code选择国内镜像源 确定镜像源可用 通过检查此命令的输出,确保已启用Ubuntu Universe存储库。 apt-ca

    2024年04月27日
    浏览(53)
  • ubuntu 22.04源码装ros1 noetic

    参考链接 https://gist.github.com/Meltwin/fe2c15a5d7e6a8795911907f627255e0 参考:https://blog.csdn.net/zyh821351004/article/details/135519444?spm=1001.2014.3001.5501 sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list sudo gedit /usr/lib/python3/dist-packages/rosdep2/sources_list.py sudo gedit /usr/lib/python3/dist-packages/rosdep2/rep3.py sudo g

    2024年01月16日
    浏览(62)
  • 在Ubuntu22.04系统安装ROS Humble Hawksbill

    目录 一、简述 二、下载安装虚拟机 2.1下载 2.2安装虚拟机 2.3安装Ubuntu系统  三、安装ros 3.1设置编码 3.2添加源 3.3安装ros 3.4设置环境变量 四、检验是否安装成功 五、常见问题说明 ROS Humble Hawksbill 是 ROS 2 的第八个版本。它是最新的长期支持版本的 ROS 2 发行版,可以轻松安装

    2024年02月16日
    浏览(50)
  • (Ubuntu22.04 Jammy)安装ROS2 Humble

    提示:以下内容是已经安装了ubuntu22.04 下进行安装ros2 请确保区域设置支持UTF-8,我们使用以下设置进行测试。 需要将ROS2 apt存储库添加到您的系统中,首先确保Ubuntu Universe存储库已启用。 接着添加带有apt的ROS 2 GPG密钥 然后将存储库添加到源列表中 设置存储库后,更新您的a

    2024年02月01日
    浏览(51)
  • Ubuntu22.04 apt 安装 ROS1 ROS Noetic Ninjemys

    众所周知ROS2还有很多功能没有移植,而ROS1官方不再支持 Ubuntu20.04 之后的版本。另一方面Ubuntu22.04 更新了很多对新硬件的驱动,有更好的兼容性和体验,这就变的很纠结。 如果想在 22.04 使用最新版本的 ROS Noetic 只有自己编译一个办法。编译整套ROS。 对于初学者来说是个不小

    2024年04月11日
    浏览(81)
  • ROS2学习(一):Ubuntu 22.04 安装 ROS2(Iron Irwini)

    一、ROS2(Iron Irwini)介绍 官方文档 Iron Irwini版本支持的平台如下: 二、ROS2(Iron Irwini)安装 1.设置编码 2.使能代码库 现在用apt添加带ROS 2 GPG 将存储库添加到源列表中 3.安装ROS2 Iron 三、ROS2测试 在terminal 1 运行下面的指令: 在terminal 2 运行下面的指令: 四、ROS2卸载 删除RO

    2024年02月10日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包