設(shè)置
  • 日夜間
    隨系統(tǒng)
    淺色
    深色
  • 主題色

人人都能玩得起 AI 機(jī)器人,HuggingFace 開源低成本解決方案 LeRobot

新智元 2024/8/29 12:50:49 責(zé)編:汪淼

近日,HuggingFace 開源了低成本 AI 機(jī)器人 LeRobot,并指導(dǎo)大家從頭開始構(gòu)建 AI 控制的機(jī)器人,包括組裝、配置到訓(xùn)練控制機(jī)器人的神經(jīng)網(wǎng)絡(luò)。

當(dāng)前的 AI 機(jī)器人,已經(jīng)可以上躥下跳后空翻、再接閃電五連鞭,代替人類承擔(dān)各種工作。哪怕是當(dāng)大號(hào)手辦,咱也想整一個(gè)玩玩。

但無(wú)奈目前大多公司還在研發(fā)階段,少數(shù)能量產(chǎn)的又有億點(diǎn)小貴。當(dāng)然了,小編相信 AI 和機(jī)器人最終會(huì)走進(jìn)千家萬(wàn)戶。

而現(xiàn)在,我們可以玩到一個(gè)低成本的解決方案 ——LeRobot:

—— 不知諸位可還記得「炒菜大師」ALOHA?

而這個(gè) LeRobot,就是我們自己可以擁有的 ALOHA,能夠模仿人類完成一些簡(jiǎn)單的任務(wù)。

單個(gè)機(jī)械臂的成本在 200 美元左右,而后端的模型訓(xùn)練在自己的筆記本上就可以搞定。

官方開源了全部的硬件和軟件,包括訓(xùn)練和控制程序、AI 模型、SolidWorks 文件等。

我們可以從零組裝出機(jī)械臂,并發(fā)揮想象教會(huì)它一些事情。

LeRobot 項(xiàng)目由前特斯拉工程師 Remi Cadene(現(xiàn)在是 HuggingFace 的 principal research scientist)所領(lǐng)導(dǎo),并給出了一份詳細(xì)的指南,包括如何從頭開始構(gòu)建 AI 控制的機(jī)器人,—— 組裝、配置,以及訓(xùn)練控制機(jī)器人的神經(jīng)網(wǎng)絡(luò)。

項(xiàng)目基于開源的 Koch v1.1 機(jī)器人套件(也可以是別的硬件或者虛擬平臺(tái)),包含兩個(gè)六電機(jī)的機(jī)械臂,可使用一個(gè)或多個(gè)攝像頭作為視覺傳感器。

項(xiàng)目地址:https://github.com/huggingface/lerobot

LeRobot 還計(jì)劃在未來(lái)開發(fā)更具性價(jià)比的 Moss v1 版本,定價(jià)僅為 150 美元。

連 Mobile ALOHA 的作者也表示“Amazing”:

對(duì)于 AI 機(jī)器人,專業(yè)人士認(rèn)為它將成為這個(gè)時(shí)代的 PC:

我一直在等待兩個(gè)平臺(tái)的轉(zhuǎn)變:

-相當(dāng)于早期 PC 的 AR / VR

-相當(dāng)于早期個(gè)人電腦的機(jī)器人

而大多數(shù)網(wǎng)友則更加直接:這是我過(guò)去十年來(lái)一直想要的機(jī)械手,必須得到它!

說(shuō)到開源的力量,項(xiàng)目剛剛發(fā)布就有網(wǎng)友玩了起來(lái):

因?yàn)樗硎咀约旱囊曨l沒有加速,所以小編也沒給他加速。

目前的 HuggingFace 上給出了四種模型,以及 98 個(gè)數(shù)據(jù)集,開發(fā)者還可以選擇在訓(xùn)練過(guò)程中上傳自己的數(shù)據(jù)集。

制作自己的 AI Robot

LeRobot 目前使用的機(jī)械臂來(lái)源于 Alexander Koch 在幾個(gè)月前開源的項(xiàng)目:

下圖是前輩的樣子,總體的硬件差別不大,但為了方便大家復(fù)刻和使用,LeRobot 做了一些改進(jìn)。

Koch v1.1 拿掉了之前硬件模型中一些干擾材料,讓尺寸標(biāo)準(zhǔn)化,并為引導(dǎo)臂添加了一個(gè)平臺(tái),允許從動(dòng)臂從地面拾取物體。

通過(guò)更換直流轉(zhuǎn)換器,Koch v1.1 無(wú)需使用烙鐵進(jìn)行組裝,也無(wú)需手動(dòng)調(diào)節(jié)電壓轉(zhuǎn)換器。

項(xiàng)目還添加了機(jī)械臂的 SolidWorks 模型、接線圖以及裝配視頻。

材料清單

以引導(dǎo)臂(Leader Arm)為例:

下表是需要購(gòu)買的部件,主要的開銷在 6 個(gè)舵機(jī)上面,剩下的包括電機(jī)驅(qū)動(dòng)板、固定裝置、電源、杜邦線之類的。

而手臂結(jié)構(gòu)的塑料片,則需要根據(jù)給出的文件通過(guò) 3D 打印獲得。

實(shí)際上對(duì)于相關(guān)愛好者來(lái)說(shuō),這些零件基本都能湊出來(lái),而且咱們國(guó)內(nèi)買這些東西也要便宜得多。

另外,如果需要平替或者升級(jí)伺服電機(jī)的話,記得修改控制程序。

他這里給出的兩種電機(jī)扭矩都不大,但精度和轉(zhuǎn)速倒是都挺高,不知道替換后會(huì)有多大影響,感興趣的小伙伴不妨一試。

配置和校準(zhǔn)

首先安裝 Koch v1.1 所需的依賴:

pip install -e ".[koch]"

然后按照接線圖給驅(qū)動(dòng)板和電機(jī)供電,USB 連接到電腦:

注意從動(dòng)臂這邊有倆大一點(diǎn)的電機(jī)需要 12V 供電,以及 USB 不能作為電源。

通過(guò)以下命令進(jìn)行電機(jī)的配置和校準(zhǔn):

python lerobot/scripts/control_robot.py teleoperate \

--robot-path lerobot/configs/robot/koch.yaml \

--robot-overrides '~cameras'  # do not instantiate the cameras

程序?qū)嵗粋€(gè)類來(lái)調(diào)用 SDK 操作電機(jī)(port 改為自己設(shè)備上檢測(cè)到的端口):

DynamixelMotorsBus(port="/dev/tty.usbmodem575E0031751")

接下來(lái)配置每個(gè)電機(jī)的索引(相當(dāng)于在總線上控制時(shí)的地址):

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 會(huì)自動(dòng)檢測(cè)當(dāng)前電機(jī)索引,如果電機(jī)中保存的索引與配置文件中不匹配,會(huì)觸發(fā)一個(gè)配置過(guò)程,需要拔掉電機(jī)的電源,按順序重新連接電機(jī)。

讀寫測(cè)試

運(yùn)行以下代碼:

leader_pos = leader_arm.read("Present_Position")

follower_pos = follower_arm.read("Present_Position")

print(leader_pos)

print(follower_pos)

配置成功后可以得到所有 12 個(gè)電機(jī)的當(dāng)前位置:

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

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

校準(zhǔn)

手動(dòng)調(diào)節(jié)機(jī)械臂到幾個(gè)固定的位置,相當(dāng)于給電機(jī)一個(gè)相對(duì)的歸零位置,同時(shí)也保證引導(dǎo)臂和從動(dòng)臂的靜止位置大致對(duì)齊。

通過(guò)校準(zhǔn)程序之后,這幾個(gè)位置會(huì)被寫入配置文件,作為之后運(yùn)行的基準(zhǔn)。

—— 溫馨提示:記得不要在 Torque_Enable 的情況下硬掰。

開玩!

準(zhǔn)備就緒,下面可以開始控制機(jī)械臂了,比如讓從動(dòng)臂模仿引導(dǎo)臂,設(shè)置采樣頻率 200Hz,操作 30 秒:

import tqdm

seconds = 30

frequency = 200

for _ in tqdm.tqdm(range(seconds*frequency)):

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

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

—— 是不是很簡(jiǎn)單?

那么由此可知,訓(xùn)練機(jī)械臂模仿人類的原理就是,在從動(dòng)臂模仿引導(dǎo)臂的同時(shí),加上一個(gè)攝像頭的實(shí)時(shí)畫面,

在模仿(訓(xùn)練)的過(guò)程中,模型收集了手臂位置和對(duì)應(yīng)的圖像數(shù)據(jù),之后(推理)就可以根據(jù)當(dāng)前攝像頭看到的畫面來(lái)預(yù)測(cè)各個(gè)電機(jī)需要到達(dá)的角度。

小編翻了一下項(xiàng)目的代碼,發(fā)現(xiàn)這個(gè)「模仿游戲」所用的 AI 模型居然就是 ALOHA 用的 Action Chunking with Transformers (ACT)。

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

除了 ACT,你也可以使用或者訓(xùn)練自己的模型,可以改成 ALOHA 那樣的雙臂模式,或者在虛擬環(huán)境中進(jìn)行訓(xùn)練和驗(yàn)證。

加入攝像頭

項(xiàng)目使用 opencv2 庫(kù)來(lái)操作 camera,以下代碼同時(shí)配置了機(jī)械臂和攝像頭:

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()

使用下面的代碼嘗試以 60 fps 錄制視頻 30 秒(busy_wait 負(fù)責(zé)控制幀率):

import time

from lerobot.scripts.control_robot import busy_wait

record_time_s = 30

fps = 60

states = []

actions = []

for _ in range(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)

攝像頭拍攝的圖像幀會(huì)以線程的形式保存在磁盤上,并在錄制結(jié)束時(shí)編碼為視頻。

也可以將視頻流顯示在窗口中,以方便驗(yàn)證。

還可以使用命令行參數(shù)設(shè)置數(shù)據(jù)記錄流程,包括錄制開始前、錄制過(guò)程和錄制結(jié)束后停留的時(shí)間。

可視化

python lerobot/scripts/visualize_dataset_html.py \

--root data \

--repo-id ${HF_USER}/koch_test

以上命令將啟動(dòng)一個(gè)本地 Web 服務(wù)器,如下所示:

建議

  • 一旦您熟悉了數(shù)據(jù)記錄,就可以創(chuàng)建更大的數(shù)據(jù)集進(jìn)行訓(xùn)練。一個(gè)好的開始任務(wù)是在不同位置抓取一個(gè)物體并將其放入箱子中。

  • 建議至少錄制 50 集,每個(gè)地點(diǎn) 10 集。在整個(gè)錄制過(guò)程中保持?jǐn)z像機(jī)固定并保持一致的抓取行為。

  • 實(shí)現(xiàn)可靠的抓取性能后,您可以開始在數(shù)據(jù)收集過(guò)程中引入更多變化,例如額外的抓取位置、不同的抓取技術(shù)以及改變相機(jī)位置。

  • 避免過(guò)快地添加太多變化,因?yàn)檫@可能會(huì)影響您的結(jié)果。

本文來(lái)自微信公眾號(hào):微信公眾號(hào)(ID:null),作者:alan,原標(biāo)題《人人都能玩得起 AI 機(jī)器人!HuggingFace 開源低成本解決方案》

廣告聲明:文內(nèi)含有的對(duì)外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時(shí)間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。

相關(guān)文章

關(guān)鍵詞:HuggingFace,機(jī)器人,LeRobot

軟媒旗下網(wǎng)站: IT之家 最會(huì)買 - 返利返現(xiàn)優(yōu)惠券 iPhone之家 Win7之家 Win10之家 Win11之家

軟媒旗下軟件: 軟媒手機(jī)APP應(yīng)用 魔方 最會(huì)買 要知