第一章ROS简介 1
1.1 ROS简介 1
1.2 ROS安装 4
1.3 ROS支持的机器人 6
1.4 ROS网上资源 6
第二章ROS总体框架及基本命令 7
2.1 ROS总体框架 7
2.1.1文件系统级 7
2.1.2计算图级 9
2.1.3社区级 11
2.1.4更高层概念 12
2.1.5名称 12
2.2 ROS基本命令 15
2.2.1 ROS文件系统命令 15
2.2.2 ROS核心命令 26
2.3工具 35
2.3.1 3D可视化工具:rviz 35
2.3.2传感器数据记录与可视化工具:rosbag和rxbag 45
2.3.3画图工具:rxplot 47
2.3.4系统可视化工具:rxgraph 49
2.3.5 rxconsole 49
2.3.6 tf命令 51
2.4例子 52
2.4.1创建ROS消息和服务 52
2.4.2记录和回放数据 54
2.4.3手工创建ROS功能包 59
2.4.4大项目上运行roslaunch 60
2.4.5在多台机器上运行ROS系统 66
2.4.6定义客户消息 68
第三章ROS客户端库 70
3.1概述 70
3.2 roscpp客户端库 71
3.2.1简单的主题发布者和主题订阅者 72
3.2.2简单的服务器端和客户端 78
3.2.3 roscpp中参数的使用 81
3.2.4从节点句柄存取私有名称 83
3.2.5用类方法订阅和回调服务 84
3.2.6计时器 85
3.2.7带动态可重配置及参数服务器的主题发布者/订阅者节点(C+++) 87
3.2.8带动态可重配置及参数服务器的主题发布者/订阅者节点(Python) 95
3.2.9组合C+十/Python主题发布者/订阅者节点 101
3.3 rospy客户端库 101
3.3.1简单的主题发布者/订阅者 101
3.3.2简单的服务端和客户端 105
3.3.3 rospy中参数的使用 108
3.3.4 rospy中numpy的使用 109
3.3.5 rospy运行日志 113
3.3.6 ROS Python Makefile文件 115
3.3.7设置PYTHONPATH 116
3.3.8发布消息 116
3.4 roslisp客户端库 117
3.5实验阶段的客户端库 117
3.5.1 rosjava 117
3.5.2 roslua 117
第四章OpenCV 119
4.1 image-common功能包集 119
4.1.1 image transport功能包 119
4.1.2 camera-calibration-parsers功能包 124
4.1.3 camerainfo_nanager功能包 126
4.1.4 polled-camera功能包 127
4.2 image-pipeline功能包集 127
4.3 vision_opencv功能包集 128
4.3.1 opencv2 128
4.3.2 cv_bridge 128
4.3.3 image-geometry 139
4.4投影tf坐标系到图像(C+++) 140
4.5演示例子 145
4.5.1使用颜色追踪物体 145
4.5.2识别物体 148
第五章SLAM和导航 150
5.1使用tf配置机器人 150
5.2通过ROS发布里程计信息 154
5.3通过ROS发布传感器数据流 158
5.4 SLAM 163
5.4.1 SLAM简介 163
5.4.2 slam_mapping功能包 163
5.4.3使用记录的数据建立地图 167
5.4.4模拟器中建立地图 168
5.4.5模拟器中使用客户定制地图 170
5.5配置和使用导航功能包集 172
5.5.1导航功能包集基本操作 172
5.5.2在机器人上设置和配置导航功能包集 173
5.5.3 rviz与导航功能包集配合使用 176
5.5.4发送目标到导航功能包集 178
第六章 抓取操作 182
6.1机器人手臂的运动规划 182
6.1.1安装和配置 182
6.1.2编译手臂导航功能包集 182
6.1.3启动模拟器和仿真环境 183
6.1.4启动相关节点 183
6.1.5控制手臂运动 185
6.2运动规划的环境表示 203
6.2.1基于自滤波数据构建碰撞地图 203
6.2.2检测关节轨迹碰撞 208
6.2.3给定机器人状态下的碰撞检测 212
6.2.4添加己知点到运动规划环境 219
6.2.5添加物体到机器人本体 224
6.3用于PR2机器人手臂的运动学 230
6.3.1从PR2运动学开始 230
6.3.2从运动学节点获取运动学求解器信息 231
6.3.3 PR2手臂运动学正解 233
6.3.4 PR2手臂运动学逆解 237
6.3.5 PR2手臂无碰撞运动学逆解 240
6.4用于PR2机器人手臂的安全轨迹控制 245
6.5使用轨迹滤波节点进行轨迹滤波 247
6.5.1生成无碰撞三次样条轨迹 247
6.5.2使用轨迹滤波服务器对关节轨迹进行滤波 248
6.5.3学习如何创建自己的轨迹滤波 253
6.6机器人状态和轨迹可视化 256
第七章Kinect 260
7.1 Kinect简介 260
7.2安装驱动 261
7.2.1 Ubuntu系统一上安装Kinect 261
7.2.2基于源的安装 261
7.3测试 263
7.3.1测试Kinect彩色摄像机 263
7.3.2测试Kinect深度摄像机 263
7.3.3测试Kinect马达 264
7.4 openni camera 264
7.5 openni tracker 268
第八章 点云库 270
8.1 PCL简介 270
8.1.1 PCL架构 270
8.1.2 PCL数据结构 272
8.1.3 PCL与ROS的集成 273
8.2 PCL可视化库 273
8.3 PCL与Kinect连接 279
8.4例子 284
第九章 综合演示示例 288
9.1实验一:SLAM(即时定位与地图构建) 288
9.2实验二:机器人导航 294
9.3实验三:识别并抓取物体 300
参考文献 303