引言
在科技迅速發展的當下,人形機器人正變得日益重要,其應用范圍從工業自動化到服務業不斷擴展。本文將通過Mercury X1大象人形機器人的案例,探討如何利用尖端技術如大型語言模型(LLM)、同時定位與映射(SLAM)、機器人操作系統(ROS)、開源計算機視覺(OpenCV)和S-Tag標記碼技術來實現復雜環境中的精確物體抓取和移動。
此案例不僅展示了機器人的高級功能,也體現了現代機器人如何有效解決實際問題,預示著未來技術在工業和服務業中的應用前景。接下來的內容將詳細說明實驗的技術設置、步驟與成果。
![wKgaomYt55mAOKkVAAgINhZXgIs297.png](https://file1.elecfans.com/web2/M00/DF/0D/wKgaomYt55mAOKkVAAgINhZXgIs297.png)
技術點介紹
在Mercury X1的應用案例中,整合了多種技術使得機器人能夠在復雜的環境中執行精準的物體抓取和移動任務。以下是案例中涉及到的關鍵技術和詳細介紹:
1.LLM(Large Language Model)
大型語言模型(LLM)如ChatGPT系列,在機器人技術中的應用允許機器人理解和執行基于自然語言的指令。這種模型通過處理大量的文本數據學習語言的復雜性和上下文關系,使機器人能夠解析用戶的指令并轉化為動作。
將一個對話形式的大語言模型,嵌入到機器人當中是目前一種比較熱門的一種技術。
在Mercury X1機器人中,LLM用于理解自然語言解釋操作命令,為后續的動作提供給決策。
![wKgaomYt596AFbHrAAFOXZiH4eY815.png](https://file1.elecfans.com/web2/M00/DF/0E/wKgaomYt596AFbHrAAFOXZiH4eY815.png)
2.同時定位與建圖SLAM
SLAM技術是現代機器人和自動駕駛汽車中不可或缺的一部分,它允許機器人在沒有外部幫助的情況下,在未知環境中進行定位和地圖創建。通過使用激光雷達、攝像頭和其他傳感器,SLAM幫助Mercury X1機器人構建環境地圖,實時更新其位置,并規劃行動路徑。這對于確保機器人在復雜環境中能夠自主導航至關重要。
![wKgaomYt6B2ABtkuAA2awJafRbM391.png](https://file1.elecfans.com/web2/M00/DF/0E/wKgaomYt6B2ABtkuAA2awJafRbM391.png)
3.機器人操作系統 (ROS)
機器人操作系統(ROS)是一個靈活的框架,用于編寫機器人軟件。它提供了一系列工具和庫,使開發者能夠構建復雜而可靠的機器人行為。ROS的模塊化設計允許Mercury X1機器人的開發者輕松集成不同的硬件和軟件比如說機械臂的路徑規劃,移動地盤的建圖導航避障等功能,處理數據通信,并管理多個傳感器和執行器之間的交互。
ROS是一個非常強大的工具,在機器人應用領域當中,在全球范圍內也是非常多人使用的。
![wKgaomYt6F-APwnPAAMXLv3q99U603.png](https://file1.elecfans.com/web2/M00/DF/0E/wKgaomYt6F-APwnPAAMXLv3q99U603.png)
4.開源計算機視覺庫 (OpenCV)
OpenCV是用于實現圖像處理和計算機視覺的開源庫,它在本次的案例中扮演了至關重要的角色,沒有它就不能完成這個項目。機器人的攝像頭通過OpenCV分析收集到的視覺數據,識別和定位物體。OpenCV的算法使機器人能夠識別物體形狀、大小和精確坐標,這些信息對于精確抓取和操作至關重要。
提供了物體的坐標給機器人,就可以實現精準的抓取。
![wKgaomYt6GyAeAI4AACUErg-VYA693.png](https://file1.elecfans.com/web2/M00/DF/0E/wKgaomYt6GyAeAI4AACUErg-VYA693.png)
5.S-Tag標記碼技術
S-Tag標記碼是一種高度可靠的標識系統,設計用于在視覺上挑戰的環境中提供準確的標記識別。這些標記被用于標識Mercury X1機器人操作環境中的物體和位置。即使在光線不足或視線受阻的情況下,S-Tag也能確保機器人通過其攝像頭系統準確識別目標物體。
https://youtu.be/vnHI3GzLVrY
6.pymycobot
pymycobot是用于控制Mercury X1機器人機械臂和末端執行器(如夾爪)的Python庫。它允許開發者精確控制機械臂的角度、坐標以及運動模式,包括差補模式和刷新模式。此庫為機器人提供了高度的靈活性和可定制性,使得機器人能夠執行復雜的抓取和操控任務,并適應各種操作需求。
產品介紹
Mercury X1
Mercury X1是由Elephant Robotics開發的一款先進的人形機器人,特別設計用于應對各種自動化任務。它擁有19個自由度,(單臂7個自由度)使其在執行任務時具有極高的靈活性和適應性。Mercury X1配備了輪式移動底座,由高性能直驅電機驅動,能夠在復雜環境中穩定移動,并具備高達8小時的電池續航能力,適合個人和商業應用。
這款機器人采用高性能主控制器系統,配置了NVIDIA Jetson Xavier提供強大的計算支持,以處理視覺測距、傳感器融合、定位與地圖構建、障礙檢測和路徑規劃等復雜算法。此外,Mercury X1的移動基座裝備了LiDAR、超聲波傳感器和2D視覺系統,能夠實現高感知的環境交互。
![wKgZomYt6KOAZVVQAADLT5jrUWk064.png](https://file1.elecfans.com/web2/M00/DE/2F/wKgZomYt6KOAZVVQAADLT5jrUWk064.png)
myCobot Pro Adaptive Gripper
2 指自適應夾持器可實現內部和外部平行夾持,以及獨特的環繞式夾持模式。它可以拾起任何形狀的任何物體并且不會松開。使用它來完成一系列完整的應用,并快速投入生產 - 無需機器人專業知識。它是高度靈活和可靠的機器人單元的關鍵。
![wKgaomYt6LCAZJiwAAFIqf-5yi0330.png](https://file1.elecfans.com/web2/M00/DF/0E/wKgaomYt6LCAZJiwAAFIqf-5yi0330.png)
![wKgaomYt6MaAZXaxAAKN4cT8K_s018.png](https://file1.elecfans.com/web2/M00/DF/0E/wKgaomYt6MaAZXaxAAKN4cT8K_s018.png)
myCobot Pro Camera Flange
使用USB-B數據線能夠獲取到圖像的相機模組。
![wKgZomYt6NCAOKh6AAMCmt9eI9A356.png](https://file1.elecfans.com/web2/M00/DE/30/wKgZomYt6NCAOKh6AAMCmt9eI9A356.png)
接下來,我們將探討這些技術在實際應用中是如何被集成到機器人中,并展示其在具體任務中的表現。
![wKgaomYt6NqACx0NAAFlNrVAmJo760.png](https://file1.elecfans.com/web2/M00/DF/0E/wKgaomYt6NqACx0NAAFlNrVAmJo760.png)
場景流程介紹
建圖設立標記點
建圖:首先在所處的環境里,使用Mercury X1自帶的雷達,通過ROS中的SLAM技術進行建圖,用的是gmapping算法進行2D建圖。啟動機器人,對系統進行初始化,在所處的環境中移動,通過雷達傳感器收集數據,SLAM算法將這些數據轉化為一個結構化的地圖,同時實時更新機器人的位置,為了確保地推的準確性,建議在環境中多移動會。
標記A,B點:在RViz中使用“Publish Point”工具,在地圖上點擊想要標記的位置,就會發布一個點到ROS的默認話題,重復這個過程在B點也進行標記,記錄下A,B點的坐標
![wKgZomYt6POAHKaJAAkIF76vDuM274.png](https://file1.elecfans.com/web2/M00/DE/30/wKgZomYt6POAHKaJAAkIF76vDuM274.png)
在程序中修改好保存的點位,之后就可以進行定點巡航了。
![wKgaomYt6P-APzCYAA9dhWLisC8367.png](https://file1.elecfans.com/web2/M00/DF/0E/wKgaomYt6P-APzCYAA9dhWLisC8367.png)
移動到A桌,進行物體的識別與抓取
完成完上一步驟之后,Mercury X1運動到A桌進行物體的抓取。
![wKgaomYt6QmAafnxABrKBXqebEE213.png](https://file1.elecfans.com/web2/M00/DF/0E/wKgaomYt6QmAafnxABrKBXqebEE213.png)
因為物體的檢測是根據手臂末端的攝像頭進行的,所以在一開始未知的情況下,會對周圍的環境先進行一個巡視,發現目標之后快速計算目標物體的位置。
#掃描全部物體的代碼
def detect_objects_all(flag):
if flag == 0:
detect_objects("left", ml_camera_pos_a, camera_data_a)
detect_objects("right", mr_camera_pos_a, camera_data_a)
cube_data, tray_data = judge_tray_cube(camera_data_a) else:
ml.send_angles([-41.88, 30.62, -1.14, -102.57, 59.89, 58.11, 9.63], 10)
mr.send_angles([45.94, 25.33, 0.15, -102.31, -58.65, 55.8, -13.94], 10)
waitl()
ml.set_gripper_value(0, 10)
mr.set_gripper_value(0, 10)
time.sleep(12)
detect_objects("left", ml_camera_pos_b, camera_data_b)
detect_objects("right", mr_camera_pos_b, camera_data_b)
ml.set_gripper_value(50, 10)
mr.set_gripper_value(50, 10)
cube_data, tray_data = judge_tray_cube(camera_data_b) return cube_data, tray_data
每個物體的表面都有貼有STag碼,可以通過標記碼來精準的獲得物體的坐標參數,在此獲得的物體坐標和機械臂的坐標并不在同一個坐標系當中,所以在機械臂的機器視覺算法當中,都會有一個世界坐標系,將物體的坐標,機械臂末端的坐標轉化為世界坐標,這樣就方便機械臂對物體進行抓取。
![wKgZomYt6SOAG1HDAAC3H75cjyQ326.png](https://file1.elecfans.com/web2/M00/DE/30/wKgZomYt6SOAG1HDAAC3H75cjyQ326.png)
![wKgaomYt6SqAdB0pABwb8fy6Z4A335.png](https://file1.elecfans.com/web2/M00/DF/0E/wKgaomYt6SqAdB0pABwb8fy6Z4A335.png)
移動到B桌
拿著收納箱,前往B桌進行分類。
對物體進行分類
跟第二步,物體的識別和抓取的算法是一樣的,都是通過STag標記碼識別之后獲取物體的坐標進行分類。
![wKgaomYt6TOAH45HABRelv7pg5s193.png](https://file1.elecfans.com/web2/M00/DF/0E/wKgaomYt6TOAH45HABRelv7pg5s193.png)
技術難點
在開發過程中的難點最核心的是,雙臂人形機器人協同控制的問題,主要從以下幾個方面來分析:
精確的坐標和時間同步:
要精確計算兩個手臂的運動軌跡,確保它們在抓取托盤時能同時到達預定位置。這要求系統能夠同步控制兩個獨立的驅動系統,確保動作的協調性和同步性。
在Mercury X1夾爪托起托盤的時候,需要同時夾住托盤的邊緣并且同時抬起托盤,為了確保同步進行,避免一方提前抬起,預設了1s的時間進行等待。
def put_up_tray(tray_data):
ml.set_gripper_value(60, 10)
mr.set_gripper_value(60, 10)
time.sleep(1)
for tray in tray_data:
offset, fact_bcl = get_obj_coords(tray["corners"], tray["ids"], tray["cur_coords"], tray['arm'])
point = fact_bcl.copy()
px, py, pz = point[0], point[1], point[2]
if tray["ids"] == [4] and tray['arm'] == "left":
af = (offset + 90) * pi / 180
mc = ml
Hei = 57
Len = -20
elif tray["ids"] == [5] and tray['arm'] == "right":
af = (offset - 90) * pi / 180
mc = mr
Hei = 57
Len = 30
else:
continue
# p3
px3 = px + Hei * cos(af) + Len * sin(af)
py3 = py + Hei * sin(af) - Len * cos(af)
pz3 = pz
p3 = [px3, py3, pz3]
mc.send_base_coord(6, offset, sp)
mc.send_base_coord(2, py3, sp)
mc.send_base_coord(1, px3, sp)
mc.send_base_coord(3, pz - 10, sp)
waitl()
ml.set_gripper_value(0, 10)
mr.set_gripper_value(0, 10)
time.sleep(2)
current_coordsl = ml.get_base_coords()
current_coordsr = mr.get_base_coords()
waitl()
ml.send_base_coord(3, current_coordsl[2] + 20, 20)
mr.send_base_coord(3, current_coordsr[2] + 20, 20)
waitl()
力學平衡和穩定性
在抓取大型或重物體時,雙臂的協調尤為重要。需要確保機器人在執行任務時保持穩定,避免因力學不平衡造成的傾倒或損壞。這涉及到復雜的力學計算和實時反饋調節。
在本次項目中,因為動作并不算是很復雜,只需要將托盤同時抬起,同時放下就能夠保證托盤的穩定性。如果在復雜的場景,比如說用手持乒乓球拍保證乒乓球拍上的球不會掉落,這個涉及力學平衡和穩定性就要考慮的多。
碰撞避免
在雙臂操作中,防止手臂之間、手臂與機器人體、手臂與環境之間的碰撞是一大挑戰。需要精確地規劃每個手臂的運動路徑,同時保持足夠的安全距離。
總結
此案例不僅凸顯了機器人技術在工業和服務領域的實際應用潛力,也展示了技術融合的重要性。通過詳細介紹技術背景、實施步驟和具體應用,我們看到了Mercury X1在提高生產效率、減少人工成本和應對復雜操作環境中的重要價值。
如果你對該案例感興趣的話麻煩點贊留言支持我們,你的支持是我們更新的動力!
審核編輯 黃宇
-
開源
+關注
關注
3文章
3402瀏覽量
42711 -
python
+關注
關注
56文章
4807瀏覽量
85037 -
機械臂
+關注
關注
12文章
520瀏覽量
24721 -
人形機器人
+關注
關注
3文章
495瀏覽量
16799
發布評論請先 登錄
相關推薦
圖紙代碼完全開源!稚暉君:人人都能造人形機器人!
![圖紙代碼完全開源!稚暉君:人人都能造<b class='flag-5'>人形</b><b class='flag-5'>機器人</b>!](https://file1.elecfans.com/web1/M00/F3/C5/wKgaoWceSsCAf6Q9AARxOf0XtJA180.png)
【「具身智能機器人系統」閱讀體驗】2.具身智能機器人大模型
【「具身智能機器人系統」閱讀體驗】1.初步理解具身智能
《具身智能機器人系統》第1-6章閱讀心得之具身智能機器人系統背景知識與基礎模塊
大象機器人11月大事件回顧
機器視覺 歡創播報 Figure 02人形機器人發布
![<b class='flag-5'>機器</b>視覺 歡創播報 Figure 02<b class='flag-5'>人形</b><b class='flag-5'>機器人</b>發布](https://file1.elecfans.com//web2/M00/02/31/wKgaoma0aDuAbEU8AABWPnGBIWY09.webp)
大象機器人水星MercuryX1輪式人形機器人基于物體標記建模的鍵盤點按操作!
![<b class='flag-5'>大象</b><b class='flag-5'>機器人</b><b class='flag-5'>水星</b>MercuryX<b class='flag-5'>1</b>輪式<b class='flag-5'>人形</b><b class='flag-5'>機器人</b>基于物體標記建模的鍵盤點按操作!](https://file1.elecfans.com/web2/M00/01/7F/wKgaomawSg-AKi5NAAFVsqhrYDQ673.png)
評論