RoboCup 机器人软件开发框架解析
在机器人软件开发领域,RoboCup 相关的代码框架一直是研究和实践的热点。下面将详细介绍两个具有代表性的机器人软件开发框架。
FUmanoid 机器人控制软件框架
FUmanoid 机器人控制软件是一个功能丰富且具有高度扩展性的框架,其整体结构涵盖多个重要部分。
-
模块框架(Module Framework)
- 黑板架构(Blackboard Architecture) :NaoTH 模块框架采用了黑板架构,它的历史根源可追溯到 GermanTeam 的模块框架。黑板负责存储和管理对象实例,这些对象代表了模块可以读取或写入的数据。模块对黑板对象的读写访问仅基于其声明的需求,由此形成的依赖链能够自动计算模块的执行顺序。
- 模块独立性与执行方式 :模块之间相互独立,可轻松交换,这有助于为同一问题提供并发解决方案。模块按顺序执行,并通过各自模块管理器的专用黑板访问数据,避免了并发问题,且无需在代码中使用临界区,从而减少了开销。
- 简化开发过程 :该框架极大地简化了开发过程,尤其对于新加入团队的学生来说,无需对整个软件栈有深入了解,只需专注于单个模块即可。
-
多平台和多传感器支持(Multi - platform and Multi - sensor Support)
- 设计原则 :代码的核心设计原则是支持不同的硬件平台和传感器,这源于团队每年使用的硬件不断变化,同时也为了在机器人外部测试软件,以加速开发并提高软件质量。
- 硬件抽象接口 :软件基于可交换的输入输出设备(即传感器和执行器)的概念,针对特定类型的传感器和执行器有特定的硬件抽象接口,而非单一的硬件抽象层(HAL)。这样可以轻松组合不同的传感器,快速适应平台变化或基于现有组件组装新平台。
- 传感器信息获取 :传感器信息可以从多个来源获取,例如可以混合实际机器人和模拟机器人的传感器数据。此外,数据表示可以预先填充通过模拟器获取的真实数据。
- 平台兼容性 :目前软件仅支持运行 Linux 操作系统的机器人,由于避免了 CPU 特定功能,代码可在 ARM 和 x86 架构的 CPU 上运行,并且由于多传感器方法,代码也能在 Linux 桌面计算机上无缝运行。支持其他常见操作系统也很容易,因为所有 Linux 特定组件都在包装类中,可根据需要轻松扩展。
-
柏林联合框架(Berlin United Framework)
- 框架组成 :柏林联合框架包含各种服务类以及前面提到的模块框架,其所有功能独立于所使用的机器人类型,可作为自己机器人软件的基础。
-
服务类功能
- 通信管理 :有一个专用线程处理传入和传出的通信,支持多个远程客户端。所有通信基于 Protobuf 数据序列化格式,模块可以注册特定的传入 Protobuf 消息。
- 配置参数管理 :配置参数可以在代码中定义,并可以从 Protobuf 序列化文件或通过网络存储和检索,也可以通过命令行设置。
- 调试接口 :提供了广泛的调试接口,允许注册多种类型的调试消息,包括文本、表格、2D 绘图和各种图像表示。这些调试消息可以选择性启用,禁用时运行时开销可忽略不计。调试输出(包括图像)可以流式传输到多个远程实例,允许多个用户同时调试或检查机器人的不同方面。
- 日志文件管理 :可以创建日志文件,包含每个执行周期的所有或选定表示。这些日志文件可用于后续运行中填充表示,以便调试模块或比较算法。
-
运动与认知模块(Motion and Cognition)
- 模块划分 :代码发布还包括团队特定的足球代码,将模块分为认知和运动模块。
- 认知模块(Cognition) :当接收到新的相机图像时,认知模块管理器执行,每秒最多运行 30 次。首先,图像处理模块运行,从图像中检索球、球门和障碍物的位置以及线段等信息,然后对这些数据进行分类,例如提取场线和场线特征。各种建模模块尝试对世界进行建模,最后基于 XABSL 的行为模块决定机器人应采取的行动,遵循 Sense - Think - Act 范式。
- 运动模块(Motion) :运动模块管理器以 100Hz 的频率运行,负责硬件控制,主要与传感器(除相机外)和执行器接口。执行周期从读取传感器和执行器开始,管理各种信息以处理传感器融合和相关任务,例如根据机器人的运动学计算相机高度。根据认知模块请求的运动类型,选择执行关键帧运动(如站立)或计算和设置步行轨迹的模块。
- 模块间通信 :两个模块块之间通过事件通知进行通信。在每个管理器周期结束时,发送特定表示,另一个管理器在下一个执行周期将其注入自己的表示中,这是一种简单而有效的数据共享和命令分发方法,开销可忽略不计。
-
远程控制与调试工具(Remote Control and Debugging)
- 工具介绍 :代码发布还包括调试和控制工具 FUremote,它基于 Eclipse RCP,通过插件提供大部分功能,便于切换功能或扩展功能。
- 通用性 :FUremote 的开发方式对特定硬件和环境不敏感,插件从机器人检索相关信息,如调试选项列表、配置键或可用的相机设置,使其成为支持机器人硬件和软件更改的多功能工具。
- 工具功能 :工具界面的左上角显示当前在线的机器人及其相关状态信息(如电池电量),下方的调试插件列出可用的调试选项,其中四个处于活动状态并以各种方式显示信息。此外,还有其他插件可用于配置相机设置、修改配置参数、更改机器人的游戏状态、可视化机器人的行为状态、与伺服器交互以及记录和预览关键帧运动。
下面是 FUmanoid 框架核心组件关系的 mermaid 流程图:
graph LR
A[模块框架] --> B[多平台和多传感器支持]
A --> C[柏林联合框架]
C --> D[运动与认知模块]
D --> E[远程控制与调试工具]
B --> D
扩展的 RoboCup 足球软件框架
Team DARwIn 和 UPennalizers 团队使用的足球软件框架也有其独特之处。
-
引言(Introduction)
- 团队背景 :Team DARwIn 和 UPennalizers 分别来自 RoboCup 足球的 Humanoid KidSize 联赛和 Standard Platform 联赛,自 2011 年以来,他们一直在同一代码库上开发比赛软件,并发布了开源版本。
- 代码特点 :由于团队在不同联赛中使用两种完全不同的人形机器人,每次软件发布的重点都是可移植性和与各种人形平台的兼容性。代码已在 Nao、DARwIn - OP、自定义的 DARwIn - XOS 和 CHARLI 平台上进行了测试和应用,表现出色,推动了相关团队在比赛中取得胜利,并且许多 Humanoid KidSize 联赛的团队也在比赛中使用了该代码。
- 应用拓展 :软件不仅用于足球比赛,还用于人形机器人的内部实验,如远程操作控制和 DARPA 机器人挑战赛。随着新方向的出现,需要在几个关键方向上扩展平台,这些扩展对 RoboCup 的可用性有直接影响。
-
相关工作(Related Work)
-
其他开源机器人框架对比
- ROS :ROS 操作系统试图满足所有人的需求,在机器人社区有广泛支持,但对人形机器人的关注相对较少。
- OROCOS :专注于实时控制,但不能支持构建复杂机器人所需的各种设备驱动程序,不足以运行足球机器人。
- Microsoft Robotics studio :提供了用于编写机器人程序的高级设计套件,但仅限于在 Windows 操作系统上使用。
- B - Human 代码发布 :专门针对 Nao 机器人,虽在比赛中表现出色,但无法移植到其他人形机器人。
- NimBro - OP 开源软件 :虽有前景,但刚刚开始,尚未在其他平台上测试。
- Fawkes 系统 :使用 Lua 语言,但没有包含对 RoboCup 足球团队和人形机器人研究至关重要的步行引擎。
- 本框架目标 :该框架的目标是专注于人形机器人,拥有低依赖、小占用空间的代码库,并且要符合所有四个人形机器人部门(标准平台联赛和三个人形机器人联赛)的最新规则和规定。
-
其他开源机器人框架对比
-
足球比赛框架(Soccer Playing Framework)
- 框架组成 :足球框架专注于提供通用的步行控制器、简单的视觉系统和一组可扩展的状态机,代码采用 Lua 脚本语言和广泛使用的 C 和 C++ 语言编写。
- 数据流程 :系统中有三个进程执行视觉系统、设备通信管理器(DCM)和运动系统状态机。数据通过系统上的共享内存段共享,世界模型、视觉系统、运动系统和 DCM 都有自己的内存段,这些段可以被其他进程读取。例如,定位系统需要从运动系统获取里程计信息,就是通过这个内存段共享的。
- 模块优势 :DCM 和相机模块能够抽象掉平台相关的驱动程序,对于不同的机器人(如 Nao、OP、模拟硬件等)有不同的 DCM,但每个驱动程序都以相同的方式与共享内存接口。
-
运动控制(Locomotion)
- 步行引擎 :提供了流行的零力矩点(ZMP)步行引擎的详细实现,该实现使用 ZMP 方程的解析解,假设 ZMP 是分段线性的。这种方法的主要优点是简单,不需要任何预览间隔。
- 关节角度计算 :在计算出脚和质心(COM)的轨迹后,逆运动学求解器为腿部执行器生成关节角度值。
下面是扩展的 RoboCup 足球软件框架主要模块的表格:
|模块|功能|
| ---- | ---- |
|视觉系统|从图像中提取球、球门、障碍物等信息|
|设备通信管理器(DCM)|管理硬件通信,抽象平台相关驱动|
|运动系统状态机|控制机器人的运动,包括步行等|
|世界模型|存储和管理与环境相关的信息|
综上所述,这两个框架都在 RoboCup 相关的机器人软件开发中具有重要意义,它们各自的特点和优势为不同需求的开发者提供了丰富的选择,并且随着技术的发展和应用场景的拓展,这些框架也在不断进化和完善。
RoboCup 机器人软件开发框架解析
两个框架的对比分析
为了更清晰地了解这两个框架的特点和适用场景,下面对 FUmanoid 机器人控制软件框架和扩展的 RoboCup 足球软件框架进行对比分析。
| 对比项 | FUmanoid 框架 | 扩展的 RoboCup 足球框架 |
|---|---|---|
| 模块架构 | 采用黑板架构的模块框架,模块独立性强,便于交换和并发处理 | 由视觉系统、设备通信管理器、运动系统状态机等组成,通过共享内存段进行数据交互 |
| 平台支持 | 支持多种硬件平台和传感器,主要运行在 Linux 系统,易于扩展到其他操作系统 | 强调可移植性和与多种人形平台的兼容性,在多种机器人平台上进行了测试 |
| 功能特点 | 包含通信管理、配置参数管理、调试接口、日志文件管理等丰富的服务类功能,有明确的运动与认知模块划分 | 专注于提供通用步行控制器、简单视觉系统和可扩展状态机,实现足球比赛相关功能 |
| 代码语言 | 未明确提及主要代码语言 | 采用 Lua 脚本语言和 C、C++ 语言编写 |
从上述对比可以看出,FUmanoid 框架功能更为全面,提供了丰富的服务类功能和完善的调试机制,适用于对系统管理和调试有较高要求的开发场景。而扩展的 RoboCup 足球框架则更专注于足球比赛相关的功能实现,强调可移植性和对多种人形平台的支持,适合用于开发足球比赛机器人软件。
框架的应用场景与发展趋势
-
应用场景
- RoboCup 比赛 :这两个框架最初都是为了满足 RoboCup 比赛的需求而开发的。在比赛中,机器人需要具备良好的运动控制、视觉感知和决策能力,这两个框架提供的功能可以帮助开发团队快速搭建起机器人的软件系统,提高比赛成绩。
- 科研实验 :在科研领域,人形机器人的研究涉及到控制、感知、规划等多个方面。这两个框架的开放性和可扩展性使得研究人员可以方便地进行实验和验证,推动人形机器人技术的发展。
- 实际应用 :随着机器人技术的不断发展,人形机器人在服务、救援等领域的应用前景越来越广阔。这两个框架的多平台支持和可移植性特点,为将机器人技术应用到实际场景中提供了可能。
-
发展趋势
- 智能化 :未来的机器人软件框架将更加注重智能化的发展,例如引入机器学习、深度学习等技术,提高机器人的自主决策和适应能力。
- 集成化 :为了提高开发效率和系统的稳定性,框架将朝着集成化的方向发展,将更多的功能模块集成到一个统一的平台上。
- 开源化 :开源社区的发展将促进机器人软件框架的不断完善和创新,更多的开发者将参与到框架的开发和维护中,推动机器人技术的普及和应用。
下面是框架应用场景和发展趋势的 mermaid 流程图:
graph LR
A[RoboCup 比赛] --> B[科研实验]
A --> C[实际应用]
B --> D[智能化]
C --> D
D --> E[集成化]
E --> F[开源化]
开发者如何选择合适的框架
对于开发者来说,选择合适的机器人软件框架至关重要。以下是一些选择框架时需要考虑的因素:
1.
项目需求
:明确项目的具体需求,例如是否需要进行足球比赛、是否需要支持特定的硬件平台等。如果项目是关于足球比赛机器人的开发,那么扩展的 RoboCup 足球框架可能更适合;如果项目对系统管理和调试有较高要求,那么 FUmanoid 框架可能是更好的选择。
2.
技术栈
:考虑自己的技术栈和团队成员的技术能力。如果团队熟悉 Lua 脚本语言和 C、C++ 语言,那么扩展的 RoboCup 足球框架可能更容易上手;如果对黑板架构和多线程编程有一定了解,那么 FUmanoid 框架可能更适合。
3.
可扩展性
:评估框架的可扩展性,确保框架能够满足项目未来的发展需求。一个具有良好可扩展性的框架可以方便地添加新的功能模块和支持新的硬件平台。
4.
社区支持
:选择有活跃社区支持的框架,这样可以在开发过程中获得更多的帮助和资源。社区的反馈和贡献也可以促进框架的不断完善和发展。
综上所述,开发者在选择框架时需要综合考虑项目需求、技术栈、可扩展性和社区支持等因素,选择最适合自己项目的框架。
总结
本文详细介绍了 FUmanoid 机器人控制软件框架和扩展的 RoboCup 足球软件框架,包括它们的架构、功能、特点以及应用场景。通过对比分析,我们可以看到这两个框架各有优势,适用于不同的开发场景。同时,我们也探讨了框架的发展趋势和开发者选择框架时需要考虑的因素。希望本文能够为开发者在选择和使用机器人软件框架时提供参考,推动机器人技术的发展和应用。
在未来的发展中,随着机器人技术的不断进步和应用场景的不断拓展,这两个框架也将不断完善和创新。开发者可以根据自己的需求对框架进行定制和扩展,开发出更加智能、高效的机器人软件系统。相信在不久的将来,机器人将在更多的领域发挥重要作用,为人类的生活和工作带来更多的便利和价值。
超级会员免费看
4111

被折叠的 条评论
为什么被折叠?



