Ubuntu18.04安装ROS Melodic(详细填坑)

Ubuntu18.04安装ROS Melodic(详细填坑)

最近学习ROS Melodic,网上有一些安装教程,但是不够详细,自己动手做了下,随手记下整个安装流程,并详细记录细节和遇到的问题,为后来者节省10来分钟足矣。本文参考《机器人开发实战》,作者无为斋主。
ROS作为目前最受欢迎的机器人操作系统,它的核心代码采用C++编写并经由BSD许可发布。ROS源于2007年斯坦福大学和机器人技术公司Willow Garage合作项目Switchyard。2012年,ROS团队从Willlow Garage独立出来,并成立了一家非营利组织,即开源机器人基金会(Open Source Robotics Foundation, OSRF),ROS自2013年起移交该基金会管理。
自2010年3月推出第一个发行版Box Turtle以来,ROS以每年1~2个版本的节奏已经发行了多个版本。ROS作为次级操作系统,官方推荐基于Ubuntu操作系统运行,并跟随Ubuntu发布节奏发布,在偶数年发布维护周期为5年的长期演进版本,奇数年发布维护周期为2年的普通版本。但2019年未发布新版本。ROS已发布的历史版本如表1-1所示。

表1-1 ROS的历史版本

发行版本 发布日期 截止日期 Ubuntu版本 备注
Melodic Morenia 2018年5月 2023年5月 18.04 LTS LTS
Lunar Loggerhead 2017年5月 2019年5月 17.04
Kinetic Kame 2016年5月 2021年5月 16.04 LTS LTS
Jade Turtle 2015年5月 2017年5月 15.04
Indigo Igloo 2014年7月 2019年4月 14.04 LTS LTS
Hydro Medusa 2013年9月 2015年5月 13.04
Groovy Galapagos 2012年12月 2014年7月 12.10
Fuerte Turtle 2012年4月 12.04 LTS
Electric Emys 2011年8月 11.10
Diamondback 2011年3月 11.04
C Turtle 2010年8月 10.04 LTS
Box Turtle 2010年3月 9.10

文章采用ROS版本为ROS Melodic,操作系统为Ubuntu 18.04 LTS 64bit。操作系统安装教程请参考作者上一篇博文推荐的链接。
详细安装步骤如下:

1.设置安装源

为了安装ROS Melodic,首先需要在Ubuntu 18.04 LTS上添加安装源到source.list,方法如下:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' 

另外ROS提供了国内的安装源,添加国内中国科学技术大学的安装源示例代码如下:

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

2.添加秘钥

添加秘钥到本地的trusted数据库中并加以验证,方法如下:

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

若密钥服务器hkp://ha.pool.sks-keyservers.net:80无法添加成功,则可以尝试hkp://pgp.mit.edu:80或者hkp://keyserver.ubuntu.com:80。
在更新之前,需要安装公钥,否则无法验证签名,这一步也是原书没有的,需要朋友们注意,命令如下:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654

3.更新列表

更新Ubuntu 18.04 LTS的最新可用软件包列表:

sudo apt update

4.开始安装

下面开始安装ROS,推荐安装桌面完整版,这样就可以将ROS、rqt、rviz、机器人通用库、2D/3D仿真器、导航、2D/3D感知等功能一次性安装完成。
安装之前,需要安装其他依赖库,一次性安装如下:

sudo apt install libvtk6-jni libvtk6-java libvtk6-dev libvtk6-qt-dev libpcl-dev
sudo apt install ros-melodic-pcl-conversions ros-melodic-pcl-ros ros-melodic-perception-pcl ros-melodic-perception

有的人之前安装过某些库,我的机器之前安装opencv时装过vtk7,版本不兼容,识别不到,所以不得已卸载后安装vtk6,最好把这些库的安装都执行一遍。
最后终于开始安装ROS Melodic,方法如下:

sudo apt install ros-melodic-desktop-full

如果希望安装特定的ROS程序包,则可以首先查看当前可用的程序包列表,然后选择自己需要的程序包进行安装,示例代码如下:

apt-cache search ros-melodic
sudo apt install ros-melodic-slam-gmapping

5.安装核心组件rosdep

开始使用ROS之前,还需要安装rosdep,rosdep是ROS一些核心组件的运行基础,会在编译ROS源码时检查和安装程序包依赖。安装ROS方法如下:

sudo rosdep init
# fix-permission限制权限为当前用户
sudo rosdep fix-permissions
# 可能由于网络原因会失败,多运行几次即可
rosdep update

6.配置ROS环境变量

默认情况下,ROS_HOME的路径为"~/.ros",该目录保存着日志文件和测试结果文件。另外,第一次启动ROS时,需要进行环境变量配置,命令如下:

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

查看环境变量是否设置正确,命令如下:

env | grep ROS  

笔者查看环境变量结果如下:

ROS_ETC_DIR=/opt/ros/melodic/etc/ros
ROS_ROOT=/opt/ros/melodic/share/ros
ROS_MASTER_URI=http://localhost:11311
ROS_VERSION=1
ROS_PYTHON_VERSION=2
ROS_PACKAGE_PATH=/opt/ros/melodic/share
ROSLISP_PACKAGE_DIRECTORIES=
ROS_DISTRO=melodic

至此,ROS的核心程序包安装完毕。

7.安装rosinstall

为了构建和管理开发者自己的ROS工作空间,还需要安装rosinstall,方法如下:

sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

成功安装后,就可以体验ROS和创建ROS应用了。

8.学习ROS源码

如果希望基于ROS源代码进行学习,则可以下载完整的ROS源代码,方法如下:

sudo apt-get install python-rosdep python-rosinstall-generator python-rosinstall python-wstool build-essential 
mkdir ~/ros_catkin_ws/ && cd ~/ros_catkin_ws/
rosinstall_generator desktop_full --rosdistro melodic --deps --tar > melodic-desktop-full.rosinstall
wstool init -j8 src melodic-desktop-full.rosinstall 

ROS将使用wstool进行版本管理。如果希望在网络发生中断后可以以断点续传的方式继续下载,那么命令如下:

wstool update -j 8 -t src

至于如何通过ROS源代码学习ROS的更多实现细节,可以在Ubuntu 18.04 LTS下通过安装oepngrok进行浏览,笔者打算在下一篇文章中介绍。

9.启动小海龟

turtlesim时ROS系统自带的小海龟仿真程序。分步骤介绍如下:

1.启动节点管理器

为了启动turtlesim,首先运行roscore启动ROS的节点管理器,方法及结果如下:

simon@bert:~$ roscore
... logging to /home/simon/.ros/log/6b8e52d4-1597-11ea-ade6-000ec6c8c4f9/roslaunch-bert-2594.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://bert:44267/
ros_comm version 1.14.3


SUMMARY
========

PARAMETERS
 * /rosdistro: melodic
 * /rosversion: 1.14.3

NODES

auto-starting new master
process[master]: started with pid [2604]
ROS_MASTER_URI=http://bert:11311/

setting /run_id to 6b8e52d4-1597-11ea-ade6-000ec6c8c4f9
process[rosout-1]: started with pid [2615]
started core service [/rosout]

roscore会启动一个ROS Master、一个ROS参数服务器和一个名为rosout的日志节点。ROS Master默认运行于11311端口,如果想指定端口,可参照如下:

roscore -p 11312

2.启动ros节点

利用Ctrl+Shift+T快捷键另外打开一个终端,启动turtlesim的节点turtlesim_node,命令如下:

simon@bert:~$ rosrun turtlesim turtlesim_node
[ INFO] [1575452194.366400729]: Starting turtlesim with node name /turtlesim
[ INFO] [1575452194.371807393]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]

3.使用键盘

如果希望小海龟能够移动,可以启动turtlesim的键盘控制节点turtle_teleop_key,利用Ctrl+Shift+T快捷键另外再打开一个终端,输入命令:

simon@bert:~$ rosrun turtlesim turtle_teleop_key
Reading from keyboard
---------------------------
Use arrow keys to move the turtle.

在当前终端下,按住方向键即可控制小海龟移动,截图如下:
移动小海龟
好了,赶快去试试吧,欢迎留言讨论~

发布了7 篇原创文章 · 获赞 18 · 访问量 2168

猜你喜欢

转载自blog.csdn.net/shao918516/article/details/103384095