跳到主要内容

SDK 介绍

SDK 概述

运动控制SDK的结构如下图所示:

傅利叶机器人的运动控制框架基于名为 Aurora 的运动控制系统构建。Aurora 作为机器人系统的核心控制模块,一方面直接与底层硬件组件进行交互,包括各类传感器、执行器及控制接口,负责采集系统状态数据并向执行层下发运动与控制指令;另一方面,Aurora 通过基于 DDS(Data Distribution Service) 的通信机制与外部系统进行数据交互,从而实现控制指令、状态反馈及系统信息的高效发布与订阅。

为了便于用户与机器人本体内部运行的 Aurora 服务进行交互,我们提供了一套配套的 Aurora SDK。该 SDK 为上层应用提供统一、抽象的接口,使开发者能够在不直接接触底层通信与硬件细节的情况下,实现对机器人运动行为的控制、状态监控以及系统参数配置,支持算法验证、功能扩展和二次开发等多种应用场景。

此外,Aurora SDK 基于 Fast DDS 进行了封装,并提供了 Python 语言的 Aurora Client。该客户端可运行于机器人本体的 NUC 或外部 PC,通过 DDS 与 NUC 中的 Aurora 服务建立通信连接,实现控制指令的发送与系统状态的接收。

Aurora 简介

下文是对Aurora系统的简要介绍。

什么是Aurora?

Aurora是一个专为人形机器人实时运动控制设计的系统。它在机器人系统的硬件层和上层软件层之间扮演着重要角色。一方面,Aurora与传感器、执行器等硬件组件交互,采集数据并向其发送指令;另一方面,Aurora利用一系列工具和库来创建并执行运动控制任务。这些任务包含多种全身控制器,用于跟踪诸如线性速度(用于移动)、笛卡尔空间控制(用于操作)和关节空间控制(用于运动规划)等目标。

Aurora为开发者提供了一系列控制器以支持高层应用开发。用户也可以根据Aurora的编程接口创建自己的控制器。

中心化数据结构与基于任务的编程

Aurora的核心特性是其中心化数据结构和基于任务的编程模式。

在Aurora的生命周期中,大部分工作围绕任务的创建、执行和销毁展开。每个任务设计用于实现特定功能,例如从传感器读取数据、处理数据或向设备发送数据。

Aurora包含两种任务类型:固定任务FSM任务 (有限状态机任务)。固定任务在Aurora生命周期中自动创建和销毁,用于执行固定的操作集,例如传感器数据读取、设备数据发送以及数据发布/订阅。

FSM任务可以在Aurora运行时动态的创建和销毁。它们会根据有限状态机实现一系列运动控制操作。用户可以通过定义状态和转移关系来创建自己的FSM任务,并将其绑定到指定的控制器上。

aurora_dataflow

Aurora 数据流概览

任务间的数据交换通过名为RobotData的共享数据结构完成。RobotData是一个中心化的数据结构,被所有Aurora任务共享,包含任务执行所需的全部数据。

例如,一个固定任务从传感器读取数据并更新RobotData中的对应字段;一个FSM任务读取机器人当前状态并更新RobotData中的指令字段;随后另一个固定任务读取该指令并将其发送至设备。

生命周期管理

任务的生命周期管理由状态管理器实现。在初始化阶段,状态管理器会执行任务的initenter函数。随后,状态管理器会将任务的execute函数绑定到新线程,并启动该线程以周期性地执行execute函数。在退出阶段,状态管理器会执行任务的exit接口并销毁线程。

当Aurora程序启动时,首先会执行自检以确保所有必要硬件组件可用;接着创建并启动状态管理器,后者将创建并运行所有固定任务;此后状态管理器进入默认FSM状态(此时无FSM任务运行)。

当切换至新的FSM状态时,状态管理器会停止当前状态下的FSM任务并销毁其线程,随后根据新状态配置初始化新的FSM任务并创建线程运行它们。

当接收到退出信号时,Aurora会停止所有任务、销毁所有线程并关闭电机驱动。

获取SDK

gitee: https://gitee.com/FourierIntelligence/fourieraurorasdk

github: https://github.com/FFTAI/fourier_aurora_sdk