7,994
社区成员
发帖
与我相关
我的任务
分享大家好,我最近在做四足机器人的强化学习实机部署。项目基于开源框架 fan-ziqi/rl_sar,增加了机器人硬件适配、网页手柄,以及 AidLite/QNN 推理支持。
目前正在将原机工程整理成独立项目。借这个机会,分享系统结构和部署过程中遇到的问题,也希望与社区里做机器人、端侧 AI 和高通平台开发的朋友交流。
这个项目的核心任务,是让强化学习策略根据机器人状态计算动作,再由主控生成电机控制命令。
完整过程如下:
IMU 数据 + 电机反馈 + 用户指令
↓
构建观测与历史数据
↓
AidLite / QNN 模型推理
↓
输出 12 维动作
↓
动作缩放与 PD 控制
↓
通过 STM32 控制电机
除了模型推理,工程还包含起立、趴下、反馈检查、网页操作和进程管理等功能,让策略能够接入实际控制流程。
当前工程通过 AidLite 调用 QNN248 DSP 后端,运行已经转换好的策略模型。
主控负责采集数据、整理模型输入和处理动作结果,模型计算交给设备上的 DSP 执行。
当前模型接口如下:
| 项目 | 配置 |
|---|---|
| 模型文件 | .aidem |
| 单帧观测 | 46 维 |
| 历史观测 | 6 帧 |
| 输入形状 | [1, 276] |
| 输出形状 | [1, 12] |
| 推理环境 | AidLite、QNN248 DSP 插件和设备授权 |
观测包括运动指令、目标高度、角速度、重力方向、关节位置、关节速度和上一时刻的动作。
当前配置的控制周期为 1 ms,每 20 个控制周期执行一次策略推理,对应目标策略频率为 50 Hz。实际推理耗时和调度抖动,还需要在目标设备上单独测量。
硬件通信采用两路串口,分别连接 IMU 和 STM32 电机控制板。
控制系统通过状态机管理待机、起立、策略控制和趴下。电机反馈满足检查条件后,操作者才能通过新的按键操作授权起立。
网页手柄通过本机 UDP 向主控发送输入,用户可以从手机浏览器操作机器人。本机守护进程负责主控启停和阻尼控制。
模型负责计算动作,控制系统则需要判断什么时候允许执行动作。反馈异常、输入中断和进程退出等情况,都需要放在整个系统中考虑。
原机能够运行的工程,迁移到其他机器时,仍会遇到路径和环境问题。例如:
后续准备完善目标设备上的推理性能记录,重点关注平均耗时、P95 耗时和长时间运行时的抖动,并结合控制线程分析整个流程的时序。
希望通过“高通开发者菁英社”认识更多做端侧 AI 和机器人开发的朋友,后续也会继续分享项目整理和部署进展。
感谢 rl_sar 原作者及贡献者提供的开源框架。