连载文章,长期更新,欢迎关注:
写在前面
第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、构建工作空间、配置网络通信、使用集成开发工具的顺序进行环境搭建。
使用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.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
(3)设置keys
在命令行终端,直接输入下面的命令。
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com: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命令测试一下,如果能正常启动,那么恭喜你成功了。
安装完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
前面已经提到过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地址。
工欲善其事,必先利其器。选择一款合适的集成开发工具,能大大提高开发效率。下面列举出了ROS开发中常用的几个集成开发工具:
在Linux开发中vim是非常好用的纯文本编辑器,所以这当然是推荐大家装的。安装很简单,直接用apt命令安装即可。
sudo apt install vim
VSCode是比较推荐的集成开发工具,跟Windows系统中的VS一样,功能非常强大,对现在主流编程语言都有很好的支持。直接打开Ubuntu的软件中心,搜索visual studio code找到对应图标直接点击安装就行了。
当然也还有很多其他优秀的集成开发工具,比如Sublime text、Atom、RoboWare Studio等,大家如果有需要也可以安装。
Github下载:github.com/xiihoo/Books_Robot_SLAM_Navigation
Gitee下载(国内访问速度快):gitee.com/xiihoo-robot/Books_Robot_SLAM_Navigation
【1】 张虎,机器人SLAM导航核心技术与实战[M]. 机械工业出版社,2022.