商品详情
随着科学技术的发展以及人们对机器人的逐渐认知,机器人的应用规模和范围日益扩大,不仅制造环境下的工业机器人应用逐渐普及,非制造环境下的服务与仿人机器人应用也蓬勃发展。机器人应用环境的日益广泛和任务复杂度的日益增强,提高了机器人开发的时效性和困难度,对机器人硬件和软件技术都提出了更高的要求。而相比于硬件的开发,软件开发明显力不从心。为迎接这个挑战,全球各地的开发者与研究机构纷纷投入机器人通用软件框架的研发工作中。近些年里,产生了多种优秀的机器人软件框架,为软件开发工作提供了极大的便利,其中较为优秀的软件框架之一就是机器人操作系统(Robot Operating System,ROS)。ROS 是一个适用于机器人的开源操作系统。它提供了操作系统应有的服务,包括硬件抽象、底层设备控制、常用函数的实现、进程间消息传递以及包管理;还提供了用于获取、编译、编写和跨计算机运行代码所需的工具和库函数。ROS2是新一代机器人操作系统,基于DDS 通信协议实现分布式架构,支持实时控制、多平台部署及模块化设计。ROS2 相较于ROS1,在设计目标、实时性、网络通信、节点管理、安全性以及跨平台支持等方面都有了显著的提升和改进。这些改进使得ROS2 更加适应工业环境和复杂应用场景的需求,为机器人技术的发展提供了强有力的支持。编者来自重庆邮电大学自动化学院。本书偏重ROS2 机器人软件开发技术,是编者在多年从事教学、科研的基础上,经多次试用,反复修改提高而成。本书将有关教学和研发成果加以总结提高,并吸收国内外最新理论、方法和技术,注重运用CDIO 工程教育理念,立足培养实际动手能力、综合应用能力和创新思维能力。本书注重知识内容的系统性、先进性与实践性,强调实践内容的应用性、工程性。为此,书中大量选用了编者所在团队的最新研发成果、学生参加科技竞赛作品、学生实验实践项目作为实例。本书共分10章:第1章介绍ROS2 的诞生、发展、优势和安装方法,并提供教学实践所需的源代码包,介绍二进制包与源代码包的区别;第2章介绍ROS2的文件系统,包括ROS2 系统分层、工作空间、功能包、colcon 构建工具等,并介绍ROS2 的通信架构,包括ROS2 的节点、通信模型、接口文件、DDS 通信、分布式通信和质量服务策略;第3章介绍ROS2 的常用工具,包括启动管理工具Launch、rqt 模块化可视化工具、数据可视化工具Rviz2、Gazebo 仿真工具、rosbag2 功能包;第4章介绍ROS2 客户端库的概念,以及目前最常用的rclcpp和rclpy 客户端库中函数的定义、用法,以及几种通信方式的具体格式和实现方法;第5章介绍坐标变换TF2 的基本规则、TF2 编程基础、TF2 广播及监听,以及乌龟跟随案例的实现;第6章说明如何使用urdf 文件创建一个机器人模型,然后使用xacro 文件优化该模型,添加传感器模型,通过ros2_control 控制器让机器人动起来,并且放置到Rviz2 或Gazebo 环境中实现可视化或仿真;第7章探讨SLAM 建图和Nav2 导航开发技术,介绍常用的SLAM 建图算法Cartographer,讲解Nav2 导航的配置和仿真;第8章讨论视觉图像应用开发技术,包括ROS2图像数据、摄像头标定、OpenCV 库和人脸识别、物体检测;第9章探讨机械臂应用开发技术,包括创建机械臂URDF 模型、机械臂与MoveIt 的关联、机械臂与Gazebo 的关联、MoveIt 与Gazebo 的关联;第10章介绍ROS2 机器人开发实例,包括ROS2 六足机器人仿真、TurtleBot4 建图与导航。本书第1~4章由滕昭君、蒋畅江编写;第5、6、8章由杨凤磊、蒋畅江编写;第7、9、10章由黄渝、唐贤伦编写。全书由蒋畅江统稿。本书配有免费的教学软件包,如有需要可扫描封底二维码下载使用;配有免费电子课件,欢迎选用本书作为教材的老师登录www.cipedu.com.cn 注册后下载使用。鉴于ROS2 机器人开发技术的飞速发展,尽管编写过程中尽心尽力,但由于编者水平有限,书中难免有疏漏或不妥之处,恳请读者批评指正。
编著者2025年9月
本书是内容全面、偏重基础的ROS2 机器人开发入门书籍,是作者总结多年科研教学成果并在吸收国内外最新理论、方法和技术的基础上完成的。本书详细介绍了ROS2 的安装、集成开发环境搭建和常用工具,详细讲解了ROS2 系统架构、ROS2 客户端库、坐标变换TF2 及编程、机器人建模与仿真;以工程开发为重心,详细讲解SLAM 建图与Nav2 导航、视觉图像应用、机械臂应用等多方面ROS2 应用的实现原理和方法。本书结合大量实例,帮助读者在实现ROS2 基础功能的同时深入理解基于ROS2 的机器人开发技术,将书中的内容用于实践。本书注重运用CDIO工程教育理念,立足培养实际动手能力、综合应用能力、创新思维能力。本书配有免费教学软件包(可扫描封底二维码获取),帮助读者更好地理解和实践书中内容;配有免费电子课件,欢迎选用本书作教材的老师登录www.cipedu.com.cn 注册后下载使用。本书可作为普通高等院校机器人工程、自动化、人工智能、电子信息工程、软件工程等相关专业的教材,也可供广大科技工作者和工程技术人员参考使用。
无
第1章 ROS2 介绍与安装1.1 初识ROS2 0011.1.1 ROS2 诞生与发展 0011.1.2 ROS2 生态组成 0031.1.3 ROS2 优势 0041.1.4 ROS2 应用方向 0051.2 ROS2 的安装及测试 0051.2.1 选择操作系统 0051.2.2 ROS2 安装与卸载 0081.2.3 测试ROS2 0091.3 Linux 命令行操作 0101.3.1 常用Linux 命令行 0101.3.2 使用命令行安装软件包 0131.4 ROS2 集成开发环境搭建 0141.4.1 VSCode 0141.4.2 终端 0141.4.3 git 0161.4.4 下载配套源码 0161.5 二进制包与源代码包 0161.6 本章小结 017习题一 018
第2章 ROS2 系统架构2.1 ROS2 文件系统 0192.1.1 ROS2 系统分层 0192.1.2 工作空间 0202.1.3 功能包 0212.1.4 colcon 构建工具 0252.2 ROS2 通信架构 0262.2.1 节点 0272.2.2 通信模型 0272.2.3 接口文件 0322.2.4 DDS 通信 0342.2.5 分布式通信 0362.2.6 质量服务策略 0372.3 本章小结 037习题二 038
第3章 ROS2 常用工具3.1 启动管理工具Launch 0403.1.1 认识Launch 0403.1.2 操作演示 0403.2 模块化可视化工具rqt 0443.2.1 认识rqt 0443.2.2 操作演示 0443.3 数据可视化工具Rviz2 0483.3.1 认识Rviz2 0483.3.2 操作演示 0483.4 仿真工具Gazebo 0493.4.1 认识Gazebo 0493.4.2 操作演示 0503.5 rosbag2 功能包 0513.5.1 认识rosbag2 0513.5.2 操作演示 0523.6 本章小结 053习题三 053
第4章 ROS2 客户端库4.1 ROS2 客户端库简介 0554.2 rclcpp 0554.2.1 节点 0564.2.2 话题 0584.2.3 服务 0634.2.4 动作 0674.2.5 参数 0744.3 rclpy 0764.3.1 rclpy 与rclcpp 比较 0774.3.2 节点 0774.3.3 话题 0784.3.4 服务 0814.3.5 动作 0834.3.6 参数 0874.4 本章小结 089习题四 089
第5章 坐标变换TF2 及编程5.1 认识TF2 0915.1.1 简介 0915.1.2 ROS2 中的TF2 0925.1.3 ROS2 中TF2 坐标的基本规则 0935.2 TF2 编程基础 0955.2.1 TF2 功能包及官方实例 0955.2.2 TF2 工具 0955.2.3 广播器与监听器 0975.3 TF2 广播及监听 0985.3.1 TF2 静态广播 0985.3.2 TF2 动态广播 1015.3.3 TF2 监听 1045.4 乌龟跟随案例的实现 1075.5 本章小结 112习题五 112
第6章 机器人建模与仿真6.1 机器人URDF 模型 1146.2 创建与显示URDF 模型 1176.2.1 机器人描述功能包 1176.2.2 创建URDF 模型 1186.2.3 解析URDF 模型 1196.2.4 使用xacro 文件简化URDF 模型 1216.2.5 在Rviz2 中显示模型 1236.2.6 让机器人动起来 1256.3 添加碰撞和物理属性 1266.4 添加传感器模型 1276.4.1 添加摄像头 1276.4.2 添加激光雷达 1286.5 机器人Gazebo 仿真 1306.5.1 在Gazebo 中显示机器人模型 1306.5.2 Gazebo 插件 1336.5.3 摄像头仿真 1346.5.4 激光雷达仿真 1356.5.5 使用两轮差速插件控制机器人运动 1386.6 使用ros2_control 控制机器人运动 1396.6.1 ros2_control 的安装 1396.6.2 ros2_control 的框架 1396.6.3 ros2_control 的配置 1416.7 轮式机器人Gazebo 运动仿真 1446.7.1 URDF 模型 1456.7.2 launch 文件 1516.7.3 运行仿真 1536.8 本章小结 155习题六 156
第7章 SLAM 建图与Nav2 导航开发技术7.1 SLAM 基础 1577.1.1 图像常见格式 1577.1.2 占据栅格地图 1587.1.3 SLAM 原理和组成 1587.1.4 SLAM 关键技术与分类 1597.2 Cartographer 1607.2.1 Cartographer 介绍 1607.2.2 Cartographer 安装 1617.2.3 Cartographer 参数配置 1627.3 Navigation 2 概述 1647.3.1 Nav2 导航的介绍 1647.3.2 Nav2 导航相关概念 1657.3.3 Nav2 导航安装与介绍 1677.4 Nav2 行为树 1697.4.1 行为树概述 1697.4.2 导航到位姿行为树 1697.4.3 跟随动态点行为树 1717.5 配置规划器、恢复器、控制器服务器和平滑器 1727.5.1 配置规划器 1737.5.2 配置恢复器 1777.5.3 配置控制器服务器 1787.5.4 配置平滑器 1807.6 导航插件 1827.6.1 Costmap Layers 插件 1827.6.2 行为树插件 1867.6.3 控制器插件 1907.6.4 规划器插件 1957.6.5 恢复器插件 1997.7 ROS2 SLAM 建图及导航仿真 2027.7.1 配置仿真环境 2027.7.2 SLAM 建图 2037.7.3 导航验证 2057.8 轮式机器人建图导航 2087.8.1 地图创建 2087.8.2 建图 2127.8.3 导航 2167.9 本章小结 220习题七 221
第8章 视觉图像应用开发技术8.1 ROS2 图像数据 2228.1.1 视觉传感器 2228.1.2 二维图像数据 2238.1.3 三维点云图像 2248.1.4 在ROS2 中使用摄像头 2258.2 摄像头标定 2278.2.1 camera_calibration 功能包 2278.2.2 摄像头标定过程 2278.3 OpenCV 库和人脸识别 2288.3.1 使用OpenCV 库 2298.3.2 使用OpenCV 实现人脸识别 2338.4 物体检测 2388.4.1 介绍与安装 2388.4.2 运行仿真 2398.5 本章小结 240习题八 241
第9章 机械臂应用开发技术9.1 创建机械臂URDF 模型 2429.1.1 机械臂的外形建立 2429.1.2 机械臂link 的inertial 的设置 2429.2 机械臂与MoveIt 的关联 2439.2.1 建立相关文件 2439.2.2 创建项目 2449.2.3 编译试运行 2479.3 机械臂与Gazebo 的关联 2479.3.1 建立文件 2479.3.2 编译、运行、测试 2499.4 MoveIt 与Gazebo 的关联 2519.4.1 原理分析 2519.4.2 launch 文件编写 2519.4.3 执行测试 2549.5 本章小结 255习题九 255
第10章 ROS2 机器人开发实例10.1 ROS2 六足机器人仿真 25610.1.1 launch 文件 25610.1.2 运行仿真 25810.2 TurtleBot4 建图与导航 25910.2.1 TurtleBot4 介绍与配置 26010.2.2 控制TurtleBot4 26210.2.3 TurtleBot4 建图 26510.2.4 TurtleBot4 导航 26610.3 本章小结 268习题十 268
参考文献
- 新华一城书集 (微信公众号认证)
- 上海新华书店官方微信书店
- 扫描二维码,访问我们的微信店铺
- 随时随地的购物、客服咨询、查询订单和物流...