在Docker上运行ROS(melodic版本)机器人项目

这篇具有很好参考价值的文章主要介绍了在Docker上运行ROS(melodic版本)机器人项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言 

对于ROS机器人项目来说,运行的环境可能各不相同,有的需要在Ubuntu18.04下运行,有的需要在Ubuntu20.04下运行。运行环境的改变,产生使用Docker配置环境的需求。本人以港科大FUEL的项目为例,尝试在Docker上安装ROS-Melodic,并运行该无人机项目。在本文中,会引用到很多的链接,因为避免重复造论子,本人将踩了一路的坑总结在文章中,并找到了相应的解决办法,供读者参考,解决办法以文字或链接的形式在文中体现,大家按顺序运行即可。

 一)Docker内运行ROS(melodic版本)

1.1  Docker的安装与配置

如果安装好了Docker,本节可以跳过。

对于Docker的安装和相关配置,可以参考本人的文章。手把手教你使用Docker安装Ubuntu18.04_猪猪的超超的博客-CSDN博客本文详讲解Docker安装以及相应的配置,如取消root权限,开机自启动,阿里云加速等。最后以安装Ubuntu18.04为例,讲解了如何使用Docker进行环境的搭建。https://blog.csdn.net/weixin_65688914/article/details/133514201?spm=1001.2014.3001.5501需要注意的是,大家不需要再去安装Ubuntu18.04,因为有大神已经做好了Ubuntu18.04环境下且安装好了ROS(melodic版本)的镜像,大家只需要去拉取下面这个镜像:

osrf/ros:melodic-desktop-full

1.2  Docker拉取并配置ROS镜像

安装好Docker之后,我们需要使用Docker工具拉取大神制作的ROS镜像,参考下面博客即可:

Docker内运行ROS(melodic版本)以及使用Rviz_docker ros代码在宿主机运行-CSDN博客Docker内运行ROS(melodic版本)以及使用Rviz写在前文Docker的安装以及介绍本文就不再累述了,安装Docker的版本任意,但是要注意的一点是你是ARM板子还是x86的板子,一般在ARM板上实现上述功能较为麻烦,如果是在ARM板子上使用Docker+ROS的话可以参考这篇文章http://wiki.ros.org/docker/Tutorials/Hardware%20Acceleration#nvidia-docker1在ROS的官网上有教程,但是还是有些坑的,如果你使用的是Nvi_docker ros代码在宿主机运行https://blog.csdn.net/qq_40695642/article/details/117607446

docker ros,机器人快速入门,Docker,ubuntu,机器人,docker,无人机

1.3  一个问题的解决方案

警告:对Linux不熟悉的人慎重使用,为保险起见,你最好选择docker下的容器linux系统开发。如果在容器内也出现如下的问题,解决方法如下:

【警告或报错问题】:XDG_RUNTIME_DIR not set, defaulting to ‘/tmp/runtime-root‘

1)在/etc/profile末尾增加两句

export XDG_RUNTIME_DIR=/usr/lib/
export RUNLEVEL=3

2)然后刷新全局变量

source /etc/profile

二)Ubuntu容器环境配置

2.1  安装Openssh

sudo apt-get update ##(更新软件源)执行安装操作,如果不成功,执行第2行指令

sudo apt-get upgrade ##(继续更新软件源)执行安装操作,应该能成功 

sudo apt-get install -y openssh-server

2.2  配置Github的SSH密钥

我们先使用git clone [通过ssh协议拉取仓库],如果出现下面的问题,参考该博客即可解决。

解决方案:Permission denied (publickey). fatal: Could not read from remote repository.https://www.cnblogs.com/wmr95/p/7852832.html在配置完成之后,我们就能使用我们的Docker下的ROS(Melodic版本)的容器,来运行项目啦。

三)运行HKUST的无人机项目

我们以香港科技大学的一个无人机项目为例进行说明

GitHub - HKUST-Aerial-Robotics/FUEL: An Efficient Framework for Fast UAV ExplorationAn Efficient Framework for Fast UAV Exploration . Contribute to HKUST-Aerial-Robotics/FUEL development by creating an account on GitHub.https://github.com/HKUST-Aerial-Robotics/FUEL我们先在docker容器中,新建一个文件夹用来克隆该项目。

mkdir HKUST_FUEL

随后,我们根据github上的README文件进行操作即可

3.1  安装依赖项

  sudo apt-get install libarmadillo-dev ros-melodic-nlopt

3.2 编译源文件

新建src文件夹(用以catkin_make编译),远程拉取仓库到本地

在终端依次输入如下指令

  cd ${YOUR_WORKSPACE_PATH}/src
  git clone git@github.com:HKUST-Aerial-Robotics/FUEL.git
  cd ../ 
  catkin_make

3.3  解决catkin_make出现的问题

【问题】:cannot find -ldw

意思是找不到相应的包,因此我们需要再去安装一下相关的包

docker ros,机器人快速入门,Docker,ubuntu,机器人,docker,无人机

我们依次输入如下指令,安装好所缺的包

apt install libdw-dev

apt install libssl-dev

再去编译,在终端输入catkin_make,就可以完成编译啦! docker ros,机器人快速入门,Docker,ubuntu,机器人,docker,无人机

3.4  运行项目

我们打开两个终端,分别进入到docker容器中

在两个终端都输入如下指令

docker exec -it rocker bash        #以交互的方式运行容器

在两个终端中,都 cd 到我们运行项目的文件夹

在第一个终端输入:

  source devel/setup.bash && roslaunch exploration_manager rviz.launch

在第二个终端输入:

  source devel/setup.bash && roslaunch exploration_manager exploration.launch

 就可以看到电脑打开了rviz,并正在运行项目啦,我们点击右上角的 2D NAV Goal ,然后在地图中点击一下,就能看到无人机的建图过程啦!

docker ros,机器人快速入门,Docker,ubuntu,机器人,docker,无人机

docker ros,机器人快速入门,Docker,ubuntu,机器人,docker,无人机

 四)存在的一些问题及改进方案

4.1  问题一:rviz卡顿

项目能正常运行了,但是存在一个问题,就算rviz节目较为卡顿,而且点击最小化之后,rviz直接卡了,读者不妨试一试。这是因为docker占用和依赖的是本机的显卡资源,通过X协议在电脑中展现rviz的图像化界面。因此在运行项目时,需要注意不要将rviz最小化

4.2  问题二:打开多个终端烦琐

在3.4中,我们运行项目的时候需要打开两个终端,过程非常的烦琐,由于机器人项目经常需要打开多个终端,为了解决这个问题,对于本机来说,有实用的软件Terminator

对于Docker来说呢,向读者推荐Tmux,感兴趣的读者可以参考。

Tmux教程 (一文就够)_LYF0816LYF的博客-CSDN博客Tmux1. Tmux是什么?1.1 基本概念1.2 安装2. session操作2.1 启动2.2 分离2.3 退出2.4 绑定、解绑、切换session2.5 重命名session3. window操作3.1 新建窗口tmux new-window3.2 切换窗口3.3 重命名窗口4. pane操作4.1 划分窗格4.2 光标位置4.4 关闭窗格5. 其他操作5.1 tmux上下翻屏使用教程网上相关的Tmux教程很多,可是看完感觉不是太细就是太散,有一些不常用的操作、快捷键也写出来了,感觉重点不够突出_tmux教程https://blog.csdn.net/CSSDCC/article/details/121231906

总结

本文详细讲解了如何在Docker中运行ROS项目,并以香港科技大学的无人机项目为例,进行解释说明。旨在手把手教会读者上手Docker,并成功运行一个ROS机器人项目。文章来源地址https://www.toymoban.com/news/detail-734332.html

到了这里,关于在Docker上运行ROS(melodic版本)机器人项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • ubuntu20.04_ROS中运行gazebo控制机器人模型报错

    1.无法启动类型为[controller_ manager/spawner]的节点:controller_ manager ERROR: cannot launch node of type [controller_manager/spawner]: controller_manager ROS path [0]=/opt/ros/noetic/share/ros ROS path [1]=/home/lym/catkin_ws/src ROS path [2]=/opt/ros/noetic/share 解决办法:安装controller_manager 2.控制器生成程序找不到预期的控

    2024年02月16日
    浏览(46)
  • ROS 2机器人编程实战:基于现代C++和Python 3实现简单机器人项目

    💂 个人网站:【海拥】【摸鱼游戏】【神级源码资源网】 🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】 💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 ROS 2是机器人开发领域中广泛使用的一个框架,ROS 2提供了很多功能强大的工具和

    2024年02月02日
    浏览(55)
  • 机器人项目:从 ROS2 切换到 ROS1 的原因

             机器人操作系统ROS是使用最广泛的机器人中间件平台。它在机器人社区中使用了10多年,无论是在业余爱好者领域还是在工业领域。ROS可用于各种微控制器和计算机,从Arduino到Raspberry Pi再到Linux工作站,它为电机控制器,视觉传感器,深度摄像头和激光扫描仪提供

    2024年02月12日
    浏览(37)
  • 仿真机器人-深度学习CV和激光雷达感知(项目2)day03【机器人简介与ROS基础】

    💫你好,我是辰chen,本文旨在准备考研复试或就业 💫本文内容是我为复试准备的第二个项目 💫欢迎大家的关注,我的博客主要关注于考研408以及AIoT的内容 🌟 预置知识:基本Python语法,基本linux命令行使用 以下的几个专栏是本人比较满意的专栏 (大部分专栏仍在持续更新

    2024年01月19日
    浏览(50)
  • ROS从入门到精通10-1:项目实战之智能跟随机器人原理与实现

    本专栏旨在通过对ROS的系统学习,掌握ROS底层基本分布式原理,并具有机器人建模和应用ROS进行实际项目的开发和调试的工程能力。 🚀详情:《ROS从入门到精通》 机器人是传感器网络、通信、人工智能、分布式计算、自动化等多种技术的集大成者, 机器人技术的发展水平标

    2024年02月07日
    浏览(44)
  • 【运动规划算法项目实战】如何实现机器人多目标点导航(附ROS C++代码)

    在ROS机器人应用中,实现机器人多目标点导航是非常常见的需求。本文将介绍如何使用ROS和actionlib来实现机器人的多目标点导航,目标点信息将被记录在YAML文件中。 我们可以通过使用MoveBaseAction来实现机器人的导航功能。MoveBaseAction是一个ROS中的action类型,它提供了控制机器

    2024年02月10日
    浏览(42)
  • Gazebo-Ros搭建小车和场景并运行slam算法进行建图4--为机器人添加运动控制器控制其移动

    1.要想机器人小车在gazebo中运动还需要为其添加运动插件 在文章3中的my_robot2.urdf 最下边(前边)添加如下部分: ​ 这里使用的二轮差速控制,选择对应的插件libgazebo_ros_diff_drive.so 添加上述部分,文章3中的my_robot2.urdf 更新为 --完整代码如下: 2.使用turtlebot3中的控制机器人的

    2023年04月11日
    浏览(93)
  • linux环境下监控docker进程运行情况,使用钉钉群机器人报警异常服务

    背景:在linux环境下,很多服务我们都使用docker来跑,很是方便,容器服务独立,配置独立,数据独立等等,但是有个问题,就是如果某个服务异常了,暂停了,停止了,一直重启中,我们要怎么及时的知道是哪个服务,并进行处理,保证业务正常运行。 本文主要介绍使用

    2024年02月13日
    浏览(45)
  • 如何在群晖Docker运行本地聊天机器人并结合内网穿透发布到公网访问

    随着ChatGPT 和open Sora 的热度剧增,大语言模型时代,开启了AI新篇章,大语言模型的应用非常广泛,包括聊天机器人、智能客服、自动翻译、写作助手等。它们可以根据用户输入的文本生成相应的响应,提供个性化的建议和服务,目前大部分大语言模型的产品都是基于网络线上的

    2024年04月11日
    浏览(45)
  • ROS的机器人协议:实现机器人之间的有效通信

    作者:禅与计算机程序设计艺术 ROS(Robot Operating System)是一个开源的机器人操作系统,其功能主要包括以下几个方面: 消息传递:ROS通过消息传递的方式进行通信,各个节点之间可以通过发布、订阅等方式互相通讯。 资源管理:ROS可以对进程、线程、资源进行管理,使得不

    2024年02月06日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包