Basis:机器人开发框架的核心功能

Basis:机器人开发框架的核心功能

basis The robotics development framework that makes deterministic replay testing possible. basis 项目地址: https://gitcode.com/gh_mirrors/basis4/basis

项目介绍

Basis 是由 Basis Robotics 开发的一个面向生产的机器人开发框架。它采用了发布-订阅架构,旨在为确定性测试提供支持。与 ROS 和其他类似框架不同,Basis 对发布者和订阅者进行了抽象,使用 输入 + 条件(同步器)-> 处理器(您的代码)-> 输出 的模型。用户声明代码响应的消息和条件,允许框架自动管理所有底层发布者、订阅者和消息路由,当输入和条件触发代码处理数据并产生输出时。

项目技术分析

Basis 框架的设计理念聚焦于测试性、可用性和性能:

  1. 测试性:机器人及其代码应易于测试。

    • 单元测试和集成测试应始终产生相同的结果(确定性!)
    • 测试机器人不应需要手动过程管理
  2. 可用性:框架应易于使用且快速开发。

    • 用户声明期望框架实现的行为,如回调、条件、消息。框架处理其他一切。
    • 框架不应“妨碍”用户——如果用户需要代码生成器不支持的高级特性(如传输桥接),框架不会阻止用户实现(尽管这可能不支持确定性重放)。
    • 极易将单元组合成不同的进程,并易于在运行时配置启动文件和单元。
  3. 性能:随着代码库的增长,性能不应降低。

    • 使单元组合变得简单,并允许进程内传输,对此有很大帮助。
    • 按需序列化允许仅在类型序列化到网络或写入磁盘时才进行序列化。
    • 已经能够在不增加 CPU 负载的情况下,通过 TCP 实现超过 10kHz 的简单发布/订阅连接。

项目及技术应用场景

Basis 框架适用于机器人开发领域,尤其适用于需要高度可测试性、可用性和性能的项目。以下是一些典型的应用场景:

  • 自动化测试:利用 Basis 框架的测试性特性,开发者可以轻松编写单元测试和集成测试,确保机器人代码的稳定性和可靠性。
  • 实时数据处理:框架支持高度性能的数据处理,适用于需要实时数据反馈的机器人应用。
  • 多机器人协同:Basis 框架支持多机器人通信,适用于多机器人系统的协同作业。

项目特点

1. 代码生成

Basis 框架支持代码生成,用户只需声明期望的行为,框架将自动生成后端代码。这大大简化了开发流程,并支持其他语言的绑定和不同调度器的使用。

2. 插件化序列化

框架不强制使用特定的序列化方式,而是支持插件化的序列化机制,包括 protobuf、ros1msg 等,允许用户根据自己的需求选择合适的序列化方式。

3. 插件化传输层

Basis 提供了多种插件化的传输层,包括进程内传输、TCP 等,未来还将支持 UDP、共享内存、ZeroMQ 等传输后端。

4. 强大的模板化启动文件

框架支持强大的模板化启动文件,使得配置和管理启动文件更加灵活和方便。

未来规划

Basis 框架的开发团队计划在未来实现更多功能,包括:

  • 简化测试流程
  • 确定性重放和模拟
  • 支持更多语言绑定
  • 单元/启动文件命名空间支持
  • 多计算节点/Agent/集群支持

改进方向

目前,Basis 框架在以下几个方面有待改进:

  • 网络传输断开处理
  • 传输类型安全性
  • TCP 传输插件
  • 动态主题创建
  • 进程关闭处理
  • 驱动程序支持
  • 测试覆盖

最后,Basis 框架遵循特定的开源协议,对于个人和小型团队免费,但企业用户如需在生产环境中使用,请联系开发团队。

通过以上分析,Basis 框架凭借其独特的设计理念和应用场景,为机器人开发领域提供了强大的支持。对于寻求高效、可靠机器人开发解决方案的开发者和团队,Basis 绝对值得一试。

basis The robotics development framework that makes deterministic replay testing possible. basis 项目地址: https://gitcode.com/gh_mirrors/basis4/basis