本书全面地介绍了ROS2机器人操作系统与Gazebo机器人仿真技术,内容涵盖了机器人技术的基础知识、ROS2的运行原理、基本操作与编程方法,以及新一代Gazebo仿真工具的使用,通过详细的操作步骤解析和丰富的实践案例,帮助读者快速掌握机器人开发与仿真的关键技能。书共9章,第1章介绍了机器人技术基础知识,对机器人领域进行了全面概述;第2~4章重点介绍了ROS2的安装、编程和仿真案例,以便读者熟练掌握ROS2;第5章和第6章介绍了Gazebo的安装、仿真环境和机器人建模方法,第7章介绍ROS2和Gazebo进行联合仿真的方法,第8章以移动机器人的自主建图和导航仿真介绍导航框架Nav2的使用方法,第9章介绍六足、四足、双足机器人、多旋翼无人机、海面船舶和水平潜艇等6种机器人仿真方法和流程。本书内容丰富,理论与实践相结合,适合机器人技术初学者、高校计算机与机器人相关专业高年级本科生和研究生、科研院所的研究人员及从事机器人开发的工程师阅读和参考。随书附赠,本书中的所有仿真模型、全书源码、授课PPT和授课视频。
●内容全面本书从基础的Ubuntu系统的安装与开发环境搭建起步,初学者易入门;全面介绍ROS2机器人操作系统的安装、配置,以及命令行工具、rqt工具、TF2坐标系管理、Launch文件等重点内容。通过丰富的案例和实践,读者可快速掌握ROS2的机器人开发方法。在机器人仿真方面,本书详细介绍了Gazebo的使用方法,包括基于SDF的仿真环境与机器人构建、ROS2与Gazebo联合仿真的全流程和7种不同类型机器人的仿真案例。●技术先进本书选用Ubuntu24.04长期版操作系统、ROS2Jazzy长期版和新一代GazeboHarmonic为主进行介绍。随着老版本的退出,新版本凭借其的性能和丰富的新特性,将为机器人开发和仿真提供更强大的支持,满足目前及未来机器人开发的需求。●组织结构好本书遵循由易到难、由浅入深的原则,精心组织内容。从机器人基础理论与知识入手,逐步深入到ROS2机器人操作系统的详细讲解,再过渡到Gazebo仿真工具的运用,最后重点剖析ROS2与Gazebo联合仿真的方法及7种不同类型机器人仿真案例,使读者能够循序渐进地构建知识体系。●学习资源丰富随书附赠了全套教学课件、程序源码,既方便自学,也便于教师用于课堂理论授课和实验指导。此外,每章配备教学视频,助力读者轻松高效地学习。
前言
随着人工智能技术的飞速发展,机器人领域正迎来前所未有的变革与机遇。机器人不再仅仅是工业生产中的自动化工具,而是正在逐渐融入人类生活的方方面面,从家庭服务到太空探索,从医疗到危险环境作业,其应用场景不断拓展。在这一背景下,掌握机器人开发与仿真技术已成为进入机器人行业的关键技能。
ROS(Robot Operating System,机器人操作系统)作为机器人领域的主流开发框架,为机器人编程提供了一个高效、灵活且易于扩展的平台。近年来,随着ROS 2的推出,其在实时性、跨平台支持、安全性等方面进行了全面升级,进一步推动了机器人技术的发展。与此同时,Gazebo作为一款强大的物理仿真工具,能够高度逼真地模拟机器人与环境的交互,为机器人的设计、测试和优化提供了有力支持。长期以来Gazebo作为仿真工具能够与ROS 2进行联合仿真,一方面作为ROS的默认仿真工具,解决了ROS缺乏机器人仿真工具的问题; 另一方面Gazebo仿真工具为ROS 2程序的实验和验证提供了平台,可在程序部署到真实机器人前进行算法检验,提升ROS 2程序的开发效率。
目前ROS 2和Gazebo发展迅速,已成为机器人开发和仿真领域的核心工具。然而,国内缺乏系统介绍二者特性的书籍和资料,鉴于这一现状,本书精心选取了ROS 2在2024年5月发布的长期支持版本Jazzy和与之所配套的在2023年9月发布的新一代Gazebo的长期支持版本Harmonic作为核心内容进行系统介绍。新的ROS 2和Gazebo不论在安装、使用和编程方面均展现出易用性。同时,二者的联合仿真也更加规范、合理,整体逻辑也更为清晰,极大地降低了学习和开发的门槛。基于以上优势,本书建议初学者直接从新的ROS 2和Gazebo入手,以便充分利用其强大的新特性,并在未来的开发中获得长期技术支持和持续收益。对于有一定经验的读者,可参考本书介绍的内容,将现有项目迁移到新的ROS 2和Gazebo版本,确保项目在未来的开发和应用中保持高效和可持续性。无论是机器人技术的初学者,还是希望深入了解ROS 2与Gazebo高级应用的开发者,本书都将是一本极具价值的参考书。
本书旨在为读者提供一本系统、全面且实用的教材和参考资料,帮助读者快速地掌握ROS 2与Gazebo的基本原理与核心技术。第1章为机器人技术基础知识,介绍了机器人的定义、发展历史、分类、构成到产业现状,是对机器人领域的概述。第2~4章全面地介绍了ROS 2机器人操作系统。第2章介绍了ROS 2的基本原理、安装方法、命令行工具和rqt的使用方法等基础内容。第3章以Python语言为主介绍了ROS 2工作空间的结构、rclpy库的使用、坐标系管理、Launch文件编写和URDF的使用等内容。第4章通过TurtleSim仿真环境介绍了ROS 2基础仿真,通过丰富的案例展示了话题控制、服务调用、动作反馈及群机器人仿真等内容。第5章和第6章细致地介绍了新一代Gazebo仿真工具。第5章介绍了Gazebo的架构、安装、图形用户界面,以及命令行工具的使用方法等基础知识。第6章详细地介绍了使用SDF构建仿真环境、创建模型和机器人等内容。第7~9章介绍了ROS 2和Gazebo联合仿真的方法和实际应用案例。第7章介绍了ROS 2和Gazebo联合仿真的基本原理和一般流程。第8章详细地介绍了Nav2无人车导航框架的基本原理和仿真方法。第9章介绍了六足机器人、四足机器人、双足机器人、四旋翼无人机、海面船舶和水下潜艇6种不同类型的机器人仿真方法,展示了ROS 2与Gazebo联合仿真的一般流程和步骤,以及二者在多样化机器人开发和应用中的广泛前景。随书附赠的全部代码均经过验证,方便读者运行和修改。
资源下载提示
素材(源码)等资源: 扫描目录上方的二维码下载。
视频等资源: 扫描封底的文泉云盘防盗码,再扫描书中相应章节的二维码,可以在线学习。
在编写本书的过程中,笔者力求做到内容翔实、语言通俗易懂,并通过大量实例和详细的步骤解析,帮助读者更好地理解和掌握相关知识。同时,我们也注意到机器人技术的快速发展,在内容选择上注重前沿性与实用性,确保本书能够满足当前机器人开发与仿真的实际需求。
最后,感谢所有支持本书编写工作的同事和朋友,也期待读者在学习过程中提出宝贵意见和建议。
作者
2025年5月5日
侯伟,华北理工大学理学院教师,工学博士,硕士研究生导师。长期从事图像处理和计算机视觉、人工智能、大数据、机器人控制等方面的教研工作。主持和参与科研项目多项,完成企业技术攻关2项。目前已发表学术论文6篇,授权发明专利2项,授权软件著作权3项,编写和参编教材3本。指导学生参加科技竞赛10余项,指导学生创新创业项目5项,获得、省级奖多项。靳紫轩,北京科技大学计算机与通信工程学院2024级硕士研究生,本科毕业于华北理工大学智能科学与技术专业。硕士研究生期间专注于多智能体系统涌现行为建模与仿真、基于深度强化学习的分布式群体行为控制算法及多智能体通用系统编程框架设计等方向的研究。在群智能体控制领域具有较丰富的理论和实践经验。
目录
教学课件(PPT)
本书源码
第1章机器人概述(93min)
1.1机器人定义
1.2机器人发展历史
1.2.1萌芽时期
1.2.2近代时期
1.2.3信息时期
1.2.4智能时期
1.3机器人分类
1.4机器人构成
1.5机器人产业
1.5.1各国政策
1.5.2机器人产业链
1.6本章小结
第2章ROS 2机器人操作系统(185min)
2.1ROS 2基本原理
2.1.1ROS 2和ROS 1的比较
2.1.2ROS 2架构
2.1.3ROS 2的核心概念
2.2ROS 2的安装
2.2.1VirtualBox安装
2.2.2Ubuntu 24.04安装与配置
2.2.3ROS 2 Jazzy安装
2.2.4ROS 2第三方功能包
2.3ROS 2命令行工具
2.3.1节点管理
2.3.2话题操作
2.3.3服务操作
2.3.4参数操作
2.3.5动作操作
2.3.6记录与重播操作
2.3.7功能包管理
2.4rqt工具
2.4.1rqt简介
2.4.2rqt的使用
2.4.3案例: 绘制奥运五环旗
2.5RViz简介
2.6本章小结
第3章ROS 2编程基础(231min)
3.1ROS 2项目
3.1.1工作空间
3.1.2创建功能包
3.1.3编写程序
3.1.4编译功能包
3.1.5运行功能包
3.1.6功能包的结构
3.2rclpy库的使用
3.2.1节点
3.2.2话题
3.2.3服务
3.2.4动作
3.2.5参数
3.2.6消息接口
3.2.7案例: 创建话题发布者
3.2.8案例: 创建话题订阅者
3.2.9案例: 创建服务器
3.2.10案例: 创建客户端
3.2.11案例: 创建动作服务器
3.2.12案例: 创建动作客户端
3.2.13案例: 创建参数服务
3.2.14案例: 创建自定义消息类型
3.3坐标系管理
3.3.1坐标变换原理
3.3.2TF2简介
3.3.3案例: 发布静态坐标系
3.3.4案例: 发布动态坐标系
3.3.5案例: 查询坐标系变换
3.4Launch文件
3.4.1Launch文件简介
3.4.2常用类介绍
3.4.3案例: Launch文件编写
3.4.4案例: 命名空间与节点名称设置
3.4.5案例: 参数设置
3.4.6案例: 话题重映射
3.5URDF简介
3.5.1机器人状态发布器
3.5.2案例: URDF可视化
3.6本章小结
第4章ROS 2仿真基础(42min)
4.1TurtleSim仿真环境简介
4.2基础仿真
4.2.1案例: 话题控制
4.2.2案例: 服务调用
4.2.3案例: 动作反馈
4.3群机器人仿真
4.3.1案例: 随机游走
4.3.2案例: 绘制奥运五环
4.4机器人移动与TF2
4.4.1案例: 坐标广播
4.4.2案例: 移动至目标点
4.4.3案例: 小海龟跟随
4.5本章小结
第5章Gazebo基础(75min)
5.1Gazebo简介
5.1.1相关术语
5.1.2Gazebo架构
5.1.3与ROS、RViz和rqt间的区别与联系
5.2安装与运行
5.2.1Gazebo安装
5.2.2Gazebo运行
5.3GUI功能简介
5.3.1GUI
5.3.2案例: 利用GUI控制小车
5.4Gazebo命令行工具
5.4.1话题
5.4.2服务
5.4.3消息类型
5.5在线模型与本地模型库
5.6本章小结
第6章SDF基础(113min)
6.1SDF简介
6.1.1SDF、URDF与XACRO
6.1.2SDF的结构
6.2环境仿真
6.2.1基础插件
6.2.2物理要素仿真
6.2.3环境显示效果
6.2.4光源
6.2.5演员
6.3模型
6.3.1模型的结构
6.3.2模型的引入
6.3.3从三维模型创建
6.3.4从简单几何体创建
6.4机器人仿真
6.4.1关节简介
6.4.2JointController控制器
6.4.3JointPositionController控制器
6.4.4JointTractoryController控制器
6.4.5专用控制器
6.5传感器仿真
6.5.1激光雷达
6.5.2接触传感器
6.5.3IMU传感器
6.5.4相机
6.5.5深度相机
6.5.6RGBD相机
6.5.7BoundingBox相机
6.5.8Segmentation相机
6.6案例: 视觉轮式移动机器人建模
6.7本章小结
第7章Gazebo与ROS 2联合仿真(60min)
7.1简介
7.2ros_gz_sim功能包
7.2.1启动仿真环境
7.2.2添加模型
7.3ros_gz_bridge功能包
7.3.1bridge_parameter节点
7.3.2案例: 桥接单个话题
7.3.3案例: 桥接多个话题
7.4其他注意事项
7.4.1实体的控制
7.4.2话题消息类型
7.4.3相机话题
7.4.4RViz可视化SDF模型
7.5案例: 视觉巡线移动轮式机器人
7.6本章小结
第8章轮式机器人的建图与导航(69min)
8.1Nav2概述
8.1.1Nav2结构
8.1.2Nav2核心功能
8.2Nav2相关概念
8.2.1动作服务器
8.2.2生命周期节点
8.2.3行为树
8.2.4状态估计
8.2.5环境表示
8.3Nav2的安装
8.4slam_toolbox建图
8.4.1slam_toolbox简介
8.4.2slam_toolbox建图流程
8.4.3地图的保存
8.4.4地图的发布
8.5Cartographer建图
8.5.1Cartographer简介
8.5.2Cartographer建图流程
8.6路径规划
8.6.1路径规划简介
8.6.2路径规划算法
8.6.3案例: A*路径规划算法
8.7案例: 自建地图的导航
8.8案例: 自定义路径规划的导航
8.9本章小结
第9章其他类型机器人仿真简介(31min)
9.1六足机器人仿真
9.1.1建模
9.1.2步态
9.1.3仿真
9.2四足机器人仿真
9.2.1建模
9.2.2仿真
9.3双足机器人仿真
9.3.1建模
9.3.2仿真
9.4四旋翼无人机仿真
9.4.1建模
9.4.2仿真
9.5海面船舶仿真
9.5.1建模
9.5.2仿真
9.6水下潜艇仿真
9.6.1建模
9.6.2仿真
9.7本章小结