《F1 ROS进阶实例》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:(美)R.帕特里克·戈贝尔著;(墨)J.罗哈斯,刘振东,罗盛等译
  • 出 版 社:广州:中山大学出版社
  • 出版年份:2017
  • ISBN:9787306060303
  • 页数:443 页
图书介绍:本书是“ROS实例系列”的第2册,总体目标是介绍一批ROS程序包以及一些在真实机器人上编程所必需的工具。这些ROS程序包和工具包括:使用SMACH和Behavior Trees这样的可执行任务管理工具,为不同的机器人创造定制的URDF模型,用ROS诊断来监控机器人的健康状况,多控制输入以及为这些控制输入设定优先级,控制多关节机械臂实现移动到指定点和抓取的动作,通过网络浏览器监控和控制机器人,以及在Gazebo中运行真实机器人的模拟版。

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