本书包含了大量示例,帮助你开发机器人程序,并为你提供使用开源ROS库和工具的完整解决方案。本书主要内容包括:ROS的概念、命令行工具、可视化GUI以及如何调试ROS,如何将机器人传感器和执行器连接到ROS,如何从摄像头和3D传感器获取数据并分析数据,如何在机器人/传感器和环境仿真中使用Gazebo,如何设计机器人,如何使用OpenCV3.0为机器人添加视觉功能,如何使用新版本的PCL向机器人添加3D感知功能。本书适合各个阶层的机器人开发人员和机器人爱好者阅读。
目 录 Contents
推荐序一
推荐序二
译者序
前言
作者简介
审校者简介
第1章 ROS入门 1
1.1PC安装教程 3
1.2使用软件库安装ROS Kinetic 3
1.2.1 配置Ubuntu软件库 4
1.2.2 添加软件库到sources.list文件中 4
1.2.3 设置密钥 5
1.2.4 安装ROS 5
1.2.5 初始化rosdep 6
1.2.6 配置环境 6
1.2.7 安装rosinstall 7
1.3如何安装VirtualBox和Ubuntu 8
1.3.1 下载VirtualBox 8
1.3.2 创建虚拟机 9
1.4通过Docker镜像使用ROS 11
1.4.1 安装Docker 11
1.4.2 获取和使用ROS Docker镜像和容器 11
1.5在BeagleBone Black上安装ROS Kinetic 12
1.5.1 准备工作 13
1.5.2 配置主机和source.list文件 16
1.5.3 设置密钥 16
1.5.4 安装ROS功能包 17
1.5.5 为ROS初始化rosdep 17
1.5.6 在BeagleBone Black中配置环境 18
1.5.7 在BeagleBone Black中安装rosinstall 18
1.5.8 BeagleBone Black基本ROS示例 18
1.6本章小结 19
第2章 ROS架构及概念 20
2.1理解ROS文件系统级 20
2.1.1 工作空间 21
2.1.2 功能包 22
2.1.3 元功能包 23
2.1.4 消息 24
2.1.5 服务 25
2.2理解ROS计算图级 25
2.2.1 节点与nodelet 27
2.2.2 主题 28
2.2.3 服务 29
2.2.4 消息 29
2.2.5 消息记录包 30
2.2.6 节点管理器 30
2.2.7 参数服务器 30
2.3理解ROS开源社区级 31
2.4ROS试用练习 32
2.4.1 ROS文件系统导览 32
2.4.2 创建工作空间 32
2.4.3 创建ROS功能包和元功能包 33
2.4.4 编译ROS功能包 34
2.4.5 使用ROS节点 35
2.4.6 如何使用主题与节点交互 37
2.4.7 如何使用服务 39
2.4.8 使用参数服务器 41
2.4.9 创建节点 42
2.4.10 编译节点 44
2.4.11 创建msg和srv文件 45
2.4.12 使用新建的srv和msg文件 48
2.4.13 launch文件 51
2.4.14 动态参数 53
2.5本章小结 57
第3章 可视化和调试工具 58
3.1调试ROS节点 60
3.1.1 使用gdb调试器调试ROS节点 60
3.1.2 在ROS节点启动时调用gdb调试器 61
3.1.3 在ROS节点启动时调用valgrind分析节点 62
3.1.4 设置ROS节点core文件转储 62
3.2日志消息 62
3.2.1 输出日志消息 62
3.2.2 设置调试消息级别 63
3.2.3 为特定节点配置调试消息级别 64
3.2.4 消息命名 65
3.2.5 按条件显示消息与过滤消息 65
3.2.6 显示消息的方式——单次、可调以及其他组合 66
3.2.7 使用rqt_console和rqt_logger_level在运行时修改调试级别 66
3.3检测系统状态 69
3.4设置动态参数 73
3.5当出现异常状况时使用roswtf 75
3.6可视化节点诊断 77
3.7绘制标量数据图 78
3.8图像可视化 81
3.93D可视化 83
3.9.1 使用rqt_rviz在3D世界中实现数据可视化 83
3.9.2 主题与坐标系的关系 86
3.9.3 可视化坐标变换 87
3.10保存与回放数据 88
3.10.1 什么是消息记录包文件 89
3.10.2 使用rosbag在消息记录包文件中记录数据 89
3.10.3 回放消息记录包文件 90
3.10.4 查看消息记录包文件的主题和消息 91
3.11应用rqt与rqt_gui插件 93
3.12本章小结 93
第4章 3D建模与仿真 95
4.1在ROS中自定义机器人的3D模型 95
4.2创建及时个URDF文件 95
4.2.1 解释文件格式 97
4.2.2 在rviz里查看3D模型 98
4.2.3 加载网格到机器人模型中 100
4.2.4 使机器人模型运动 100
4.2.5 物理和碰撞属性 101
4.3xacro——一种更好的机器人建模方法 102
4.3.1 使用常量 102
4.3.2 使用数学方法 103
4.3.3 使用宏 103
4.3.4 使用代码移动机器人 103
4.3.5 使用SketchUp进行3D建模 107
4.4在ROS中仿真 109
4.4.1 在Gazebo中使用URDF 3D模型 109
4.4.2 在Gazebo中添加传感器 112
4.4.3 在Gazebo中加载和使用地图 115
4.4.4 在Gazebo中移动机器人 116
4.5本章小结 118
第5章 导航功能包集入门 119
5.1ROS导航功能包集 119
5.2创建变换 120
5.2.1 创建广播器 121
5.2.2 创建侦听器 121
5.2.3 查看坐标变换树 124
5.3传感器信息 124
5.4里程数据信息 127
5.4.1 Gazebo如何获取里程数据 128
5.4.2 使用Gazebo创建里程数据 131
5.4.3 创建自定义里程数据 132
5.5创建基础控制器 135
5.6使用ROS创建地图 139
5.6.1 使用map_server保存地图 141
5.6.2 使用map_server加载地图 141
5.7本章小结 142
第6章 导航功能包集进阶 144
6.1创建功能包 144
6.2创建机器人配置 144
6.3配置全局和局部代价地图 147
6.3.1 基本参数的配置 147
6.3.2 全局代价地图的配置 148
6.3.3 局部代价地图的配置 149
6.3.4 底盘局部规划器配置 149
6.4为导航功能包集创建启动文件 150
6.5为导航功能包集设置rviz 151
6.5.1 2D位姿估计 152
6.5.2 2D导航目标 152
6.5.3 静态地图 154
6.5.4 粒子云 154
6.5.5 机器人占地空间 155
6.5.6 局部代价地图 156
6.5.7 全局代价地图 156