内容推荐 本书包含ROS 基础以及ROS 机械臂全过程开发和实践等内容,是编著者在结合国内外最新方法和技术,总结自己多年机器人开发经验以及教学科研成果的基础上完成的。本书第1~4 章简单概述了机械臂基础和ROS 基础,结合具体实践详细讲解了ROS 通信机制、常用组件、TF2 等进阶功能;第5~7 章基于机械臂控制系统开发的工程实践,详细讲解了ROS 机械臂建模、MoveIt!基础、MoveIt!的编程;第8、第9 章介绍了机械臂的视觉系统和视觉抓取。 本书理论与实践相结合,仿真与实物相结合,配有开源教学软件包和课后习题答疑解析,所有教学示例均提供C++和Python 两种编程实现,方便读者更好地理解和实践书中内容。 本书可作为普通高校自动化、机器人工程、人工智能等相关专业的教材,也可作为机器人开发者和工程师的技术参考书。 目录 第1章 机械臂基础 1.1 机械臂系统组成 001 1.1.1 机械系统 001 1.1.2 驱动系统 001 1.1.3 感知系统 002 1.1.4 控制系统 002 1.2 机械臂主要技术参数 002 1.2.1 自由度 002 1.2.2 定位精度 003 1.2.3 工作空间 003 1.2.4 速度和加速度 004 1.2.5 承载能力 004 1.3 空间描述和变换 004 1.3.1 位置描述 005 1.3.2 姿态描述 005 1.3.3 机器人位姿 007 1.3.4 坐标变换 007 1.4 机械臂正、逆运动学 008 1.4.1 关节空间和笛卡儿空间 008 1.4.2 正运动学 009 1.4.3 逆运动学 009 1.5 推荐阅读 009 本章小结 009 习题1 010 第2章 认识ROS 2.1 什么是ROS 011 2.2 ROS 的安装与测试 011 2.2.1 操作系统和ROS 版本选择 011 2.2.2 安装ROS Melodic Morenia 版本 012 2.2.3 测试ROS 015 2.3 ROS 文件系统 015 2.3.1 catkin 工作空间和ROS 功能包 015 2.3.2 创建工作空间 017 2.4 教学代码包 018 2.4.1 下载安装教学代码包 018 2.4.2 Qt Creator 开发环境 019 2.4.3 教学代码包简要说明 025 2.5 ROS 的通信架构 026 2.5.1 节点与ROS Master 027 2.5.2 消息 027 2.5.3 话题 027 2.5.4 服务 028 2.5.5 动作 028 2.5.6 话题、服务和动作对比 028 2.5.7 参数服务器 028 2.6 ROS 计算图和命名空间 029 本章小结 029 习题2 030 第3章 ROS 基础实践 3.1 消息的定义和使用 031 3.1.1 消息的描述和类型 031 3.1.2 自定义消息类型 033 3.1.3 消息的使用 035 3.2 rospy 和roscpp 客户端 035 3.3 话题通信和编程实现 036 3.3.1 话题的发布节点(Python) 036 3.3.2 话题的订阅节点(Python) 040 3.3.3 话题的发布节点(C++) 042 3.3.4 话题的订阅节点(C++) 046 3.3.5 话题通信测试 049 3.4 服务通信和编程实现 052 3.4.1 服务的定义 052 3.4.2 自定义服务类型 053 3.4.3 服务的服务端节点(Python) 055 3.4.4 服务的客户端节点(Python) 057 3.4.5 服务的服务端节点(C++) 059 3.4.6 服务的客户端节点(C++) 061 3.4.7 服务通信测试 062 3.5 ROS 中的参数 064 3.5.1 rosparam 命令行工具 064 3.5.2 参数服务器(Python) 066 3.5.3 参数服务器(C++) 068 本章小结 071 习题3 071 第4章 ROS 进阶实践 4.1 动作通信和编程实现 073 4.1.1 Action 的定义 073 4.1.2 Action 的服务端节点(Python) 076 4.1.3 Action 的客户端节点(Python) 079 4.1.4 Action 的服务端节点(C++) 081 4.1.5 Action 的客户端节点(C++) 084 4.1.6 Action 通信测试 085 4.2 ROS 常用组件和工具 089 4.2.1 XML 语法规范 089 4.2.2 launch 启动文件 090 4.2.3 RViz 可视化平台 096 4.2.4 rqt 工具箱 101 4.2.5 rosbag 数据记录与回放 101 4.3 动态参数配置 101 4.3.1 编写.cfg 文件 102 4.3.2 设置动态参数节点(Python) 103 4.3.3 设置动态参数节点(C++) 107 4.3.4 测试动态参数配置 108 4.4 ROS 中的坐标系和TF2 110 4.4.1 ROS 中的TF 110 4.4.2 编写TF2 广播节点(Python) 113 4.4.3 编写TF2 监听节点(Python) 117 4.4.4 编写TF2 广播节点(C++) 119 4.4.5 编写TF2 监听节点(C++) 121 4.4.6 TF 测试和常用工具 123 4.5 扩展阅读 126 本章小结 127 习题4 127 第5章 ROS 机械臂建模 5.1 URDF 建模原理和语法规范 128 5.1.1 什么是URDF 128 5.1.2 urdf 功能包 128 5.1.3 URDF 语法规范 129 5.2 机械臂URDF 建模 133 5.2.1 创建机械臂描述功能包 134 5.2.2 创建机械臂URDF 模型 134 5.2.3 添加机械臂夹爪模型 136 5.2.4 URDF 调试工具 139 5.2.5 在RViz 中可视化模型 140 5.3 xacro 语言简化URDF 模型 142 5.3.1 xacro 模型文件常用语法 143 5.3.2 使用xacro 简化机械臂URDF 模型 145 5.3.3 为机械臂添加移动底盘 148 5.4 sw2urdf 插件 149 5.4.1 sw2urdf 插件简介 150 5.4.2 sw2urdf 插件导出的功能包 150 5.4.3 XBot-Arm 机械臂的URDF 模型 153 5.5 robot_state_publisher 发布TF 157 5.5.1 robot_state_publisher 原理简介 157 5.5.2 编写/joint_states 话题发布节点 160 本章小结 163 习题5 163 第6章 MoveIt!基础 6.1 MoveIt!软件架构 164 6.1.1 move_group 节点 165 6.1.2 运动学求解器 166 6.1.3 运动规划器 166 6.1.4 规划场景 168 6.1.5 碰撞检测 168 6.2 MoveIt!可视化配置 168 6.2.1 安装MoveIt!并启动配置助手 169 6.2.2 生成自碰撞矩阵 170 6.2.3 添加虚拟关节 171 6.2.4 添加规划组 173 6.2.5 添加机器人位姿 176 6.2.6 添加末端执行器 179 6.2 |