您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center 汽车系统工程   模型库  
会员   
   
软件架构设计方法、案例与实践
9月24日-25日 北京+线上
AI辅助软件测试方法与实践
9月26日-27日 北京+线上
SysML和EA进行系统设计与建模
11月19-20日 北京+线上
     
   
 
 订阅
读书笔记 | ROS2机器人开发从入门到实践
 
作者:Hi小王
  140  次浏览      5 次
 2025-8-27
 
编辑推荐:
本文是读了ROS2机器人开发从入门到实践的笔记,介绍并学习如何将机器人接入ROS2,希望对你的学习有帮助。
本文来自于DevFrank,由火龙果软件Alice编辑,推荐。

下面就一起来了解如何学习并实践ROS2机器人开发:

一、启程-让你的第一个机器人动起来

ROS本质上是用于快速搭建机器人的 软件库 (核心是通信)和 工具集 。ROS 2采用 第三方的通信组件 代替ROS 1中的通信组件,使得数据传输更加稳定和强大。同时ROS 2引入了新的C++标准,在 代码规范性 、 接口一致性 上都有了不小的提升。

ROS 2的四大通信机制分别是 话题(Topic)通信、服务(Service)通信、参数(Parameter)通信和动作(Action)通信 。

除了核心通信机制外,ROS 2还提供了丰富的可视化 调试工具 ,比如用于三维可视化的RViz,用于可视化图表、图像等数据的rqt系列工具,以及用于数据记录和回放的ros2bag工具等。

推荐大家安装 Ubuntu22.04 学习 ROS Humble ,安装过程不再赘述。

二、基础入门-编写第一个节点

与ROS1一样,运行完海龟模拟器turtlesim后,我们已经迫不及待去编写第一个节点了。

一个最简单的python节点:

import rclpy
from rclpy.node 
import Node
def main(args=None):
    # 1. 初始化 ROS2 客户端库   
    rclpy.init(args=args)

    # 2. 创建节点,并给它取个名字   
    node = Node("minimal_python_node")

    # 3. 打印一个简单的日志信息,证明节点已启动   
    node.get_logger().info("Hello from the simplest ROS2 node!")

    # 4. 让节点保持运行状态。它会一直循环,直到收到终止信号
    (如Ctrl+C)

    rclpy.spin(node)

    # 5. 程序结束前,清理并关闭ROS2   
     node.destroy_node()

    rclpy.shutdown()
if __name__ == '__main__':

    main()

可以直接用 python main.py 运行,C++节点类似,可以cmake编译后运行;或者创建功能包 ros2 pkg create ,用 colcon build 编译后运行。

在此基础上,ROS2在开发上也用了更新的版本和现代化特性,应该多用Python3、C++11-14-17等版本的特性。

三、发布和订阅-探索话题通信

话题通信是一种基于 发布/订阅 模型的异步单向数据流通信方式。

重点理解:

1.Node(节点) -> Topic(话题) -> Message(消息) 的关系。

2.使用rqt_graph工具可视化节点间的通信关系。

3.DDS (数据分发服务)作为ROS2的底层通信中间件,是其性能远超ROS1的关键。

作者还带我们实践做了一个系统状态监测与可视化工具。

四、服务和参数-深入ROS2通信

服务通信是一种基于 客户端/服务器 模型的同步双向RPC(远程过程调用)通信方式。适用于需要请求-响应模式的场景,如调用一个计算、开关一个功能。

可以跟着做一个 Python人脸检测服务 (C++巡逻海龟),客户端带着图片信息请求,服务端进行检测服务,并将人脸的位置信息返回给客户端。

还可以在通信中加入参数,如 动态配置节点参数 (检测模型),无需修改代码。使用rqt的参数面板或命令行工具ros2 param可以进行动态调整。

还有一种是 动作通信 ,可看作是异步双向的、带反馈的、可预取消的“加强版服务”。非常适合执行时间较长的任务,如导航到目标点(过程中持续反馈当前位置,并可随时取消)。

五、ROS2常用开发工具

ROS除了丰富的通信,还有强大的 命令行工具 ( ros2 node/list/topic/service 等)和 可视化工具 (rqt_console, rqt_plot, rviz2)。尤其是 rviz2 ,非常方便机器人的可视化调试,此外还有 坐标转换工具 TF ,方便机器人的开发。

六、建模与仿真-创建自己的机器人

实际的机器人并不能做到电影里那样的外观和智能, 目前的机器人结构往往是根据其应用场景设计的 ,比如快递机器人一般都是由轮子和货舱组成的,而工业机器人则有像人一样的手臂,方便进行组装焊接等工作。

一般情况下,可以先对机器人的传感器、执行器以及环境进行仿真,最常用的仿真平台有 Gazebo 、 WeBots 和 CoppeliaSim 。

以 Gazebo 为例,可以用URDF、Xacro创建机器人本体,添加传感器仿真,然后在rviz中显示。

ROS的一大宗旨是拒绝重复造轮子, ros2_control 是一个使用ROS 2进行实时机器人控制的框架,它的目标是简化硬件的集成,可以实现在仿真中让自己的机器人动起来。

七、自主导航-赋予机器智能

目前的机器人导航系统就是围绕着上面这三部分进行设计的。在对应的时机分别调用全局路径规划获取路径,根据当前位置和全局路径,在调用局部路径规划得到一小段路径后控制机器人行走,当出现问题时,调用恢复行为进行脱困。

Navigation 2 是一个 开源的机器人导航框架 ,它的目标是让机器人安全地从A点移动到B点。当然,它并不是教你如何将机器人从A点搬到B点,而是让机器人自主地进行移动。为了完成导航任务,路径规划、避障和自主脱困等能力便是Navigation 2所具备的基本能力。

可以跟着做一个 自动巡检机器人 ,在各个房间不断巡逻并记录图像。

八、使用自己的规划器和控制器

Nav 2导航框架通过ROS 2强大的 插件机制 ,可以将你编写的规划器或执行器加载到导航系统中进行调用。

pluginlib 是一个用于在ROS功能包中动态加载和卸载插件的C++库。通过pluginlib则不需要进行提前查找和链接库,在程序中可以通过参数或设置动态地加载和卸载插件。

假设我们要创建一个简单的机器人 运动控制器插件 ,一个机器人可以支持多种不同的运动控制方法,比如直线运动、旋转运动和Z字形运动等。此时我们就可以创建一个基类接口,然后让插件继承基类,实现不同的控制方式。

九、搭建实体移动机器人

对于一个移动机器人来说,从系统功能角度来看,机器人由 感知、决策和控制 三部分组成。感知部分是通过各种传感器来实现的,比如激光雷达和编码器;决策部分软件则是由各种算法组合实现的,比如可以进行路径规划和运动控制的Nav2,硬件则依托性能较强的处理器实现;控制部分通常是由驱动系统和电动机组成的。

作者依托自己的 FishBot 低成本机器人平台 ,给我们介绍了它所搭载的传感器、执行器以及决策系统。

此外,还对 Micro-ROS 连接微控制器进行了介绍并学习将机器人接入ROS2中,实现上下位机的无缝通信。

十、ROS2使用进阶

ROS 2基于其 中间件DDS 的 QoS 向用户提供了丰富多样的QoS策略,不同的QoS策略适用于不同的工作场景,比如在有丢包的无线网络环境,使用尽力而为( Best effort )策略更适合;对于要保证数据一定到达的重要数据传输,使用可靠传递( Reliable )策略更合适。

此外,ROS2还提供了 多线程执行器 、 生命周期节点 等新特性。

读到这里,相信大家已经收获满满当当了。我自己本身也是从教育方向出发开始接触ROS技术的,工作中也经历了ROS1到ROS2的迁移和宣教。到这两年已经明显感觉 到无论是教育还是企业的要求中,ROS已经成为掌握或从事机器人、智能驾驶等方向工作的基础,因此写这篇读书笔记与大家共勉,不断学习实践和分享。

   
140 次浏览       5
相关文章

基于图卷积网络的图深度学习
自动驾驶中的3D目标检测
工业机器人控制系统架构介绍
项目实战:如何构建知识图谱
 
相关文档

5G人工智能物联网的典型应用
深度学习在自动驾驶中的应用
图神经网络在交叉学科领域的应用研究
无人机系统原理
相关课程

人工智能、机器学习&TensorFlow
机器人软件开发技术
人工智能,机器学习和深度学习
图像处理算法方法与实践

最新活动计划
基于 UML 和EA进行分析设计 9-9[北京]
软件架构设计方法、案例实践 9-24[北京]
AI辅助软件测试方法与实践 9-26[北京]
代码质量标准与评审方法 11-6[北京]
OCSMP认证:OCSMP-MBF 11-18[北京]
Web应用安全、入侵检测 12-11[北京]
 
 
最新文章
AIGC技术与应用全解析
详解知识图谱的构建全流程
大模型升级与设计之道
自动驾驶和辅助驾驶系统
ROS机器人操作系统底层原理
最新课程
人工智能,机器学习和深度学习
人工智能与机器学习应用实战
人工智能-图像处理和识别
人工智能、机器学习& TensorFlow+Keras框架实践
人工智能+Python+大数据
成功案例
某综合性科研机构 人工智能与机器学习
某银行 人工智能+Python+大数据
北京 人工智能、机器学习& TensorFlow
某领先数字地图提供商 Python数据分析
中国移动 人工智能、机器学习和深度学习