社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

让螃蟹机器人自己学会走路,GitHub 又出现一个狠项目。

开源日记 • 4 周前 • 569 次点击  


大家好,我是熊叔,今天我们继续逛 GitHub。

最近在 GitHub 上发现一只挺有意思的螃蟹机器人。

22 个自由度,可以走路、跳舞、跳跃,还可以伸出爪子去抓东西。

项目叫Jumper(跳跳),刚开源不久。

Jumper 螃蟹机器人

先看一个跳水动作。

Jumper 跳跃演示

动作已经挺有意思了,更吸引我的是它的训练方式。

作者把 AI 编程工具接入到了机器人开发流程中。要训练某个动作,只需要说一句,AI 就会帮你准备好环境、调用脚本。

看到这里,我有点好奇:机器人训练已经简单到说句话就能完成了吗?

翻了一下仓库,事情还真不简单。

一句话,让机器人学会走路

先从最基础的走路说起。

Jumper 已经做好了三足步态训练的任务。在AI编程助手里可以直接输入:

为 Jumper 训练稳定的三足步态,完成回放、检查效果并导出动作包。

AI 会根据项目所给的流程来准备环境、进行训练、检查结果。

下面是官方的行走演示,注意看几条腿交替运动时,身体是怎么保持平衡的。

Jumper 三足步态行走

背后用的是 PPO 强化学习算法。

简单来说就是让机器人在仿真中不断练习。

每走一步,系统都会对它的速度、姿态和动作进行检查是否平稳。走得好的就给奖励,动作不稳的就扣分,在训练的过程中不断调整控制策略。

项目里的三足步态使用 411 维观察输入,输出 20 维动作。

所以 AI 帮忙处理的是训练流程,真正让机器人学会走路的,还是强化学习算法。

以前研究机器人强化学习的时候,光是搭建环境、配置依赖、调试训练脚本,就占用了大量的时间。现在 AI 可以帮我们做这些事情,确实很方便。

但如果想自己修改步态、调整奖励函数,PPO 和运动控制这些知识还是绕不开。

Jumper 更适合有编程基础并且想要学习机器人强化学习的人。完全没有接触过机器人控制,只靠提示词是玩不转的。*

跳舞和跳高又是怎么学会的呢?

走路才刚开始,Jumper 还有舞蹈、跳跃、姿态变化、抓取等等任务。

先看这个舞蹈动作。

Jumper 舞蹈仿真

多个关节同时运动,还要保持身体平衡,光靠随机尝试,很难摸索出一套完整的舞蹈。

Jumper 的办法是引入参考轨迹。

可以理解为先给机器人一个目标动作,让机器人去练习。当动作出现偏差的时候,再通过训练来慢慢纠正。

跳跃也是一样的思路。有了参照动作之后,训练就有了明确的目标。

但是参考轨迹本身也很重要。目标动作有误,即使后面训练时间再长,也达不到理想的效果。

项目还提供了抓取仿真。

Jumper 抓取仿真

这些动作看着挺有意思,但我更关心它们能不能在真实机器人上稳定运行。

尤其是跳跃,能跳起来还不算完,落地之后能不能站稳、连续跳几十下会不会出现问题,这才是需要验证的地方。

真正麻烦的,是训练完以后

训练出一个会走路的模型,并不意味着工作就完成了。

怎么加载?怎么切换动作?模型输出怎么对应真实关节?

如果这些问题处理不好,机器人仍然会胡乱动。

Jumper为此设计了一套动作打包流程,可以将训练策略、控制器和配置整理成.app文件。

一个动作包可以面向三种运行环境:

环境
模型与控制器
浏览器
ONNX + WebAssembly
桌面仿真
ONNX + 本地控制器
机器人板端
RKNN + AArch64 控制器

底层控制器用 Rust 编写,各个平台共用状态机和动作配置。

这里还有个细节。

Jumper 整机有 22 个自由度,但是三足步态策略只输出 20 维动作。

按照数组下标直接对应关节很容易出错。项目用关节名称来建立映射关系,防止把动作发送到错误的关节上。

如果关节顺序对应错了,即使模型正常运行,机器人也会做出错误的动作。这类问题的排查一般要比训练模型更难。

比起让机器人多跳几个动作来,把模型正确加载、切换和执行这一套设计更值得研究。

没有显卡,也能先跑起来

想自己研究的话,Jumper 对硬件还算留了余地。

它有两套物理仿真后端。

有 NVIDIA 显卡的话,可以用 MuJoCo Warp 来进行大规模并行训练。

没有显卡的话也可以在 CPU 上用原生 MuJoCo 运行,但是会比较慢。

两套后端共用任务配置、奖励函数和PPO代码,不需要重新写算法。

项目支持 Python 3.10~3.13。安装好依赖后,可以先试试三足步态:

BASH
# 查看训练任务
python scripts/train.py --list

# 用CPU进行训练
python scripts/train.py --task jumper.tripod --backend native --device cpu --num_envs 64

# 回放训练结果
python scripts/play.py --task jumper.tripod

以前接触一些机器人训练项目的时候,最让人头疼的就是环境和硬件的要求。还没有开始研究算法的时候,就已经被依赖和显卡折腾了好久。

Jumper 至少可以先用 CPU 运行流程,等到真正需要大量训练的时候再考虑使用 GPU。

训练完成之后还可以使用export.py导出为ONNX格式,然后用deploy.py进行打包。整个打包过程会涉及到Docker和RKNN转换。

这些流程来源于官方文档,我没有亲自跑过一次训练,具体的耗时和效果暂时不作评价。

机器人外形也可以自己设计

除了动作训练之外,Jumper 还有一个单独的 jumper-design 仓库。

比如说想要给它换上一套暖沙色的游侠外观,只要把配色和设计要求说清楚,就可以生成方案并且导出.skin文件。

Jumper 暖沙色游侠

还可以制作出公园、卧室、足球场等仿真场景,并且可以导出.map文件。

Jumper 公园场景

这部分可以用来做创意设计,先看一下不同的外观和场景的效果。

但是目前的.skin还不能直接用来做动作训练,自定义的.map也只能用来回放。

可以渲染出外观,但是打印出来之后不一定能装到机器人上,真实的装配还要进行验证。

要什么样的硬件

Jumper 用了 22 个触觉舵机,主控是瑞芯微 RK3576,配备 6 TOPS NPU。

还有IMU、摄像头、dToF深度传感器、麦克风和扬声器,两个小屏幕用来显示表情。

整机标称尺寸为 400×400×200 mm,重量为 1.8 kg,主要面向室内使用。

硬件配置挺丰富,但这个仓库公开的重点还是软件工具链,现有资料不足以让开发者直接复刻整台机器人。

项目自有材料采用 Apache-2.0 许可证,第三方素材和生成文件还得分别确认授权。

另外要注意的是,官方已经说明了 RKNN 推理没有在真实的板卡上进行过验证,1kHz控制器循环也没有真正地驱动过电机总线。

仿真里的动作已经不少了,接下来更值得看的,是这些模型能不能稳定跑在真实机器人上。

特别是连续运行、动作切换以及异常保护等,这些工作要比训练一个新的动作更难处理。

写在最后

Jumper 把机器人训练、模型导出和控制器打包串成了一套流程,配合 AI,确实可以节省很多重复的工作。

想要研究机器人强化学习的朋友可以先从仿真开始,不必急于购买硬件。

不过,真正拿来做机器人开发,还要看后面的真机测试和部署文档能不能跟上。

如果这两块做好了,Jumper 就不只是一次有趣的机器人展示项目了。

GitHub 地址:https://github.com/KingKongRobotics/jumper

平时我会持续分享一些有趣的开源项目,有兴趣的朋友可以点击关注一下。

回复关键词,可以找到你想要的项目。

图片

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/201997