首页 > AI教程资讯 >人人都能玩得起AI机器人!HuggingFace开源低成本解决方案

人人都能玩得起AI机器人!HuggingFace开源低成本解决方案

2025-08-1902ai门户网

编辑:alan

【本站导读】近日,HuggingFace开源了低成本AI机器人LeRobot,并指导大家从头开始构建AI控制的机器人,包括组装、配置到训练控制机器人的神经网络。

当前的AI机器人,已经可以上蹿下跳后空翻、再接闪电五连鞭,代替人类承担各种工作。

哪怕是当大号手办,咱也想整一个玩玩。

但无奈目前大多公司还在研发阶段,少数能量产的又有亿点小贵。

当然了,小编相信AI和机器人最终会走进千家万户。

而现在,我们可以玩到一个低成本的解决方案——LeRobot:

——不知诸位可还记得「炒菜大师」ALOHA?

而这个LeRobot,就是我们自己可以拥有的ALOHA,能够模仿人类完成一些简单的任务。

单个机械臂的成本在200美元左右,而后端的模型训练在自己的笔记本上就可以搞定。

官方开源了全部的硬件和软件,包括训练和控制程序、AI模型、SolidWorks文件等。

我们可以从零组装出机械臂,并发挥想象教会它一些事情。

LeRobot项目由前特斯拉工程师RemiCadene(现在是HuggingFace的principalresearchscientist)所领导,并给出了一份详细的指南,

包括如何从头开始构建AI控制的机器人,——组装、配置,以及训练控制机器人的神经网络。

项目基于开源的Kochv1.1机器人套件(也可以是别的硬件或者虚拟平台),包含两个六电机的机械臂,可使用一个或多个摄像头作为视觉传感器。

项目地址:https://github.com/huggingface/lerobot

LeRobot还计划在未来开发更具性价比的Mossv1版本,定价仅为150美元。

连的作者也表示“Amazing”:

对于AI机器人,专业人士认为它将成为这个时代的PC:

我一直在等待两个平台的转变:

-相当于早期PC的AR/VR

-相当于早期个人电脑的机器人

而大多数网友则更加直接:这是我过去十年来一直想要的机械手,必须得到它!

说到开源的力量,项目刚刚发布就有网友玩了起来:

因为他表示自己的视频没有加速,所以小编也没给他加速。

目前的HuggingFace上给出了四种模型,以及98个数据集,开发者还可以选择在训练过程中上传自己的数据集。

制作自己的AIRobot

LeRobot目前使用的机械臂来源于AlexanderKoch在几个月前开源的项目:

下图是前辈的样子,总体的硬件差别不大,但为了方便大家复刻和使用,LeRobot做了一些改进。

Kochv1.1拿掉了之前硬件模型中一些干扰材料,让尺寸标准化,并为引导臂添加了一个平台,允许从动臂从地面拾取物体。

通过更换直流转换器,Kochv1.1无需使用烙铁进行组装,也无需手动调节电压转换器。

项目还添加了机械臂的SolidWorks模型、接线图以及装配视频。

材料清单

以引导臂(LeaderArm)为例,

下表是需要购买的部件,主要的开销在6个舵机上面,剩下的包括电机驱动板、固定装置、电源、杜邦线之类的。

而手臂结构的塑料片,则需要根据给出的文件通过3D打印获得。

实际上对于相关爱好者来说,这些零件基本都能凑出来,而且咱们国内买这些东西也要便宜得多。

另外,如果需要平替或者升级伺服电机的话,记得修改控制程序。

他这里给出的两种电机扭矩都不大,但精度和转速倒是都挺高,不知道替换后会有多大影响,感兴趣的小伙伴不妨一试。

配置和校准

首先安装Kochv1.1所需的依赖:

pipinstall-e“.[koch]”

然后按照接线图给驱动板和电机供电,USB连接到电脑:

注意从动臂这边有俩大一点的电机需要12V供电,以及USB不能作为电源。

通过以下命令进行电机的配置和校准:

pythonlerobot/scripts/control_robot.pyteleoperate

–robot-pathlerobot/configs/robot/koch.yaml

–robot-overrides‘~cameras’#donotinstantiatethecameras

程序实例化一个类来调用SDK操作电机(port改为自己设备上检测到的端口):

DynamixelMotorsBus(port=”/dev/tty.usbmodem575E0031751″)

接下来配置每个电机的索引(相当于在总线上控制时的地址):

follower_arm=DynamixelMotorsBus(

port=follower_port,

motors={

#name:(index,model)”shoulder_pan”:(1,“xl430-w250”),

“shoulder_lift”:(2,“xl430-w250”),

“elbow_flex”:(3,“xl330-m288”),

“wrist_flex”:(4,“xl330-m288”),

“wrist_roll”:(5,“xl330-m288”),

“gripper”:(6,“xl330-m288”),

},

)

DynamixelMotorsBus会自动检测当前电机索引,如果电机中保存的索引与配置文件中不匹配,会触发一个配置过程,需要拔掉电机的电源,按顺序重新连接电机。

读写测试

运行以下代码:

leader_pos=leader_arm.read(“Present_Position”)

follower_pos=follower_arm.read(“Present_Position”)

print(leader_pos)

print(follower_pos)

配置成功后可以得到所有12个电机的当前位置:

array([2054,523,3071,1831,3049,2441],dtype=int32)

array([2003,1601,56,2152,3101,2283],dtype=int32)

校准

手动调节机械臂到几个固定的位置,相当于给电机一个相对的归零位置,同时也保证引导臂和从动臂的静止位置大致对齐。

通过校准程序之后,这几个位置会被写入配置文件,作为之后运行的基准。

——温馨提示:记得不要在Torque_Enable的情况下硬掰。

开玩!

准备就绪,下面可以开始控制机械臂了,比如让从动臂模仿引导臂,设置采样频率200Hz,操作30秒:

importtqdm

seconds=30

frequency=200

for_intqdm.tqdm(range(seconds*frequency)):

leader_pos=robot.leader_arms[“main”].read(“Present_Position”)

robot.follower_arms[“main”].write(“Goal_Position”,leader_pos)

——是不是很简单?

那么由此可知,训练机械臂模仿人类的原理就是,在从动臂模仿引导臂的同时,加上一个摄像头的实时画面,

在模仿(训练)的过程中,模型收集了手臂位置和对应的图像数据,之后(推理)就可以根据当前摄像头看到的画面来预测各个电机需要到达的角度。

小编翻了一下项目的代码,发现这个「模仿游戏」所用的AI模型居然就是ALOHA用的ActionChunkingwithTransformers(ACT)。

论文地址:https://arxiv.org/pdf/2304.13705

除了ACT,你也可以使用或者训练自己的模型,可以改成ALOHA那样的双臂模式,或者在虚拟环境中进行训练和验证。

加入摄像头

项目使用opencv2库来操作camera,以下代码同时配置了机械臂和摄像头:

robot=KochRobot(

leader_arms={“main”:leader_arm},

follower_arms={“main”:follower_arm},

calibration_path=”.cache/calibration/koch.pkl”,

cameras={

“laptop”:OpenCVCamera(0,fps=30,width=640,height=480),

“phone”:OpenCVCamera(1,fps=30,width=640,height=480),

},

)

robot.connect()

使用下面的代码尝试以60fps录制视频30秒(busy_wait负责控制帧率):

importtime

fromlerobot.scripts.control_robotimportbusy_wait

record_time_s=30

fps=60

states=[]

actions=[]

for_inrange(record_time_s*fps):

start_time=time.perf_counter()

observation,action=robot.teleop_step(record_data=True)

states.append(observation[“observation.state”])

actions.append(action[“action”])

dt_s=time.perf_counter()–start_time

busy_wait(1/fps–dt_s)

摄像头拍摄的图像帧会以线程的形式保存在磁盘上,并在录制结束时编码为视频。

也可以将视频流显示在窗口中,以方便验证。

还可以使用命令行参数设置数据记录流程,包括录制开始前、录制过程和录制结束后停留的时间。

可视化

pythonlerobot/scripts/visualize_dataset_html.py

–rootdata

–repo-id${HF_USER}/koch_test

以上命令将启动一个本地Web服务器,如下所示:

建议

一旦您熟悉了数据记录,就可以创建更大的数据集进行训练。一个好的开始任务是在不同位置抓取一个物体并将其放入箱子中。

建议至少录制50集,每个地点10集。在整个录制过程中保持摄像机固定并保持一致的抓取行为。

实现可靠的抓取性能后,您可以开始在数据收集过程中引入更多变化,例如额外的抓取位置、不同的抓取技术以及改变相机位置。

避免过快地添加太多变化,因为这可能会影响您的结果。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表本站立场。文章及其配图仅供学习分享之

5421
395