輯:alan
當前的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美元。
連 的作者也表示“Amazing”:
對于AI機器人,專業人士認為它將成為這個時代的PC:
我一直在等待兩個平臺的轉變:
-相當于早期PC的AR/VR
-相當于早期個人電腦的機器人
而大多數網友則更加直接:這是我過去十年來一直想要的機械手,必須得到它!
說到開源的力量,項目剛剛發布就有網友玩了起來:
因為他表示自己的視頻沒有加速,所以小編也沒給他加速。
目前的HuggingFace上給出了四種模型,以及98個數據集,開發者還可以選擇在訓練過程中上傳自己的數據集。
制作自己的AI Robot
LeRobot目前使用的機械臂來源于Alexander Koch在幾個月前開源的項目:
下圖是前輩的樣子,總體的硬件差別不大,但為了方便大家復刻和使用,LeRobot做了一些改進。
Koch v1.1拿掉了之前硬件模型中一些干擾材料,讓尺寸標準化,并為引導臂添加了一個平臺,允許從動臂從地面拾取物體。
通過更換直流轉換器,Koch v1.1無需使用烙鐵進行組裝,也無需手動調節電壓轉換器。
項目還添加了機械臂的SolidWorks模型、接線圖以及裝配視頻。
以引導臂(Leader Arm)為例,
下表是需要購買的部件,主要的開銷在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集。在整個錄制過程中保持攝像機固定并保持一致的抓取行為。
實現可靠的抓取性能后,您可以開始在數據收集過程中引入更多變化,例如額外的抓取位置、不同的抓取技術以及改變相機位置。
避免過快地添加太多變化,因為這可能會影響您的結果。
輯:潤
【新智元導讀】火爆全網的斯坦福炒菜機器人之后,Jim Fan分享了三個未來可以作為訓練和控制機器人的技術方向,也許真的在不久的將來,人類的養老焦慮要被機器人徹底解決了。
火爆全網的ALOHA炒蝦機器人,突然解決了這屆網友們們的養老焦慮。
然后,雖然網友后邊發現,機器人熟練的家務勞動不是完全自主的能力。主要還是要靠人工操作。
如果沒有人工干預,機器人能干的家務依然還是挺有限的,還動不動翻車。
現階段,要真正讓機器人能夠做出人類級別的流暢操作,還是需要人類在背后操作。
最近,英偉達高級科學家Jim fan分享了現階段讓人類操作機器人的3種主要技術。
在它看來,伴隨著人類操作「操縱桿++」來執行任務和收集數據,或者在存在任何安全問題時進行干預介入。
機器人在完成了學習曲線的爬升之后,就能像人練習游戲技巧一樣,最終在物理世界中很好的模擬人的行為。
動作捕捉(MoCap)手套
好萊塢電影中使用的MoCap系統來捕捉手部關節的精細運動。
如果機器人手和人類一樣也是有5個手指,動作就可以「無縫完成」。
例如,演示者可以佩戴CyberGlove并操縱機器人。
CyberGlove將實時捕捉運動信號和觸覺反饋,然后將其重新定位到人形機器人上。
這款18個傳感器數據手套的每個手指上有兩個彎曲傳感器、四個外展傳感器,以及測量拇指交叉、手掌拱形、手腕彎曲和手腕外展的傳感器組成。
這些傳感器使得CyberGlove可以活動指尖,使用戶可以輕松打字、書寫和抓握物體。
相關的數據同樣也可以用來訓練像ALOHA這樣的機器人系統。
計算機視覺控制機器人
另一種方式是通過計算機視覺的方式來控制和學習數據。
項目地址:https://arxiv.org/abs/1910.03135
英偉達的研究人員在2019年就提出過一個名為DexPilot的低成本、基于視覺的遠程操作系統。
計算機只需觀察人的裸手即可完全控制整個23DoA的機器人系統。
DexPilot使操作員能夠執行各種復雜的操作任務,允許收集高維、多模態、狀態動作數據。
這些數據可以在未來用于學習具有挑戰性的操作任務的感覺運動策略。系統性能是通過兩名人類演示者執行各種任務的速度和可靠性指標來衡量。
這種隔空取物的方式來控制機器人看著是真的非常科幻。
視覺感知模塊不斷觀察和測量裸露的人手運動(姿勢和手指配置)。
然后,人手的動作被傳遞到機器人系統,使得復制的動作成為了可能。
這種方法使人類操作者能夠卷曲和排列手指、形成抓握、重新定向和平移手掌,而機器人系統也以類似的方式跟隨。
整個系統主要由:
-用于手部跟蹤的DART
-用于人手狀態估計和增強 DART 的深度神經網絡
-使用DART進行人手狀態細化,并通過非線性優化將其轉換為Allegro手部狀態
-通過黎曼運動策略 (RMP) 和扭矩級阻抗控制器進行運動生成和控制。
完整的系統架構如圖所示,整個系統產生大約一秒的延遲。
DexPilot通過將觀察到的人手和手指運動轉化為機器人手臂和手指運動,使高度驅動的手臂系統能夠找到適合各種操縱任務的電機解決方案。
重要的是,從錢包中提取錢和打開塑料容器內的紙板箱等多項任務非常復雜,以至于手工設計機器人解決方案或直接應用學習方法可能沒法完成。
在系統本身上創建這些解決方案可以讀取、訪問和存儲機器人指尖的 92 個觸覺信號、通過手和手臂命令和測量的 23 個關節位置和速度信號、整個系統的 23 個扭矩命令,以及與系統相關的任何攝像機源。
這種豐富的數據源對于學習方法的應用至關重要,這些方法有望學會解決復雜、多階段、長期的任務。
而且,目前的DexPilot系統未來也將進行多方面的改進。例如,隨著深度學習架構的進步、RGB 數據的納入、更大的數據集以及成像硬件的變化,可以提高人手跟蹤的準確性。
理想情況下,人手跟蹤精度應該得到足夠的提高,以大大減少運動重定位方法中的投影距離,增強手指對小物體的精細控制和操縱以及多指精確抓握。
抓取和操縱控制算法可以在手上實現,自動進行力調節控制,以減輕用戶的控制負擔,并最大限度地減少因施加不正確的抓力而導致的意外零件掉落。
最后,可以實施意圖識別方案,使機器人能夠預測人類意圖并部署自動化解決方案,例如,系統識別出人類抓握物體的意圖,系統自動獲取抓握力。
VR讓你在世界上任何地方都能控制機器人
如果將訓練室變成VR游戲,對機器人進行「角色扮演」。這樣可擴展的遠程數據收集——來自世界各地的注釋者無需到場即可做出貢獻。
項目地址:https://svl.stanford.edu/igibson/
iGibson 是一個基于Bullet的模擬環境,提供快速視覺渲染和物理模擬。
iGibson配備了15個完全交互式的高質量場景,數百個根據真實家庭和辦公室重建的大型3D場景,并兼容CubiCasa5K和3D-Front等數據集,提供12000+額外的交互式場景。
iGibson 的一些功能包括域隨機化、與運動規劃器的集成以及用于收集人體演示的易于使用的工具。
借助這些場景和功能,iGibson 允許研究人員訓練和評估機器人代理,這些機器人代理使用視覺信號來解決導航和操作任務,例如開門、拾取和放置物體或在柜子中搜索。
參考資料:
https://twitter.com/DrJimFan/status/1744786506810900679
融界4月3日消息,有投資者在互動平臺向埃斯頓提問:請問公司運動控制系統,機器人專用控制器,是人工控制還是怎樣的?謝謝!
公司回答表示:當前公司的運動控制系統、機器人專用控制器是基于計算機學的自動控制,同時公司也正在研發AI控制技術的介入與接入。
本文源自金融界AI電報