ROS2机器人开发:从入门到实践

ROS2机器人开发:从入门到实践

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

“鱼香ROS”机器人社区创始人撰写,多位专家一致推荐。

内容简介

机器人开发是一项复杂的系统工程,ROS 2为智能机器人开发提供了强有力的支持,极大地提高了机器人软件开发效率。

本书首先对ROS 2的基础概念、通信机制、常用库和工具进行介绍,带领读者入门ROS 2机器人开发;接着引导读者完成移动机器人的建模和仿真、建图和导航、自定义控制器和规划器等一系列实践;然后在真机实战环节,通过制作一个基于ROS 2的真实机器人,帮助读者打通仿真与真机之间的壁垒;最后,本书深入讲解了ROS 2进阶使用的相关知识,为读者进一步在实战中使用ROS 2进行机器人开发打下夯实基础。

考虑读者基础,书中示例均以C和Python两种语言实现,同时加入了关于C新特性、Git工具、多线程和回调函数等基础知识的讲解。

作者简介

作者桑欣,“鱼香ROS”机器人社区(公众号、B站、知乎)发起人,“一键安装ROS”等机器人开源库作者,拥有多年机器人与自动化开发经验。他在网上发布有“动手学ROS2”等机器人教程,还制作了开源机器人“FishBot”,获得了广大机器人爱好者的一致好评,深受机器人开发者的喜爱。

章节目录

版权信息

推荐序一

推荐序二

前言

第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 小结与点评

ROS2机器人开发:从入门到实践是2024年由机械工业出版社出版,作者桑欣。

得书感谢您对《ROS2机器人开发:从入门到实践》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
Java 开发从入门到精通 电子书
本书由浅入深地详细讲解了Java的开发技术,并通过具体实例的实现过程演练了各个知识点的具体使用流程。本书共20章,第1~2章讲解了Java技术的基础知识,包括Java印象和首段Java程序;第3~9章分别讲解了Java语法、条件语句、循环语句、数组、面向对象等知识,这些内容都是Java开发技术的核心知识;第10~14章分别讲解了集合、类库、泛型、异常处理、I/O和文件处理的基本知识,这些内容是Ja
C编程从入门到实践 电子书
更适合95后的C语言编程入门书。
C++ 开发从入门到精通 电子书
本书的特色是实现了入门知识、实例演示、范例演练、技术解惑、综合实战5大部分内容的融合,让读者看得懂、用得上、学得会。 一本书的容量,讲解了入门类、范例类和项目实战类三类图书的内容。 丰富的配套资源学习更高效 440个实例,更多的实践演练机会 837分钟视频讲解,降低学习难度 290个拓展实例,真正地举一反三 101个技术解惑,破解学习难点 “技术讲解”→范例演练”→“技术解惑”贯穿全书,全面掌握C++语言开发 技术讲解:通过145个实例,循序渐进地讲解了C开发的各个知识点。 范例演练:290个拓展范例和5个综合实例,使读者真正具有项目实战能力。 技术解惑:把容易混淆的概念单独讲解和剖析,帮助读者绕过学习中的陷阱。 QQ群 网站论坛实现教学互动,形成互帮互学的朋友圈 网站论坛:读者答疑/学习辅导/PPT资源下载读者 QQ群:疑惑快速解答/和作者直接交流
C语言开发从入门到精通 电子书
本书循序渐进、由浅入深地详细讲解了C语言开发的技术,并通过具体实例的实现过程演练了各个知识点的具体使用流程。全书共22章,第1~4章分别讲解了C语言开发的基础知识,包括C语言简介,安装开发工具等;第5~10章分别讲解了函数、输入/输出、流程控制、数组操作等知识,这些内容都是C语言技术的核心知识;第11~20章分别讲解了指针、结构体、共用体和枚举、链表、位运算、预编译、文件操作、错误调试和高级编程技
移动Web开发从入门到精通 电子书
本书以零基础讲解为宗旨,用实例引导读者学习,深入浅出地介绍了移动Web开发的相关知识和实战技能。本书第1篇【基础知识】主要讲解网页和网站制作基础、搭建移动Web开发环境、打造移动Web应用程序等;第2篇【核心技术】主要讲解与移动Web开发相关的核心技术和工具,包括HTML、HTML5、CSS、JavaScript、jQueryMobile、PhoneGap等,还通过实例介绍了移动设备网页的开发方法