连载文章,长期更新,欢迎关注:


写在前面

第1章-ROS入门必备知识

        1.1 ROS简介

        1.2 ROS开发环境搭建

        1.3 ROS系统架构

        1.4 ROS调试工具

        1.5 ROS节点通信

        1.6 ROS其他重要概念

        1.7 ROS2.0展望

第2章-C++编程范式

第3章-OpenCV图像处理

第4章-机器人传感器

第5章-机器人主机

第6章-机器人底盘

第7章-SLAM中的数学基础

第8章-激光SLAM系统

第9章-视觉SLAM系统

第10章-其他SLAM系统

第11章-自主导航中的数学基础

第12章-典型自主导航系统

第13章-机器人SLAM导航综合实战


为了后面能进行ROS的实战讲解,我们要先搭建好ROS的开发环境,接下来就按照安装ROS、构建工作空间、配置网络通信、使用集成开发工具的顺序进行环境搭建。

1.2.1 ROS安装

使用ROS进行机器人的开发,一般需要机器人工作台两个部分。机器人通常选择性价比和功耗占优势的ARM嵌入式板作为主机;工作台大多选择X86台式或笔记本电脑作为主机。虽然ROS支持多种操作系统,但在其原生的操作系统Ubuntu Linux上支持得最好。所以为了避免不必要的麻烦,推荐大家在Ubuntu上安装ROS。ARM嵌入式板的厂家一般都会提供相应的定制化Ubuntu系统,定制化主要体现在硬件外设驱动和一些加快系统运行速度的优化,作为软件开发人员可以不必考虑这些问题直接当做普通的Ubuntu使用就行了。X86主机的话直接安装官方发布的Ubuntu系统就行了,你可以直接选择将Ubuntu安装到物理机,也可以将Ubuntu安装到虚拟机。不管是采用何种硬件,在硬件上以何种方式安装Ubuntu或定制化Ubuntu,一旦我们拥有了一个可用的Ubuntu系统,就可以在这个Ubuntu系统上安装当下最流行的ROS发行版了。安装ROS的软硬件配置总结,如图1-3所示。

 图1-3  安装ROS的软硬件配置总结

1.Ubuntu18.04安装

安装ROS前,要先装好Ubuntu,本书推荐安装Ubuntu18.04和ROS melodic。第1章只讲解ROS的内容,还不涉及机器人上的具体操作,所以在X86工作台电脑上用虚拟机安装Ubuntu18.04,然后安装ROS melodic,供学习ROS之用已经足够了。受篇幅限制,用虚拟机安装Ubuntu18.04的具体步骤就不展开了,请参考书后的附录A。推荐使用虚拟机的好处是,我们可以随时对关键步骤的快照存档,当后续操作损坏到系统,可以回滚到前面的存档。至于机器人上的Ubuntu18.04和ROS melodic安装,将在第5章中讲解。

2.ROS melodic安装

在X86电脑的工作台上用虚拟机安装好Ubuntu18.04后,就可以开始ROS melodic的安装了。下面的安装步骤中有些太长的命令会被自动换行,如有疑问,可以直接去看官方wiki中的ROS安装教程将会更清楚。

(1)配置Ubuntu的资源库

打开如图1-4所示的资源库配置界面,确保“restricted”、“universe”、“multiverse”都被勾选了,下载服务器选择“Server for China”,这样下载更新软件会更快一点。一般情况,上述选项默认就是设置好了的。

 图1-4  配置Ubuntu的资源库

(2)配置sources.list

设置sources.list是为了告诉Ubuntu应该去什么地址下载ROS的软件库。打开命令行终端,输入下面的命令。

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

(3)设置keys

在命令行终端,直接输入下面的命令。

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

(4)安装ros-melodic-desktop-full完整版

由于我们是在工作台电脑上安装ROS,资源基本不受限制,所以直接安装完整版的ROS,把能装的东西尽量都装上去。先运行下面的命令,更新一下Ubuntu系统下载软件包的索引。

sudo apt update

更新完索引,运行下面的命令安装完整版的ROS。安装过程需要持续很长的时间,请耐心等待。如果安装过程中提示下载错误之类的问题,请耐心重试命令,这种错误多半是由网络故障造成的。

sudo apt install ros-melodic-desktop-full

(5)初始化rosdep

在后面开发ROS的功能包程序时,可以用rosdep工具自动的安装功能包程序的各种依赖库。所以,这里要对rosdep做一下初始化,依次执行下面的两句命令。

sudo rosdep init
rosdep update

这里运行sudo rosdep init的时候,会报站点访问不了的错误。这个问题可以暂时不用管,先跳过这一步,继续往下,等后面需要用到rosdep再来解决吧。

(6)配置环境变量

要使用系统空间中的程序和工具,需要先激活系统空间。请使用下面两句命令,激活系统空间。

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

(7)包编译依赖安装

安装以下工具和依赖,将用于后面功能包的编译。

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

到这里,ROS就算安装好了。打开命令终端输入roscore命令测试一下,如果能正常启动,那么恭喜你成功了。

1.2.2 ROS文件组织方式

安装完ROS之后,我们有必要对ROS的文件组织方式进行了解。ROS的文件被放在系统空间和工作空间两个地方。

1.系统空间

系统空间就是存放ROS系统安装包的目录,在/opt/ros/目录中,里面存放着roscore、rviz、rqt等ROS的核心程序和工具,文件是二进制形式,用户不可修改。要使用系统空间中的程序和工具,需要先激活系统空间。请使用下面两句命令,激活系统空间。

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

2.工作空间

工作空间是用户开发自己程序的目录,由用户自行创建。工作空间中存放各种用户自己开发的功能包程序,文件是源代码形式,用户可自由修改。用户可根据需要创建多个工作空间,下面就来在~/目录新建一个名称叫catkin_ws的工作空间,具体命令如下。

#新建文件夹
mkdir -p ~/catkin_ws/src
#初始化src目录
cd ~/catkin_ws/src
catkin_init_workspace
#对工作空间进行首次编译
cd ~/catkin_ws
catkin_make

要使用工作空间中的程序和工具,同样需要先激活该空间。请使用下面两句命令,激活该空间。

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

3.ROS功能包安装与升级方法

在ROS的开源社区中,有非常多的功能包,涵盖传感器驱动、算法、工具等。可以直接用apt的方式安装二进制格式的功能包到我们的系统空间,也可以下载功能包的源码到我们的工作空间然后手动编译。如果我们要对一些功能包进行修改或升级,可以将该功能包的源码下载到工作空间后修改并编译,工作空间的功能包能直接覆盖系统空间同名的功能包。也可以直接用apt卸载系统空间的功能包,然后将该功能包的源码下载到工作空间后修改编译。安装和卸载系统空间中功能包的命令如下。

#安装功能包到系统空间,将PACKAGE替换成实际的功能包名称
sudo apt install ros-melodic-PACKAGE
#卸载系统空间的功能包,将PACKAGE替换成实际的功能包名称
sudo apt remove ros-melodic-PACKAGE

1.2.3 ROS网络通信配置

前面已经提到过ROS分布式通信的特性,也就是说在构成ROS网络通信的各台主机中,必须指明一台主机作为Master主节点负责管理整个ROS网络通信,同时还要声明参与通信的各个客户主机。所有主机均由其IP地址描述,这样就需要设置每台主机中的环境变量MASTER和HOST。本章只有一台主机参与ROS网络通信,可以不必设置环境变量MASTER和HOST,或者将环境变量MASTER和HOST都取localhost默认值。打开~/.bashrc文件,在文件末尾添加环境变量,如下。

export ROS_MASTER_URI=http://localhost:11311
export ROS_HOSTNAME=localhost

在后续章节中涉及到机器人和工作台之间的ROS网络通信时,就需要将每台主机上的环境变量取值中的localhost替换成实际的IP地址。

1.2.4使用集成开发工具

工欲善其事,必先利其器。选择一款合适的集成开发工具,能大大提高开发效率。下面列举出了ROS开发中常用的几个集成开发工具:

  • vim
  • VSCode
  • Sublime text
  • Atom
  • RoboWare Studio

在Linux开发中vim是非常好用的纯文本编辑器,所以这当然是推荐大家装的。安装很简单,直接用apt命令安装即可。

sudo apt install vim 

VSCode是比较推荐的集成开发工具,跟Windows系统中的VS一样,功能非常强大,对现在主流编程语言都有很好的支持。直接打开Ubuntu的软件中心,搜索visual studio code找到对应图标直接点击安装就行了。

当然也还有很多其他优秀的集成开发工具,比如Sublime text、Atom、RoboWare Studio等,大家如果有需要也可以安装。

源码仓库

  • Github下载:github/xiihoo/Books_Robot_SLAM_Navigation

  • Gitee下载(国内访问速度快):gitee/xiihoo-robot/Books_Robot_SLAM_Navigation

参考文献

【1】 张虎,机器人SLAM导航核心技术与实战[M]. 机械工业出版社,2022.

更多推荐

一起自学SLAM算法:1.2 ROS开发环境搭建