SLAM导航机器人零基础实战系列:(二)ROS入门——3.在ubuntu16.04中安装ROS kinetic

SLAM导航机器人零基础实战系列:(二)ROS入门——3.在ubuntu16.04中安装ROS kinetic

摘要                                          

ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便。我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS基础知识进行详细的讲解,给不熟悉ROS的朋友起到一个抛砖引玉的作用。本章节主要内容:

1.ROS是什么

2.ROS系统整体架构

3.在ubuntu16.04中安装ROS kinetic

4.如何编写ROS的第一个程序hello_world

5.编写简单的消息发布器和订阅器

6.编写简单的service和client

7.理解tf的原理

8.理解roslaunch在大型项目中的作用

9.熟练使用rviz

10.在实际机器人上运行ROS高级功能预览


温馨提示:

本篇文章已经收录在我最新出版的书籍《机器人SLAM导航核心技术与实战》,感兴趣的读者可以购买纸质书籍来进行更加深入和系统性的学习,购买链接如下:

点这里购买:《机器人SLAM导航核心技术与实战》购买链接


3.在ubuntu16.04中安装ROS kinetic

(图9)安装ROS软硬件配置总结

使用ROS进行机器人的学习和开发,一般需要一个机器人平台和一个调试工作平台。机器人平台上出于性价比和功耗考虑一般采用ARM嵌入式板作为硬件设备,比如树莓派3、RK3399开发板、nvidia-jetson-tx2等;调试工作平台一般采用x86个人电脑,比如笔记本电脑、台式电脑等。ARM嵌入式板的厂家一般都会提供相应定制化的ubuntu系统,定制化主要体现在硬件外设驱动和一些加快系统速度的优化,作为软件开发人员可以不必考虑这些问题直接当做普通ubuntu使用就行了,比如针对树莓派3定制化的ubuntu-mate系统;x86个人电脑上的话就可以直接安装ubuntu官方发布的系统就行了,你可以把ubuntu直接安装在物理机上,这样ubuntu运行会更加流畅,你也可以把ubuntu安装在虚拟机上,这样可以更方便的切换使用机器上原来的系统(如windows系统)和虚拟机上的ubuntu系统。不管是采用何种硬件,在硬件上以何种方式安装上ubuntu及其定制化ubuntu,一旦我们拥有了一个可用的ubuntu系统,就可以在这个ubuntu系统上安装当下流行的ROS发行版了(本文写作时最流行的ROS发行版是ROS-kinetic)。安装ROS软硬件配置的总结,如图9。

机器人平台上安装ROS软硬件配置,推荐大家使用树莓派3作为硬件,ubuntu-mate-16.04作为操作系统,安装ROS-kinetic这个ROS发行版。这一部分的具体讲解将在后续的文章中展开。

调试工作平台上安装ROS软硬件配置,推荐大家使用x86个人电脑(笔记本电脑、台式电脑都可以)作为硬件,在虚拟机上运行ubuntu16.04系统,安装ROS-kinetic这个ROS发行版。由于在虚拟机上安装运行ubuntu16.04系统已经在前面的文章(一)Linux基础——2.安装Linux发行版ubuntu系统中详细讲解了,这里就默认我们已经拥有了一个运行在虚拟机上的ubuntu16.04系统了。接下来就着重讲解如何安装ROS发行版ROS-kinetic。

其实在ubuntu上安装ROS,有很详细的ROS官方教程,感兴趣的朋友可以直接参考官方教程kinetic/Installation/Ubuntu - ROS Wiki。由于官方教程用英文书写,为了方便大家阅读,我将官方教程翻译过来,方便大家学习,下面正式进入安装。温馨提醒,由于不同的编辑器对过长的句子换行的规则不同,下面的命令被自动换行后可能影响正常的阅读,请直接参阅官方教程中的命令kinetic/Installation/Ubuntu - ROS Wiki

(1)配置ubuntu的资源库

系统设置->软件和更新->Ubuntu软件,可以打开如图10中的资源库配置界面,确保“universe”,“restricted”、“multiverse”被勾选了,“下载自”选项中选择“中国的服务器”,这样下载更新软件速度会更快点。不过一般情况下,以上选项都是默认设置好了的。

(图10)资源库配置界面

(2)设置ubuntu的sources.list

打开命令行终端,输入如下命令:

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://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

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

打开命令行终端,分别输入如下两条命令:

sudo apt-get update

sudo apt-get install ros-kinetic-desktop-full

小技巧,如果安装过程提示“下载错误”,请耐心重试上面的两条命令,这个错误多半是由于网络故障造成的。

(5)初始化rosdep

打开命令行终端,分别输入如下两条命令:

sudo rosdep init

rosdep update

(6)配置环境变量

打开命令行终端,分别输入如下两条命令:

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

source ~/.bashrc

(7)安装rosinstall

打开命令行终端,输入如下命令:

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

(8)测试ros安装成功与否

打开命令行终端,输入如下命令:

roscore

如果此时出现以下内容

setting /run_id to 4cb2a932-06c0-11e9-9ff2-000c2985f3ab
process[rosout-1]: started with pid [38686]
started core service [/rosout]

那么恭喜你,ROS已经成功的安装上了!!!

后记                                        

如果大家对博文的相关类容感兴趣,或有什么技术疑问,欢迎加QQ技术交流群(117698356

参考文献

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

 购书链接:https://item.jd.com/13041503.html

下载更多资料:www.xiihoo.com

QQ技术讨论群: 117698356

B站视频教程:https://space.bilibili.com/66815220

Github源码:https://github.com/xiihoo/Books_Robot_SLAM_Navigation

Gitee源码(国内访问速度快):https://gitee.com/xiihoo-robot/Books_Robot_SLAM_Navigation

前言

编程基础篇

第1章 ROS入门必备知识

1.1 ROS简介 2

1.1.1 ROS的性能特色 2

1.1.2 ROS的发行版本 3

1.1.3 ROS的学习方法 3

1.2 ROS开发环境的搭建 3

1.2.1 ROS的安装 4

1.2.2 ROS文件的组织方式 4

1.2.3 ROS网络通信配置 5

1.2.4 集成开发工具 5

1.3 ROS系统架构 5

1.3.1 从计算图视角理解ROS架构 6

1.3.2 从文件系统视角理解ROS架构 7

1.3.3 从开源社区视角理解ROS架构 8

1.4 ROS调试工具 8

1.4.1 命令行工具 9

1.4.2 可视化工具 9

1.5 ROS节点通信 10

1.5.1 话题通信方式 12

1.5.2 服务通信方式 15

1.5.3 动作通信方式 19

1.6 ROS的其他重要概念 25

1.7 ROS 2.0展望 28

1.8 本章小结 28

第2章 C++编程范式

2.1 C++工程的组织结构 29

2.1.1 C++工程的一般组织结构 29

2.1.2 C++工程在机器人中的组织结构 29

2.2 C++代码的编译方法 30

2.2.1 使用g++编译代码 31

2.2.2 使用make编译代码 32

2.2.3 使用CMake编译代码 32

2.3 C++编程风格指南 33

2.4 本章小结 34

第3章 OpenCV图像处理

3.1 认识图像数据 35

3.1.1 获取图像数据 35

3.1.2 访问图像数据 36

3.2 图像滤波 37

3.2.1 线性滤波 37

3.2.2 非线性滤波 38

3.2.3 形态学滤波 39

3.3 图像变换 40

3.3.1 射影变换 40

3.3.2 霍夫变换 42

3.3.3 边缘检测 42

3.3.4 直方图均衡 43

3.4 图像特征点提取 44

3.4.1 SIFT特征点 44

3.4.2 SURF特征点 50

3.4.3 ORB特征点 52

3.5 本章小结 54

硬件基础篇

第4章 机器人传感器

4.1 惯性测量单元 56

4.1.1 工作原理 56

4.1.2 原始数据采集 60

4.1.3 参数标定 65

4.1.4 数据滤波 73

4.1.5 姿态融合 75

4.2 激光雷达 91

4.2.1 工作原理 92

4.2.2 性能参数 94

4.2.3 数据处理 96

4.3 相机 100

4.3.1 单目相机 101

4.3.2 双目相机 107

4.3.3 RGB-D相机 109

4.4 带编码器的减速电机 111

4.4.1 电机 111

4.4.2 电机驱动电路 112

4.4.3 电机控制主板 113

4.4.4 轮式里程计 117

4.5 本章小结 118

第5章 机器人主机

5.1 X86与ARM主机对比 119

5.2 ARM主机树莓派3B+ 120

5.2.1 安装Ubuntu MATE 18.04 120

5.2.2 安装ROS melodic 122

5.2.3 装机软件与系统设置 122

5.3 ARM主机RK3399 127

5.4 ARM主机Jetson-tx2 128

5.5 分布式架构主机 129

5.5.1 ROS网络通信 130

5.5.2 机器人程序的远程开发 130

5.6 本章小结 131

第6章 机器人底盘

6.1 底盘运动学模型 132

6.1.1 两轮差速模型 132

6.1.2 四轮差速模型 136

6.1.3 阿克曼模型 140

6.1.4 全向模型 144

6.1.5 其他模型 148

6.2 底盘性能指标 148

6.2.1 载重能力 148

6.2.2 动力性能 148

6.2.3 控制精度 150

6.2.4 里程计精度 150

6.3 典型机器人底盘搭建 151

6.3.1 底盘运动学模型选择 152

6.3.2 传感器选择 152

6.3.3 主机选择 153

6.4 本章小结 155

SLAM篇

第7章 SLAM中的数学基础

7.1 SLAM发展简史 158

7.1.1 数据关联、收敛和一致性 160

7.1.2 SLAM的基本理论 161

7.2 SLAM中的概率理论 163

7.2.1 状态估计问题 164

7.2.2 概率运动模型 166

7.2.3 概率观测模型 171

7.2.4 概率图模型 173

7.3 估计理论 182

7.3.1 估计量的性质 182

7.3.2 估计量的构建 183

7.3.3 各估计量对比 190

7.4 基于贝叶斯网络的状态估计 193

7.4.1 贝叶斯估计 194

7.4.2 参数化实现 196

7.4.3 非参数化实现 202

7.5 基于因子图的状态估计 206

7.5.1 非线性最小二乘估计 206

7.5.2 直接求解方法 206

7.5.3 优化方法 208

7.5.4 各优化方法对比 218

7.5.5 常用优化工具 219

7.6 典型SLAM算法 221

7.7 本章小结 221

第8章 激光SLAM系统

8.1 Gmapping算法 223

8.1.1 原理分析 223

8.1.2 源码解读 228

8.1.3 安装与运行 233

8.2 Cartographer算法 240

8.2.1 原理分析 240

8.2.2 源码解读 247

8.2.3 安装与运行 258

8.3 LOAM算法 266

8.3.1 原理分析 266

8.3.2 源码解读 267

8.3.3 安装与运行 270

8.4 本章小结 270

第9章 视觉SLAM系统

9.1 ORB-SLAM2算法 274

9.1.1 原理分析 274

9.1.2 源码解读 310

9.1.3 安装与运行 319

9.1.4 拓展 327

9.2 LSD-SLAM算法 329

9.2.1 原理分析 329

9.2.2 源码解读 334

9.2.3 安装与运行 337

9.3 SVO算法 338

9.3.1 原理分析 338

9.3.2 源码解读 341

9.4 本章小结 341

第10章 其他SLAM系统

10.1 RTABMAP算法 344

10.1.1 原理分析 344

10.1.2 源码解读 351

10.1.3 安装与运行 357

10.2 VINS算法 362

10.2.1 原理分析 364

10.2.2 源码解读 373

10.2.3 安装与运行 376

10.3 机器学习与SLAM 379

10.3.1 机器学习 379

10.3.2 CNN-SLAM算法 411

10.3.3 DeepVO算法 413

10.4 本章小结 414

自主导航篇

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

11.1 自主导航 418

11.2 环境感知 420

11.2.1 实时定位 420

11.2.2 环境建模 421

11.2.3 语义理解 422

11.3 路径规划 422

11.3.1 常见的路径规划算法 423

11.3.2 带约束的路径规划算法 430

11.3.3 覆盖的路径规划算法 434

11.4 运动控制 435

11.4.1 基于PID的运动控制 437

11.4.2 基于MPC的运动控制 438

11.4.3 基于强化学习的运动控制 441

11.5 强化学习与自主导航 442

11.5.1 强化学习 443

11.5.2 基于强化学习的自主导航 465

11.6 本章小结 467

第12章 典型自主导航系统

12.1 ros-navigation导航系统 470

12.1.1 原理分析 470

12.1.2 源码解读 475

12.1.3 安装与运行 479

12.1.4 路径规划改进 492

12.1.5 环境探索 496

12.2 riskrrt导航系统 498

12.3 autoware导航系统 499

12.4 导航系统面临的一些挑战 500

12.5 本章小结 500

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

13.1 运行机器人上的传感器 502

13.1.1 运行底盘的ROS驱动 503

13.1.2 运行激光雷达的ROS驱动 503

13.1.3 运行IMU的ROS驱动 504

13.1.4 运行相机的ROS驱动 504

13.1.5 运行底盘的urdf模型 505

13.1.6 传感器一键启动 506

13.2 运行SLAM建图功能 506

13.2.1 运行激光SLAM建图功能 507

13.2.2 运行视觉SLAM建图功能 508

13.2.3 运行激光与视觉联合建图功能 508

13.3 运行自主导航 509

13.4 基于自主导航的应用 510

13.5 本章小结 511

附录A Linux与SLAM性能优化的探讨

附录B 习题

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以回答这个问题。在Ubuntu18.04,在rplidar_ros新建slam.launch文件的步骤如下: 1. 打开终端,输入以下命令安装rplidar_ros包: ``` sudo apt-get install ros-melodic-rplidar-ros ``` 2. 在终端输入以下命令,创建一个新的工作空间: ``` mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace ``` 3. 在终端输入以下命令,将rplidar_ros包复制到工作空间: ``` cd ~/catkin_ws/src git clone https://github.com/robopeak/rplidar_ros.git ``` 4. 在终端输入以下命令,编译工作空间: ``` cd ~/catkin_ws catkin_make ``` 5. 在终端输入以下命令,打开slam.launch文件: ``` roscd rplidar_ros cd launch gedit slam.launch ``` 6. 在slam.launch文件添加以下内容: ``` <launch> <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping"> <param name="base_frame" value="base_link"/> <param name="odom_frame" value="odom"/> <param name="map_frame" value="map"/> <param name="map_update_interval" value="1."/> <param name="maxUrange" value="10."/> <param name="sigma" value=".05"/> <param name="kernelSize" value="1"/> <param name="lstep" value=".05"/> <param name="astep" value=".05"/> <param name="iterations" value="5"/> <param name="lsigma" value=".075"/> <param name="ogain" value="3."/> <param name="lskip" value=""/> <param name="srr" value=".1"/> <param name="srt" value=".2"/> <param name="str" value=".1"/> <param name="stt" value=".2"/> <param name="linearUpdate" value=".2"/> <param name="angularUpdate" value=".1"/> <param name="temporalUpdate" value="3."/> <param name="resampleThreshold" value=".5"/> <param name="particles" value="30"/> <param name="xmin" value="-10."/> <param name="ymin" value="-10."/> <param name="xmax" value="10."/> <param name="ymax" value="10."/> <param name="delta" value=".05"/> <param name="llsamplerange" value=".01"/> <param name="llsamplestep" value=".01"/> <param name="lasamplerange" value=".005"/> <param name="lasamplestep" value=".005"/> <param name="tf_delay" value=".05"/> </node> <node pkg="rplidar_ros" type="rplidarNode" name="rplidarNode" output="screen"> <param name="serial_port" value="/dev/ttyUSB"/> <param name="serial_baudrate" value="115200"/> </node> </launch> ``` 7. 保存并关闭slam.launch文件。 8. 在终端输入以下命令,启动slam.launch文件: ``` roslaunch rplidar_ros slam.launch ``` 这样就可以在Ubuntu18.04在rplidar_ros新建slam.launch文件了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值