本书不仅涵盖ROS的基础知识,还循序渐进地讲解了ROS机器人的高级应用特性。书中首先对ROS的基本配置进行介绍,内容包括ROS的安装、基本概念、主要的功能包与工具等。然后对相应的故障排查方法进行了论述。之后通过模拟的方式,先对Tu rtIesim的ROS组成模块进行描述,再对其他几类典型机器人的ROS组成模块进行相应的介绍。对ROS组成模块的介绍,一般遵循的流程是首先介绍基本的ROS命令,然后对ROS的功能包、节点、主题以及消息进行论述,以此来对ROS机器人操作系统的整体内容进行详细的阐述。为了对书中选用的机器人的整体性能进行描述,书中还给出了相关机器人的技术资料。
封面图
目录
- 译者序
- 前言
- 作者简介
- 审校者简介
- 第1章ROS初体验 1
- 1.1ROS的用途以及学习ROS的好处 1
- 1.2哪些机器人采用了ROS 2
- 1.3安装并启动ROS 4
- 1.3.1配置Ubuntu系统的软件源 4
- 1.3.2设置Ubuntu系统软件源列表 5
- 1.3.3设置Ubuntu系统密钥 5
- 1.3.4安装ROS Kinetic 5
- 1.3.5初始化rosdep 6
- 1.3.6环境设置 6
- 1.3.7安装 rosinstall 6
- 1.3.8故障排除—ROS环境测试 7
- 1.4创建catkin工作空间 7
- 1.5ROS的功能包与清单 8
- 1.5.1ROS清单 8
- 1.5.2探索ROS功能包 8
- 1.6ROS节点、话题与消息 10
- 1.6.1ROS节点 11
- 1.6.2ROS话题 11
- 1.6.3ROS消息 11
- 1.6.4ROS节点管理器 12
- 1.6.5确定节点和话题的ROS命令 13
- 1.7第一个ROS机器人模拟程序turtlesim 15
- 1.7.1启动turtlesim节点 15
- 1.7.2turtlesim节点 16
- 1.7.3turtlesim话题与消息 18
- 1.7.4通过发布/turtle1/cmd_vel话题控制乌龟运动 20
- 1.7.5通过键盘或游戏手柄控制乌龟移动 22
- 1.7.6turtlesim的参数服务器 22
- 1.7.7控制乌龟移动的ROS服务 24
- 1.8ROS命令小结 25
- 1.9本章小结 26
- 第2章构建一个模拟的两轮ROS机器人 27
- 2.1Rviz简介 27
- 2.1.1安装和启动Rviz 28
- 2.1.2熟悉Rviz界面 29
- 2.2生成并构建ROS功能包 32
- 2.3构建差分驱动的机器人URDF 33
- 2.3.1创建机器人底座 33
- 2.3.2使用roslaunch 34
- 2.3.3添加轮子 37
- 2.3.4添加小脚轮 39
- 2.3.5添加颜色 41
- 2.3.6添加碰撞属性 42
- 2.3.7移动轮子 43
- 2.3.8tf和robot_state_publisher简介 44
- 2.3.9添加物理学属性 45
- 2.3.10试用URDF工具 46
- 2.4Gazebo 47
- 2.4.1安装并启动Gazebo 48
- 2.4.2使用roslaunch启动Gazebo 49
- 2.4.3熟悉Gazebo界面 50
- 2.4.4机器人URDF的修改 54
- 2.4.5Gazebo模型验证 55
- 2.4.6在Gazebo中查看URDF 56
- 2.4.7机器人模型调整 57
- 2.4.8移动机器人模型 58
- 2.4.9其他的机器人模拟环境 59
- 2.5本章小结 60
- 第3章TurtleBot机器人操控 61
- 3.1TurtleBot 2机器人简介 61
- 3.2下载TurtleBot 2模拟器软件 63
- 3.3在Gazebo中启动TurtleBot 2模拟器 63
- 3.3.1常见问题与故障排除 65
- 3.3.2ROS命令与Gazebo 66
- 3.3.3模拟环境下使用键盘远程控制TurtleBot 2 68
- 3.4控制真正的TurtleBot 2机器人的设置 69
- 3.5连接上网本与远程计算机 71
- 3.5.1网络类型 71
- 3.5.2网络地址 72
- 3.5.3远程计算机网络设置 73
- 3.5.4上网本网络设置 73
- 3.5.5SSH连接 74
- 3.5.6网络设置小结 74
- 3.5.7排查网络连接中的故障 75
- 3.5.8TurtleBot 2机器人系统测试 75
- 3.6TurtleBot 2机器人的硬件规格参数 76
- 3.7移动真实的TurtleBot 2机器人 78
- 3.7.1采用键盘远程控制TurtleBot 2机器人移动 78
- 3.7.2采用ROS命令控制TurtleBot 2机器人移动 79
- 3.7.3编写第一个Python脚本程序控制TurtleBot 2机器人移动 80
- 3.8rqt工具简介 83
- 3.8.1rqt_graph 83
- 3.8.2rqt的消息发布与话题监控 86
- 3.9TurtleBot机器人的测程 87
- 3.9.1模拟的TurtleBot 2机器人的测程 91
- 3.9.2Rviz下真实的TurtleBot 2机器人的测程显示 93
- 3.10TurtleBot机器人的自动充电 95
- 3.11TurtleBot 3介绍 96
- 3.12下载TurtleBot 3模拟软件 98
- 3.13在Rviz中启动TurtleBot 3模拟软件 99
- 3.14在Gazebo中启动TurtleBot 3模拟软件 100
- 3.15硬件装配与测试 103
- 3.16下载TurtleBot 3机器人软件包 103
- 3.16.1在远程计算机上安装软件 103
- 3.16.2在SBC上安装软件 104
- 3.17TurtleBot 3与远程计算机的网络连接 107
- 3.17.1远程计算机网络设置 108
- 3.17.2TurtleBot 3网络设置 108
- 3.17.3SSH通信测试 110
- 3.17.4网络连接的故障处理 110
- 3.18控制真实的TurtleBot 3移动 111
- 3.19本章小结 113
- 第4章TurtleBot机器人导航 114
- 4.1TurtleBot机器人的3D视觉系统 115
- 4.1.13D视觉传感器原理 115
- 4.1.23D传感器对比 116
- 4.2配置TurtleBot机器人并安装3D 传感器软件 123
- 4.2.1Kinect 123
- 4.2.2ASUS与PrimeSense 123
- 4.2.3Intel RealSense 124
- 4.2.4摄像头软件结构 124
- 4.2.5术语定义 125
- 4.3独立模式下测试3D传感器 125
- 4.4运行ROS节点进行可视化 126
- 4.4.1使用Image Viewer可视化数据 126
- 4.4.2使用Rviz可视化数据 128
- 4.5TurtleBot机器人导航 131
- 4.5.1采用TurtleBot 2机器人构建房间地图 132
- 4.5.2采用TurtleBot 2机器人实现自主导航 136
- 4.5.3导航至指定目标点 142
- 4.5.4基于Python脚本与地图实现航路点导航 144
- 4.5.5TurtleBot 3机器人的SLAM 151
- 4.5.6使用TurtleBot 3进行自主导航 152
- 4.5.7rqt_reconfigure 153
- 4.5.8进一步探索ROS导航 155
- 4.6本章小结 155
- 第5章构建模拟的机器人手臂 156
- 5.1Xacro的特点 156
- 5.2采用Xacro建立一个关节式机器人手臂URDF 157
- 5.2.1指定名空间 158
- 5.2.2使用Xacro属性标签 158
- 5.2.3扩展Xacro 161
- 5.2.4使用Xacro的包含与宏标签 163
- 5.2.5给机器人手臂添加网格 166
- 5.3在Gazebo中控制关节式机器人手臂 171
- 5.3.1添加Gazebo特性元素 171
- 5.3.2将机器人手臂固定在世界坐标系下 173
- 5.3.3在Gazebo中查看机器人手臂 173
- 5.3.4给Xacro添加控制组件 174
- 5.3.5采用ROS命令行控制机器人手臂 178
- 5.3.6采用rqt控制机器人手臂 179
- 5.4本章小结 182
- 第6章机器人手臂摇摆的关节控制 183
- 6.1Baxter简介 184
- 6.1.1研究型机器人Baxter 185
- 6.1.2Baxter模拟器 186
- 6.2Baxter的手臂 186
- 6.2.1Baxter的俯仰关节 187
- 6.2.2Baxter的滚转关节 188
- 6.2.3Baxter的坐标系 188
- 6.2.4Baxter手臂的控制模式 189
- 6.2.5Baxter手臂的抓手 189
- 6.2.6Baxter手臂的传感器 190
- 6.3下载Baxter软件 190
- 6.3.1安装Baxter SDK软件 190
- 6.3.2安装Baxter模拟器 192
- 6.3.3配置Baxter shell 193
- 6.3.4安装MoveIt! 194
- 6.4在Gazebo中启动Baxter模拟器 195
- 6.4.1启动Baxter模拟器 196
- 6.4.2“热身”练习 199
- 6.4.3弯曲Baxter手臂 200
- 6.5Baxter手臂与正向运动 209
- 6.5.1关节与关节状态发布器 209
- 6.5.2理解tf 212
- 6.5.3直接指定关节组件角度 215
- 6.5.4Rviz下的tf坐标系 216
- 6.5.5查看机器人元素的tf树 217
- 6.6MoveIt!简介 217
- 6.6.1使用MoveIt!对Baxter手臂进行运动规划 219
- 6.6.2在场景中添加物体 220
- 6.6.3采用MoveIt!进行避障运动规划 222
- 6.7配置真实的Baxter机器人 223
- 6.8控制真实的Baxter机器人 225
- 6.8.1控制关节到达航路点 225
- 6.8.2控制关节的力矩弹簧 226
- 6.8.3关节速度控制演示 227
- 6.8.4其他示例 227
- 6.8.5视觉伺服和抓取 227
- 6.9反向运动 228
- 6.10使用状态机实现YMCA 231
- 6.11本章小结 236
- 第7章空中机器人基本操控 237
- 7.1四旋翼飞行器简介 238
- 7.1.1风靡的四旋翼飞行器 238
- 7.1.2滚转角、俯仰角与偏航角 238
- 7.1.3四旋翼飞行器原理 239
- 7.1.4四旋翼飞行器的组成 241
- 7.1.5添加传感器 241
- 7.1.6四旋翼飞行器的通信 242
- 7.2四旋翼飞行器的传感器 243
- 7.2.1惯性测量单元 243
- 7.2.2四旋翼飞行器状态传感器 243
- 7.3飞行前的准备工作 244
- 7.3.1四旋翼飞行器检测 244
- 7.3.2飞行前检测列表 245
- 7.3.3飞行中的注意事项 245
- 7.3.4需要遵循的规则和条例 245
- 7.4在无人机中使用ROS 246
- 7.5Hector四旋翼飞行器 246
- 7.5.1下载Hector四旋翼飞行器 248
- 7.5.2在Gazebo中启动Hector四旋翼飞行器 249
- 7.6Crazyflie 2.0简介 256
- 7.6.1无ROS情况下的Crazyflie控制 257
- 7.6.2使用Crazyradio PA进行通信 258
- 7.6.3加载Crazyflie ROS软件 259
- 7.6.4飞行前的检查 261
- 7.6.5使用teleop操控Crazyflie飞行 262
- 7.6.6在运动捕获系统下飞行 265
- 7.6.7控制多个Crazyflie飞行 266
- 7.7Bebop简介 266
- 7.7.1加载bebop_autonomy软件 268
- 7.7.2使用命令控制Bebop飞行 270
- 7.8本章小结 271
- 第8章使用外部设备控制机器人 272
- 8.1创建自定义ROS游戏控制器接口 272
- 8.1.1测试游戏控制器 273
- 8.1.2使用joy ROS功能包 275
- 8.1.3使用自定义游戏控制器接口控制turtlesim 275
- 8.2创建自定义ROS Android设备接口 280
- 8.2.1安装Android Studio和工具 280
- 8.2.2安装ROS-Android开发环境 281
- 8.2.3术语定义 282
- 8.2.4ROS-Android开发环境介绍 283
- 8.3在Arduino或树莓派上创建ROS节点 284
- 8.3.1使用Arduino 284
- 8.3.2使用树莓派 294
- 8.4本章小结 295
- 第9章操控Crazyflie执行飞行任务 296
- 9.1执行任务所需的组件 297
- 9.1.1Kinect Windows v2 297
- 9.1.2Crazyflie操作 298
- 9.1.3任务软件结构 298
- 9.1.4OpenCV与ROS 300
- 9.2安装任务所需的软件 301
- 9.2.1安装libfreenect2 301
- 9.2.2安装iai_kinect2 304
- 9.2.3使用iai_kinect2元包 305
- 9.3任务设置 311
- 9.3.1探测Crazyflie与目标 311
- 9.3.2使用Kinect与OpenCV 314
- 9.3.3对Crazyflie进行跟踪 317
- 9.4Crazyflie控制 319
- 9.5试飞Crazyflie 324
- 9.5.1悬停 324
- 9.5.2飞往静止目标 326
- 9.5.3学到的经验 327
- 9.6本章小结 328
- 第10章基于MATLAB的Baxter控制 329
- 10.1安装MATLAB机器人系统工具箱 329
- 10.1.1MATLAB与机器人系统工具箱版本检查 330
- 10.1.2机器人系统工具箱下的ROS命令 330
- 10.2机器人系统工具箱与Baxter模拟器的使用 330
- 10.2.1在MATLAB中安装Baxter消息 330
- 10.2.2运行Baxter模拟器和MATLAB 332
- 10.2.3控制Baxter运动 334
- 10.3本章小结 337