前言
对于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镜像,参考下面博客即可:
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的无人机项目
我们以香港科技大学的一个无人机项目为例进行说明。
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 [email protected]: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,感兴趣的读者可以参考。
总结
本文详细讲解了如何在Docker中运行ROS项目,并以香港科技大学的无人机项目为例,进行解释说明。旨在手把手教会读者上手Docker,并成功运行一个ROS机器人项目。