科技
类型
可以朗读
语音朗读
195千字
字数
2024-07-01
发行日期
展开全部
主编推荐语
“鱼香ROS”机器人社区创始人撰写,多位专家一致推荐。
内容简介
机器人开发是一项复杂的系统工程,ROS 2为智能机器人开发提供了强有力的支持,极大地提高了机器人软件开发效率。
本书首先对ROS 2的基础概念、通信机制、常用库和工具进行介绍,带领读者入门ROS 2机器人开发;接着引导读者完成移动机器人的建模和仿真、建图和导航、自定义控制器和规划器等一系列实践;然后在真机实战环节,通过制作一个基于ROS 2的真实机器人,帮助读者打通仿真与真机之间的壁垒;最后,本书深入讲解了ROS 2进阶使用的相关知识,为读者进一步在实战中使用ROS 2进行机器人开发打下夯实基础。
考虑读者基础,书中示例均以C和Python两种语言实现,同时加入了关于C新特性、Git工具、多线程和回调函数等基础知识的讲解。
目录
- 版权信息
- 推荐序一
- 推荐序二
- 前言
- 第1章 启程
- 1.1 ROS部落的自我介绍
- 1.1.1 机器人与ROS
- 1.1.2 ROS 2系统架构
- 1.1.3 ROS 2的已发布版本
- 1.1.4 ROS 2机器人开发特色
- 1.2 开发环境搭建
- 1.2.1 准备所需软件
- 1.2.2 安装虚拟机VirtualBox
- 1.2.3 在虚拟机中安装Ubuntu 22.04
- 1.2.4 安装ROS 2
- 1.3 运行你的第一个机器人
- 1.3.1 启动海龟模拟器
- 1.3.2 使用键盘控制海龟
- 1.3.3 海龟例子的简单分析
- 1.4 ROS 2基础之Linux
- 1.4.1 Linux终端基础操作
- 1.4.2 在Linux中安装软件
- 1.4.3 在Linux中编写Python程序
- 1.4.4 在Linux中编写C++程序
- 1.4.5 Linux基础之环境变量
- 1.5 小结与点评
- 第2章 ROS 2基础入门
- 2.1 编写你的第一个节点
- 2.1.1 Python示例
- 2.1.2 C++示例
- 2.2 使用功能包组织Python节点
- 2.2.1 在功能包中编写Python节点
- 2.2.2 功能包结构分析
- 2.3 使用功能包组织C++节点
- 2.3.1 在功能包中编写C++节点
- 2.3.2 功能包结构分析
- 2.4 多功能包的最佳实践Workspace
- 2.5 ROS 2基础之编程
- 2.5.1 面向对象编程
- 2.5.2 用得到的C++新特性
- 2.5.3 多线程与回调函数
- 2.6 小结与点评
- 第3章 订阅和发布
- 3.1 话题通信介绍
- 3.2 Python话题订阅与发布
- 3.2.1 通过话题发布小说
- 3.2.2 订阅小说并合成语音
- 3.3 C++话题订阅与发布
- 3.3.1 发布速度控制海龟画圆
- 3.3.2 订阅Pose实现闭环控制
- 3.4 话题通信最佳实践
- 3.4.1 完成工程架构设计
- 3.4.2 自定义通信接口
- 3.4.3 系统信息获取与发布
- 3.4.4 在功能包中使用Qt
- 3.4.5 订阅数据并用Qt显示
- 3.5 ROS 2基础之Git入门
- 3.5.1 新建代码仓库
- 3.5.2 学会提交代码
- 3.5.3 学会使用Git忽略文件
- 3.6 小结与点评
- 第4章 服务和参数
- 4.1 服务与参数通信介绍
- 4.1.1 服务通信介绍
- 4.1.2 基于服务的参数通信
- 4.2 用Python服务通信实现人脸检测
- 4.2.1 自定义服务接口
- 4.2.2 人脸检测
- 4.2.3 人脸检测服务实现
- 4.2.4 人脸检测客户端的实现
- 4.3 用C++服务通信做一个巡逻海龟
- 4.3.1 自定义服务接口
- 4.3.2 服务端代码实现
- 4.3.3 客户端代码实现
- 4.4 在Python节点中使用参数
- 4.4.1 参数声明与设置
- 4.4.2 订阅参数更新
- 4.4.3 修改其他节点的参数
- 4.5 在C++节点中使用参数
- 4.5.1 参数声明与设置
- 4.5.2 接收参数事件
- 4.5.3 修改其他节点的参数
- 4.6 使用launch启动脚本
- 4.6.1 使用launch启动多个节点
- 4.6.2 使用launch传递参数
- 4.6.3 launch使用进阶
- 4.7 小结与点评
- 第5章 ROS 2常用开发工具
- 5.1 坐标变换工具介绍
- 5.1.1 通过命令行使用TF
- 5.1.2 对TF原理的简单探究
- 5.2 Python中的手眼坐标变换
- 5.2.1 通过Python发布静态TF
- 5.2.2 通过Python发布动态TF
- 5.2.3 通过Python查询TF关系
- 5.3 C++中的地图坐标系变换
- 5.3.1 通过C++发布静态TF
- 5.3.2 通过C++发布动态TF
- 5.3.3 通过C++查询TF关系
- 5.4 常用可视化工具rqt与RViz
- 5.4.1 GUI框架rqt
- 5.4.2 数据可视化工具RViz
- 5.5 数据记录工具ros2 bag
- 5.6 ROS 2基础之Git进阶
- 5.6.1 查看修改内容
- 5.6.2 学会撤销代码
- 5.6.3 进阶掌握Git分支
- 5.7 小结与点评
- 第6章 建模与仿真
- 6.1 机器人建模与仿真概述
- 6.1.1 移动机器人的结构介绍
- 6.1.2 常用机器人仿真平台
- 6.2 使用URDF创建机器人
- 6.2.1 帮机器人创建一个身体
- 6.2.2 在RViz中显示机器人
- 6.2.3 使用Xacro简化URDF
- 6.2.4 创建机器人及传感器部件
- 6.2.5 完善机器人执行器部件
- 6.2.6 贴合地面,添加虚拟部件
- 6.3 添加物理属性让机器人更真实
- 6.3.1 为机器人部件添加碰撞属性
- 6.3.2 为机器人部件添加质量与惯性
- 6.4 在Gazebo中完成机器人仿真
- 6.4.1 安装与使用Gazebo构建世界
- 6.4.2 在Gazebo中加载机器人模型
- 6.4.3 使用Gazebo标签扩展URDF
- 6.4.4 使用两轮差速插件控制机器人
- 6.4.5 激光雷达传感器仿真
- 6.4.6 惯性测量传感器仿真
- 6.4.7 深度相机传感器仿真
- 6.5 使用ros2_control驱动机器人
- 6.5.1 ros2_control介绍与安装
- 6.5.2 使用Gazebo接入ros2_control
- 6.5.3 使用关节状态发布控制器
- 6.5.4 使用力控制器控制轮子
- 6.5.5 使用两轮差速控制器控制机器人
- 6.6 小结与点评
- 第7章 自主导航
- 7.1 机器人导航介绍
- 7.1.1 同步定位与地图构建
- 7.1.2 机器人导航
- 7.2 使用slam_toolbox完成建图
- 7.2.1 构建第一张导航地图
- 7.2.2 将地图保存为文件
- 7.3 机器人导航框架Navigation 2
- 7.3.1 Navigation 2介绍与安装
- 7.3.2 配置Navigation 2参数
- 7.3.3 编写launch并启动导航
- 7.3.4 进行单点与路点导航
- 7.3.5 导航过程中进行动态避障
- 7.3.6 优化导航速度和膨胀半径
- 7.3.7 优化机器人到点精度
- 7.4 导航应用开发指南
- 7.4.1 使用话题初始化机器人位姿
- 7.4.2 使用TF获取机器人实时位置
- 7.4.3 调用接口进行单点导航
- 7.4.4 使用接口完成路点导航
- 7.5 导航最佳实践之做一个自动巡检机器人
- 7.5.1 完成机器人系统架构设计
- 7.5.2 编写巡检控制节点
- 7.5.3 添加语音播报功能
- 7.5.4 订阅图像并记录
- 7.6 ROS 2基础之Git仓库托管
- 7.6.1 添加自描述文件
- 7.6.2 将代码托管在Gitee
- 7.6.3 将代码托管在GitHub
- 7.7 小结与点评
- 第8章 使用自己的规划器和控制器导航
- 8.1 掌握ROS 2插件机制
- 8.1.1 pluginlib介绍与安装
- 8.1.2 定义插件抽象类
- 8.1.3 编写并生成第一个插件
- 8.1.4 编写插件测试程序
- 8.2 自定义导航规划器
- 8.2.1 自定义规划器介绍
- 8.2.2 搭建规划器插件框架
- 8.2.3 实现自定义规划算法
- 8.2.4 配置导航参数并测试
- 8.3 自定义导航控制器
- 8.3.1 自定义控制器介绍
- 8.3.2 搭建控制器插件框架
- 8.3.3 实现自定义控制算法
- 8.3.4 配置导航参数并测试
- 8.4 小结与点评
- 第9章 搭建一个实体移动机器人
- 9.1 移动机器人系统设计
- 9.1.1 机器人传感器
- 9.1.2 机器人执行器
- 9.1.3 机器人决策系统
- 9.2 单片机开发基础
- 9.2.1 开发平台介绍与安装
- 9.2.2 第一个HelloWorld工程
- 9.2.3 使用代码点亮LED灯
- 9.2.4 使用超声波测量距离
- 9.2.5 使用开源库驱动IMU
- 9.3 机器人控制系统的实现
- 9.3.1 使用开源库驱动多路电动机
- 9.3.2 电动机速度测量与转换
- 9.3.3 使用PID控制轮子转速
- 9.3.4 运动学正逆解的实现
- 9.3.5 机器人里程计计算
- 9.4 使用micro-ROS接入ROS 2
- 9.4.1 第一个节点
- 9.4.2 订阅话题控制机器人
- 9.4.3 发布机器人里程计话题
- 9.5 移动机器人建图与导航实现
- 9.5.1 驱动并显示雷达点云
- 9.5.2 移动机器人的坐标系框架介绍
- 9.5.3 准备机器人URDF
- 9.5.4 发布里程计TF
- 9.5.5 完成机器人建图并保存地图
- 9.5.6 完成机器人导航
- 9.6 小结与点评
- 第10章 ROS 2使用进阶
- 10.1 消息服务质量之QoS
- 10.1.1 QoS策略介绍
- 10.1.2 QoS的兼容性
- 10.1.3 Python QoS兼容性测试
- 10.1.4 C++QoS兼容性测试
- 10.2 执行器与回调组
- 10.2.1 执行器与回调组介绍
- 10.2.2 在Python中使用回调组
- 10.2.3 在C++中使用回调组
- 10.3 生命周期节点
- 10.3.1 生命周期节点介绍
- 10.3.2 在Python中编写生命周期节点
- 10.3.3 在C++中编写生命周期节点
- 10.4 同一进程组织多个节点
- 10.4.1 使用执行器组织多个节点
- 10.4.2 使用组件运行组合节点
- 10.4.3 编写自己的组件
- 10.5 使用消息过滤器同步数据
- 10.5.1 消息过滤器介绍
- 10.5.2 在Python中同步传感器数据
- 10.5.3 在C++中同步传感器数据
- 10.6 DDS中间件进阶
- 10.6.1 使用不同的DDS进行通信
- 10.6.2 配置局域网通信
- 10.6.3 调整DDS配置
- 10.6.4 使用DDS共享内存
- 10.7 小结与点评
展开全部
出版方
机械工业出版社
机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。