《ROS 2机器人编程实战:基于现代C++和Python 3》徐海望 | PDF下载|ePub下载
ROS 2机器人编程实战:基于现代C++和Python 3 版权信息
- 出版社:机械工业出版社
- 出版时间:2022-12-01
- ISBN:9787111715504
- 条形码:9787111715504 ; 978-7-111-71550-4
ROS 2机器人编程实战:基于现代C++和Python 3 本书特色
从设计思想到应用技巧,从基础概念到工程实战,一线机器人工程师带你玩转ROS 2
ROS 2机器人编程实战:基于现代C++和Python 3 内容简介
本书介绍了基于ROS 2编程所需的各方面知识,并通过结合基本概念、设计思想、工程实践、编程调试和应用技巧等多面一体进行阐述,使读者可以更加快速地掌握ROS 2机器人编程的核心思想。书中包含大量的代码和实战案例,同时还会讲述开源项目及其相关规范和注意事项,结合作者实际的工程经验、与时俱进的 ROS 2设计思想和源码案例,读者可以学习到不拘泥于软件版本与软件环境的编程知识。此外,本书的*后一章还给出了ROS 2在实际项目中落地的应用策略和实用建议。书中所有源码都已按照ROS 2的相关规范进行开源,并与读者共同维护。 本书为读者提供了全部案例源代码下载和高清学习视频,读者可以直接扫描二维码观看。 本书适合机械、自动化、机器人、计算机、自动驾驶和人工智能等行业的从业者、学生和研究人员,以及 DIY 爱好者和极客等阅读学习。
ROS 2机器人编程实战:基于现代C++和Python 3 目录
第1章 构建与部署ROS 2
1.1 ROS 2的开发环境配置
1.1.1 ROS 2的发行方式
1.1.2 解决依赖问题
1.1.3 从源码安装ROS 2的技巧
1.1.4 便于开发的环境配置
1.2 ROS 2的架构体系
1.2.1 核心组件
1.2.2 机器人基础应用组件
1.2.3 可视化组件、示例组件和扩展组件
1.3 ROS 2的构建体系
1.3.1 vcstool的使用
1.3.2 colcon工具链的简介
1.3.3 colcon的构建、测试和查阅
1.4 实战:定制特定功能的ROS 2软件堆栈
第2章 模块化的功能包和节点
2.1 软件功能包的构建
2.1.1 功能包的配置方法
2.1.2 功能包的构建与测试流程
2.1.3 运行指定功能包中的程序
2.2 节点的构建方法与基本操作
2.2.1 节点与节点执行器
2.2.2 建立节点的方法
2.2.3 调试节点的方法
2.2.4 进程、线程与节点的关系
2.3 节点的常见扩展功能
2.3.1 DDS的作用域
2.3.2 ROS的命名空间
2.3.3 生命周期节点
2.4 实战:功能包的打包与发行
第3章 节点的体系化与扩展
3.1 节点的日志系统
3.1.1 日志的基本分类
3.1.2 收集和查阅历史日志
3.1.3 日志的应用技巧
3.2 使用启动脚本
3.2.1 构建启动系统
3.2.2 同时运行多个进程
3.2.3 配置启动脚本
3.3 节点的参数系统
3.3.1 为节点加入参数
3.3.2 YAML的基本语法
3.3.3 在launch文件中引入参数
3.4 通用的插件系统
3.4.1 创建插件
3.4.2 动态加载插件
3.4.3 插件的使用案例
3.5 ROS 2的组件系统
3.5.1 单组件的实现流程
3.5.2 实现自定义的组件
3.5.3 使用组件容器加载多个组件
3.6 实战:RealSense与ROS的桥接
第4章 ROS 2的基础通信
4.1 基于发布订阅模式的topic通信
4.1.1 尝试发布和订阅
4.1.2 调试topic的方法
4.1.3 消息的服务质量
4.1.4 进程内高效通信
4.1.5 尝试共享内存
4.1.6 统计Topic状态
4.2 基于主从式架构的service通信
4.2.1 实现service服务端和客户端
4.2.2 在客户端处理应答
4.2.3 service的局限性
4.3 实战:级联生命周期节点
第5章 ROS 2的扩展通信
5.1 基于主从式架构的action通信
5.1.1 实现action服务端和客户端
5.1.2 在客户端获取反馈、状态和结果
5.1.3 action的抢占和队列
5.2 接口的使用及其自定义
5.2.1 自定义接口
5.2.2 使用自定义接口
5.2.3 消息编写的基本规范
5.2.4 接口的使用技巧
5.3 基于topic实现的坐标系统
5.3.1 广播静态坐标变换
5.3.2 广播动态坐标变换
5.3.3 监听坐标变换
5.4 实战:模块化的导航功能框架
第6章 面向ROS 2的调试与测试
6.1 调试ROS 2的代码
6.1.1 使用GDB调试
6.1.2 使用ros2_tracing
6.2 使用rosbag2实现持久记录
6.2.1 使用ros2bag录制消息
6.2.2 播放和处理bag文件
6.2.3 在程序中调用rosbag2的API
6.3 实现单元测试
6.3.1 编写简单的单元测试
6.3.2 断言的种类
6.3.3 统计测试覆盖率
第7章 探索ROS 2的扩展功能
7.1 了解开源协议与版权
7.1.1 开源协议介绍
7.1.2 版权信息的重要性
7.1.3 项目中的Notice文件
7.2 构建ROS 2的vendor功能包
7.2.1 辨识项目的构建方式
7.2.2 CMake项目的引入
7.2.3 Autoconf项目的引入
7.3 使用ROS 2规范传感器接口
7.3.1 传感器数据的分类
7.3.2 同步多源数据
7.4 实现软硬件诊断系统
7.4.1 更新诊断数据
7.4.2 分析诊断数据
第8章 ROS 2的产品落地指导
8.1 架构设计与硬件选型
8.1.1 硬件平台与外设的选型
8.1.2 软件架构的层次化
8.2 软件实现的注意事项
8.2.1 支持ROS 2的软件平台
8.2.2 原型环境与交付环境
8.2.3 自启动与下电保护
8.3 集成与交付
8.3.1 构建环境的可重复部署
8.3.2 持续集成与持续交付
8.3.3 开放平台中的CI/CD
ROS 2机器人编程实战:基于现代C++和Python 3 作者简介
徐海望,机器人软硬件研发工程师、社区贡献者、机器人爱好者。曾就职于小米机器人实验室,铁蛋创始团队成员之一,曾参与若干机器人的设计、研发,并负责铁蛋的开源社区运营。擅长移动机器人的软硬件架构设计与实现。 高佳丽,机器人软硬件研发工程师,机器人爱好者。曾就职于小米,铁蛋创始团队成员之一,并参与多项小米自研穿戴类产品开发。擅长嵌入式软件驱动的开发,多传感器系统中间件的开发与调试;擅长机器人上层应用的设计与实现。