1本卷范围 1
2安装ROS-BY-EXAMPLE代码 3
3使用ROS执行任务 6
3.1一个虚拟电池模拟器 7
3.2运行案例所需的一套常规设定 8
3.3 ROS动作的简短回顾 9
3.4一个巡逻机器人的案例 10
3.5使用标准脚本实现的巡逻机器人 11
3.6脚本方法存在的问题 14
3.7 SMACH还是行为树? 14
3.8 SMACH:将任务作为状态机 15
3.8.1 SMACH回顾 16
3.8.2使用SMACH巡逻一个正方形区域 17
3.8.3在ArbotiX模拟器中测试SMACH导航 21
3.8.4从SimpleActionState中获取结果 23
3.8.5 SMACH迭代器 24
3.8.6在每个转移上执行命令 27
3.8.7与ROS主题和服务进行交互 28
3.8.8回调函数与自省 33
3.8.9并发任务:将电池检查加入巡逻程序中 34
3.8.10对进行电池检查的巡逻机器人的注解 41
3.8.11在状态与状态机之间传递用户数据 42
3.8.12子任务与分层状态机 46
3.8.13为房屋清洁机器人添加电池检查 52
3.8.14状态机的缺点 52
3.9行为树 53
3.9.1行为树与分层状态机的对比 53
3.9.2行为树的关键属性 54
3.9.3建立一棵行为树 55
3.9.4选择器与序列器 56
3.9.5使用修饰器(元行为)对行为进行自定义 58
3.10为ROS和行为树编程 59
3.10.1安装pi_trees程序库 59
3.10.2 pi_ trees程序库的基本部件 59
3.10.3 ROS专用行为树类 67
3.10.4一个使用行为树的Patrol Bot例子 73
3.10.5一个使用行为树的居家清洁机器人 82
3.10.6并行任务 88
3.10.7添加和移除任务 90
4为你的机器人创建一个URDF模型 92
4.1从底座和轮子开始 92
4.1.1 robot_state_publisher和joint_state_publisher节点 94
4.1.2底座的URDF/Xacro文件 95
4.1.3替代/base_ footprint坐标系的方法 100
4.1.4把底座加到机器人模型中 101
4.1.5查看机器人的变换树(tf树) 102
4.1.6使用网格模型创建底座 103
4.2简化你的网格模型 108
4.3添加一个躯干 108
4.3.1为躯干建模 109
4.3.2把躯干附着到底座上 110
4.3.3使用网格模型为躯干建模 112
4.3.4把网格躯干附着到网格底座上 113
4.4测量、计算和调整 115
4.5添加一个相机 115
4.5.1相机的位置 116
4.5.2为相机建模 116
4.5.3在躯干和底座上添加相机 120
4.5.4查看有躯干和相机情况下的变换树 122
4.5.5使用网格模型为相机建模 123
4.5.6使用Asus Xtion Pro替换Kinect 124
4.6添加一个激光扫描仪(或其他传感器) 124
4.6.1为激光扫描仪建模 125
4.6.2添加一个激光扫描仪(或其他传感器)到一个网格底座 126
4.6.3配置激光节点的启动文件 127
4.7添加一个可摇移和倾斜的头部 128
4.7.1用Asus Xtion Pro取代Kinect 130
4.7.2为摇移和倾斜头建模 130
4.7.3理解旋转轴 133
4.7.4使用网格模型的Pi机器人云台头 134
4.7.5在Pi机器人上使用Asus Xtion Pro网格取代Kinect 135
4.8添加一条或两条机械臂 136
4.8.1机械臂的放置 136
4.8.2机械臂的建模 136
4.8.3为计划增加一个夹持器坐标系 139
4.8.4增加第二条机械臂 140
4.8.5使用机械臂电机和支架的网格 142
4.9为Box机器人增加一个可伸缩躯干 144
4.10为Pi机器人增加一个可伸缩躯干 144
4.11一个桌面上的单臂Pi机器人 145
4.12用ArbotiX仿真器来测试你的模型 146
4.12.1虚拟Box机器人 147
4.12.2一个虚拟的Pi机器人 149
4.13创建你的机器人的描述程序包 149
4.13.1从rbx2 description程序包中复制文件 150
4.13.2创建一个测试启动文件 150
5控制伺服电机:再一次 152
5.1安装ArbotiX程序包 152
5.2启动ArbotiX节点 152
5.3 ArbotiX配置文件 158
5.4在模拟模式中测试ArbotiX关节控制器 163
5.5在真实伺服电机中测试ArbotiX关节控制器 165
5.6松弛所有的伺服电机 167
5.7启用或禁用所有的伺服电机 171
6机器诊断 172
6.1 DiagnosticStatus信息 173
6.2分析器配置文件 174
6.3监控Dynamixel伺服电机温度 175
6.3.1为云台监控伺服电机 175
6.3.2查看在/diagnostics主题上的信息 177
6.3.3通过监控/diagnostics主题来保护伺服电机 180
6.4监控笔记本的电池 185
6.5创造属于你自己的诊断信息 186
6.6监控其他硬件状态 193
7动态重置 195
7.1添加动态参数到你的节点 196
7.1.1创建.cfg文件 196
7.1.2让.cfg文件可执行 197
7.1.3配置CMakeLists.txt文件 197
7.1.4构建程序包 198
7.2将动态重置容量加入电池仿真器节点中 198
7.3添加动态重配置客户端支持到ROS节点 204
7.4从命令行动态重配置 207
8多话题with mux&yoCs 209
8.1为mux话题设置启动文件 209
8.2用虚拟TurtleBot机器人测试mux 211
8.3使用mux服务切换输入 212
8.4优先处理mux输入的ROS节点 212
8.5 Yujin机器人的YOCS控制器 217
9 3D世界中的头部追踪 221
9.1追踪虚构的3D目标 221
9.2在机器人上追踪一个点 223
9.3 3 D头部追踪节点 226
9.3.1真实的以及虚拟的头部追踪 226
9.3.2将目标映射到摄像头平面 227
9.4用真实的伺服电机做头部追踪 231
9.4.1真实伺服电机以及虚拟目标 231
9.4.2真实的伺服电机,真实的目标 232
9.4.3节点和启动文件 234
10检测与跟踪AR标签 239
10.1安装与测试ar track_ alvar程序包 239
10.1.1创建你自己的AR标签 240
10.1.2生成并打印AR标签 241
10.1.3启动摄像头驱动和ar track_ alvar节点 242
10.1.4测试标记检测 243
10.1.5理解/ar_pose marker主题 244
10.1.6观察在RViz中的标记 245
10.2访问你的程序中的AR标签位姿 246
10.2.1 ar_tags_cog.py脚本 246
10.2.2用平移和倾斜头跟踪标签 251
10.3使用标记束跟踪多个标签 251
10.4移动机器人跟随一个AR标签 252
10.5练习:使用AR标签定位 257
11用Movelt!做机械臂导航 258
11.1我需要一台有机械臂的实体机器人吗? 259
11.2自由度 259
11.3关节类型 260
11.4关节轨迹和关节轨迹动作控制器 260
11.5正向和逆向机械臂运动学 263
11.6逆运动学的数值解法和分析解法 264
11.7 MoveIt!的架构 264
11.8安装MoveIt! 265
11.9为你的机器人创建静态URDF模型 266
11.10运行MoveIt!设置助手 267
11.10.1加载机器人的URDF模型 268
11.10.2生成碰撞矩阵 269
11.10.3添加base_ odom虚拟关节 269
11.10.4添加右臂规划组 270
11.10.5添加右夹持器规划组 273
11.10.6定义机器人位姿 275
11.10.7定义末端执行器 277
11.10.8定义被动关节 277
11.10.9生成配置文件 277
11.11用MoveIt设置助手创建的配置文件 278
11.11.1 SRDF文件(〈机器人名〉.srdf ) 278
11.11.2 fake_controllers.yaml文件 280
11.11.3 joint limits.yaml文件 280
11.11.4 kinematics.yaml文件 281
11.12 move_group节点和启动文件 283
11.13在演示模式下测试MoveIt ! 284
11.13.1探索Motion Planning插件的额外功能 287
11.13.2重新运行设置助手 288
11.14用命令行测试MoveIt! 288
11.15 确定关节配置和末端执行器位姿 291
11.16使用ArbotiX关节轨迹动作控制器 293
11.16.1在仿真环境里测试ArbotiX关节轨迹动作控制器 294
11.16.2用真实的电机测试ArbotiX关节轨迹控制器 303
11.17配置MoveIt!关节控制器 303
11.17.1创建contorllers.yaml文件 304
11.17.2创建控制器管理器启动文件 307
11.18 MoveIt !的API 308
11.19正向运动学:在关节空间进行规划 309
11.20逆向运动学:在笛卡尔空间内的规划 318
11.21把手指向或伸向一个视觉目标 327
11.22为规划的轨迹设置限制 328
11.22.1执行笛卡尔路径 329
11.22.2设置其他路径限制 334
11.23调整轨迹速度 337
11.24为规划添加障碍 342
11.25把物体与工具附在机器人上 352
11.26拾取和放置 354
11.27添加一个传感器控制器 368
11.28在一个真实机械臂上运行MoveIt ! 371
11.28.1创建机器人的启动文件和脚本 371
11.28.2运行机器人的启动文件 372
11.28.3真实机械臂上的正运动学 372
11.28.4真实机械臂上的逆运动学 373
11.28.5真实机械臂上的笛卡尔路径 374
11.28.6真实机械臂上的拾取—放置 374
11.28.7指向或伸向一个视觉目标 374
12 Gazebo:模拟世界与机器人 376
12.1安装Gazebo 376
12.2硬件图形加速 378
12.3安装ROS Gazebo程序包 378
12.4安装Kobuki ROS程序包 379
12.5安装Fetch Robot ROS程序包 379
12.6使用Gazebo GUI 379
12.7在Gazebo里测试Kobuki机器人 380
12.7.1访问模拟传感器数据 383
12.7.2为Kobuki添加安全控制 386
12.7.3运行来自本书第一卷书的nav_square.py脚本 388
12.8加载其他世界和物体 389
12.9在Gazebo中测试Fetch机器人 390
12.9.1 Fetch的关节轨迹 391
12.9.2 Fetch和MoveIt! 392
12.9.3 Fetch的取和放 393
12.10使用simple_g rasping感知管道的真实取和放 394
12.10.1深度摄像头的局限性 394
12.10.2运行演示 395
12.10.3理解real_pick_and_place.py脚本 398
12.11运行Gazebo Headless+RViz 402
13 ROSBRIDGE:为你的机器人构建WEB图形用户界面 405
13.1安装rosbridge程序包 405
13.2安装web_video_server程序包 406
13.3安装一个简单的Web服务器(mini-httpd ) 408
13.4启动mini-httpd、 rosbridge和web_video_ server 409
13.5一个简单的rosbridge HTML/Javascript图形用户界面 411
13.6在模拟TurtleBot中测试图形用户界面 413
13.7在真实的机器人中测试图形用户界面 413
13.8在网络中的另外一台设备上查看Web图形用户界面 413
13.9使用浏览器调试控制台 414
13.10理解简单的图形用户界面 415
13.10.1 HTML布局:simple_gui.html 415
13.10.2 JavaScript代码:simple_gui.js 421
13.11一个使用jQuery、 jqWidgets和KineticJS的更高级的图形用户界面 434
13.12 Rosbridge总结 438
附录ROS的附件及使用USB设备:创建udev Rules 440
1将你的账户加人dialout组 440
2删除设备的序列号 440
3 UDEV规则 441
4测试一条UDEV规则 442
5在ROS配置文件中使用设备名 442