近日,HuggingFace 開源了低成本 AI 機器人 LeRobot,并指導大家從頭開始構建 AI 控制的機器人,包括組裝、配置到訓練控制機器人的神經網絡。
當前的 AI 機器人,已經可以上躥下跳后空翻、再接閃電五連鞭,代替人類承擔各種工作。哪怕是當大號手辦,咱也想整一個玩玩。
但無奈目前大多公司還在研發階段,少數能量產的又有億點小貴。當然了,小編相信 AI 和機器人最終會走進千家萬戶。
而現在,我們可以玩到一個低成本的解決方案 ——LeRobot:
—— 不知諸位可還記得「炒菜大師」ALOHA?
而這個 LeRobot,就是我們自己可以擁有的 ALOHA,能夠模仿人類完成一些簡單的任務。
單個機械臂的成本在 200 美元左右,而后端的模型訓練在自己的筆記本上就可以搞定。
官方開源了全部的硬件和軟件,包括訓練和控制程序、AI 模型、SolidWorks 文件等。
我們可以從零組裝出機械臂,并發揮想象教會它一些事情。
LeRobot 項目由前特斯拉工程師 Remi Cadene(現在是 HuggingFace 的 principal research scientist)所領導,并給出了一份詳細的指南,包括如何從頭開始構建 AI 控制的機器人,—— 組裝、配置,以及訓練控制機器人的神經網絡。
項目基于開源的 Koch v1.1 機器人套件(也可以是別的硬件或者虛擬平臺),包含兩個六電機的機械臂,可使用一個或多個攝像頭作為視覺傳感器。
項目地址:https://github.com/huggingface/lerobot
LeRobot 還計劃在未來開發更具性價比的 Moss v1 版本,定價僅為 150 美元。
連 Mobile ALOHA 的作者也表示“Amazing”:
對于 AI 機器人,專業人士認為它將成為這個時代的 PC:
我一直在等待兩個平臺的轉變:
-相當于早期 PC 的 AR / VR
-相當于早期個人電腦的機器人
而大多數網友則更加直接:這是我過去十年來一直想要的機械手,必須得到它!
說到開源的力量,項目剛剛發布就有網友玩了起來:
因為他表示自己的視頻沒有加速,所以小編也沒給他加速。
目前的 HuggingFace 上給出了四種模型,以及 98 個數據集,開發者還可以選擇在訓練過程中上傳自己的數據集。
LeRobot 目前使用的機械臂來源于 Alexander Koch 在幾個月前開源的項目:
下圖是前輩的樣子,總體的硬件差別不大,但為了方便大家復刻和使用,LeRobot 做了一些改進。
Koch v1.1 拿掉了之前硬件模型中一些干擾材料,讓尺寸標準化,并為引導臂添加了一個平臺,允許從動臂從地面拾取物體。
通過更換直流轉換器,Koch v1.1 無需使用烙鐵進行組裝,也無需手動調節電壓轉換器。
項目還添加了機械臂的 SolidWorks 模型、接線圖以及裝配視頻。
以引導臂(LeaderArm)為例:
下表是需要購買的部件,主要的開銷在 6 個舵機上面,剩下的包括電機驅動板、固定裝置、電源、杜邦線之類的。
而手臂結構的塑料片,則需要根據給出的文件通過 3D 打印獲得。
實際上對于相關愛好者來說,這些零件基本都能湊出來,而且咱們國內買這些東西也要便宜得多。
另外,如果需要平替或者升級伺服電機的話,記得修改控制程序。
他這里給出的兩種電機扭矩都不大,但精度和轉速倒是都挺高,不知道替換后會有多大影響,感興趣的小伙伴不妨一試。
首先安裝 Koch v1.1 所需的依賴:
pip install -e ".[koch]"
然后按照接線圖給驅動板和電機供電,USB 連接到電腦:
注意從動臂這邊有倆大一點的電機需要 12V 供電,以及 USB 不能作為電源。
通過以下命令進行電機的配置和校準:
python lerobot/scripts/control_robot.py teleoperate /
--robot-path lerobot/configs/robot/koch.yaml /
--robot-overrides '~cameras' # do not instantiate the cameras
程序實例化一個類來調用 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 秒:
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)
—— 是不是很簡單?
那么由此可知,訓練機械臂模仿人類的原理就是,在從動臂模仿引導臂的同時,加上一個攝像頭的實時畫面,
在模仿(訓練)的過程中,模型收集了手臂位置和對應的圖像數據,之后(推理)就可以根據當前攝像頭看到的畫面來預測各個電機需要到達的角度。
小編翻了一下項目的代碼,發現這個「模仿游戲」所用的 AI 模型居然就是 ALOHA 用的 Action Chunking with Transformers (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()
使用下面的代碼嘗試以 60 fps 錄制視頻 30 秒(busy_wait 負責控制幀率):
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)
攝像頭拍攝的圖像幀會以線程的形式保存在磁盤上,并在錄制結束時編碼為視頻。
也可以將視頻流顯示在窗口中,以方便驗證。
還可以使用命令行參數設置數據記錄流程,包括錄制開始前、錄制過程和錄制結束后停留的時間。
可視化
python lerobot/scripts/visualize_dataset_html.py /
--root data /
--repo-id ${HF_USER}/koch_test
以上命令將啟動一個本地 Web 服務器,如下所示:
建議
一旦您熟悉了數據記錄,就可以創建更大的數據集進行訓練。一個好的開始任務是在不同位置抓取一個物體并將其放入箱子中。
建議至少錄制 50 集,每個地點 10 集。在整個錄制過程中保持攝像機固定并保持一致的抓取行為。
實現可靠的抓取性能后,您可以開始在數據收集過程中引入更多變化,例如額外的抓取位置、不同的抓取技術以及改變相機位置。
避免過快地添加太多變化,因為這可能會影響您的結果。
本文來自微信公眾號:微信公眾號(ID:null),作者:alan,原標題《人人都能玩得起 AI 機器人!HuggingFace 開源低成本解決方案》
本文鏈接:http://www.tebozhan.com/showinfo-45-6540-0.html人人都能玩得起 AI 機器人,HuggingFace 開源低成本解決方案 LeRobot
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com