前言
对于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
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
意思是找不到相应的包,因此我们需要再去安装一下相关的包
我们依次输入如下指令,安装好所缺的包
apt install libdw-dev
apt install libssl-dev
再去编译,在终端输入catkin_make,就可以完成编译啦!
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 ,然后在地图中点击一下,就能看到无人机的建图过程啦!
四)存在的一些问题及改进方案
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文章来源:https://www.toymoban.com/news/detail-734332.html
总结
本文详细讲解了如何在Docker中运行ROS项目,并以香港科技大学的无人机项目为例,进行解释说明。旨在手把手教会读者上手Docker,并成功运行一个ROS机器人项目。文章来源地址https://www.toymoban.com/news/detail-734332.html
到了这里,关于在Docker上运行ROS(melodic版本)机器人项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!