FF SDK is a unified robot-control development kit for developers. Humanoids and quadrupeds, real robots and simulation —
all driven through the same async Python API.
Motion, state telemetry, audio, vision, expressions — learn once, run everywhere.
FF SDK 是面向开发者的统一机器人控制开发包。人形与四足、真机与仿真,
全部通过同一套 async Python API 控制 ——
运动、状态遥测、语音、视觉、表情,一次学习,处处运行。
Full-size humanoid robot. The most fully featured platform: motion + state + audio + vision + expressions all available, with manipulator arms / navigation / face check-in maturing.
全尺寸人形机器人。能力覆盖最全的平台:运动 + 状态 + 语音 + 视觉 + 表情全部可用,机械臂 / 导航 / 人脸考勤持续完善中。
Compact humanoid robot. Preset actions / uploaded motion-package playback plus state telemetry available; pairs with the motion-studio ecosystem to play custom dance packages.
紧凑人形机器人。预置动作 / 上传动作作品播放与状态遥测可用,配合动作工作室生态可播放自制舞蹈动作包。
Quadruped robot-dog lineup (point-foot / wheeled-foot / EDU / Ultra). Motion control and full state telemetry verified on real hardware, including stunt actions and joint-level telemetry; self-contained wheel with zero extra dependencies.
四足机器狗产品线(点足 / 轮足 / EDU / Ultra)。运动控制与全套状态遥测真机验证,含特技动作与关节级遥测,自包含 wheel 零额外依赖。
Compact quadruped robot. Motion + state + over a hundred extended actions (bow / wave / dance / expressions), deeply tunable gait and motion parameters, and a dedicated session.navi.* namespace.
紧凑型四足机器人。运动 + 状态 + 上百个扩展动作(鞠躬 / 招手 / 舞蹈 / 表情),步态与运动参数深度可调,专属 session.navi.* 命名空间。
import asyncio, ff_sdk
async def main():
# Swap the target prefix to switch robots — the API stays the same
robot = await ff_sdk.connect("D1-DEMO") # Aegis quadruped
# robot = await ff_sdk.connect("A2-DEMO") # Futurist humanoid
# robot = await ff_sdk.connect("X2-DEMO") # Master humanoid
# robot = await ff_sdk.connect("NV-DEMO") # Navi quadruped
# robot = await ff_sdk.connect("mujoco://d1") # physics sim, no hardware
await robot.motion.stand() # stand up
await robot.motion.cmd_vel(linear=0.3) # move forward 0.3 m/s
await asyncio.sleep(2)
await robot.motion.stop()
battery = await robot.state.battery() # read battery
print(f"battery {battery.percent:.0%}")
await robot.close()
asyncio.run(main())
import asyncio, ff_sdk
async def main():
# 换一个 target 前缀,就是换一台机器人 —— API 不变
robot = await ff_sdk.connect("D1-DEMO") # Aegis 四足
# robot = await ff_sdk.connect("A2-DEMO") # Futurist 人形
# robot = await ff_sdk.connect("X2-DEMO") # Master 人形
# robot = await ff_sdk.connect("NV-DEMO") # Navi 四足
# robot = await ff_sdk.connect("mujoco://d1") # 物理仿真,免真机
await robot.motion.stand() # 站立
await robot.motion.cmd_vel(linear=0.3) # 前进 0.3 m/s
await asyncio.sleep(2)
await robot.motion.stop()
battery = await robot.state.battery() # 读电量
print(f"电量 {battery.percent:.0%}")
await robot.close()
asyncio.run(main())
Every feature is organized by capability domain: robot.motion / robot.state / robot.audio… A capability the platform doesn't support raises CapabilityNotSupported explicitly — it never fakes success.
所有功能按能力域组织:robot.motion / robot.state / robot.audio…… 平台不支持的能力会明确抛出 CapabilityNotSupported,绝不假装成功。
Built-in e_stop() emergency stop, diagnose() health check, and state-machine guards. Dry-run mode lets you exercise your full business logic with no hardware attached.
内建 e_stop() 紧急停止、diagnose() 健康体检、状态机保护。dry-run 模式让你在没有真机时也能完整跑通业务逻辑。
mujoco:// physics simulation and real hardware share one API. Get your logic right in sim first, then connect to hardware — the examples library ships sim-to-real migration recipes.
mujoco:// 物理仿真与真机共享同一套 API。先在仿真里把逻辑调对,再连真机 —— 示例库提供 sim-to-real 迁移菜谱。
Each platform's devkit fits in a single zip: wheels (robot aarch64 + dev-machine x86_64), docs, and runnable examples. No third-party vendor SDK to install.
每个平台的 devkit 一个 zip 全装下:wheel(机器人 aarch64 + 开发机 x86_64)、文档、可运行示例。不需要安装任何第三方厂商 SDK。