跳转至

Robot Behavior

本库是通用机器人驱动计划中的一员!我们立志于为更多的机器人平台提供 Rust 语言及更多语言的驱动支持!统一不同型号的机器人驱动接口,降低机器人学习成本,提供更高效的机器人控制方案!

本库是通用机器人驱动的特征库,用于描述机器人行为的特征。它提供了一些通用的特征描述符和实现,供其他机器人驱动库使用。同时特征库也为常见的接口实现了自动派生宏,用于派生安全的接口实现。

我们正在力求确保驱动库在不同的操作平台上行为的一致性和不同驱动库之间的兼容性。我们希望通过这个库,减少机器人操作之间的学习成本,达到一门通而门门通的效果。

接口设计原则

  • 描述完整,每个接口在使用过程中应当完整明确的表达该接口执行的行为
  • 语义一致,函数参数/返回值与函数名应当具有一致的语义
  • 行为一致,接口的行为应当在不同的驱动库中保持一致

如何使用本库驱动的机器人?

由本库派生的机器人均满足相同的接口规范。文档见 robot_behavior

对于不同的机器人,我们通常建议以 robot 作为对象名,在之后的说明中,均以 robot 作为实例化后的机器人对象。

一个简单的移动机器人的样例如下:

robot.move_to(MotionType::Joint([0.;6]))?;
robot.move_to(MotionType::Cartesian(Pose::Euler([0.;3],[0.;3])))?;

当然我们还准备了一些简化的函数,如以下的函数具备和上述代码相同的功能:

robot.move_joint(&[0.;6])?;
robot.move_cartesian(&Pose::Euler([0.;3],[0.;3]))?;

整体来说,我们将机器人接口分为 3 类:

  • 预规划接口:在调用接口时,已经知道了完整的轨迹信息,可以直接调用接口发布轨迹。
  • 流式接口:在调用接口时,轨迹信息未知,但是在接口运行时会不断发布新的轨迹信息。
  • 闭包接口(实时控制接口):在调用接口时,轨迹信息未知,在接口运行时通过闭包计算得到控制量。

基本涵盖了所有的控制方法。

我们正在努力实现更多机器人以及为机器人提供更加简单易懂的接口实现方法,尽情期待!

你可以在 robots 中找到当前已经实现了哪些机器人,如果你实现了机器人,也可以联系我们更新。

你也可以在 robot derived 中查看一些由我们实现的机器人驱动的简单文档,大多数都是作为文档的补充,说明该品类机器人的特殊接口实现,而通用的实现应该看 How to Use 中的接口说明。

一些例子是:

  • Franka 机器人,是德国 Franka Robotics 公司生产的协作机械臂,具有高精度、高灵活性和易于编程的特点,广泛应用于工业自动化、研究和教育领域。其产品主要为 Franka Emika PandaFranka ResearchFranka Production 3 等型号,都具有 7 个关节,末端执行器为夹爪,适用于各种抓取、装配和操作任务。
  • Jaka 机器人,是中国 Jaka 公司生产的机械臂
  • Hans 机器人
  • Aubo 机器人

  • RsBullet ,是基于 Bullet 物理引擎的机器人仿真平台,提供了高性能的物理仿真环境,支持多种机器人模型和复杂的交互场景,适用于机器人控制算法的开发和测试。支持 Windows、Linux 和 macOS 等多个操作系统,应用于机器人研究、教育和工业领域。

  • Rerun Rerun,是一个高性能的实时渲染平台,提供了丰富的可视化工具和接口,支持多种数据类型和交互方式,适用于机器人状态监控、数据分析和调试。