0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

機械臂技術的前沿探索:年度案例回顧!

大象機器人科技 ? 來源:大象機器人科技 ? 2024-03-12 15:14 ? 次閱讀

引言


在過去的幾年里,機械臂技術經歷了前所未有的發(fā)展,其應用領域從傳統(tǒng)的制造業(yè)擴展到了醫(yī)療、服務、物流等多個新興行業(yè)。這種跨界擴展得益于科技的飛速進步,尤其是在傳感器、控制系統(tǒng)人工智能領域的突破。特別是去年,人工智能技術的熱潮為機械臂的智能化升級提供了更多的可能性,從而極大地拓寬了其應用場景和提高了作業(yè)效率與智能水平。

隨著這些技術的融合與創(chuàng)新,我們見證了許多令人印象深刻的應用案例,它們不僅展示了機械臂技術的先進性,還反映了未來發(fā)展的趨勢。本文將分享去年我們平臺上發(fā)布的五個精選案例,這些案例涉及到了機械臂與深度相機、人臉跟蹤等技術的結合應用。

案例1:ChatGPT for Robotics: Design Principles and Model Abilities
背景介紹


自2022年ChatGPT發(fā)布以來,它一直備受全世界人的關注,一個強大的人工智能聊天機器人。隨著各界的研發(fā)人員不斷的對ChatGPT進一步的研究和探索,衍生出來了很多富有創(chuàng)意的功能。其中就包括Microsft-Autonomous Systems and Robotics Group將ChatGPT的能力擴展到機器人領域,用語言直觀的控制機械臂,無人機,家庭機器人等等。

https://youtu.be/NYd0QcZcS6Q

你可能會覺得我現(xiàn)在也可以做到跟一個機器人說讓他去做一些操作指令,他也會完成那個指令,這能有什么區(qū)別。其實不然,這里頭有這你無法想象的一個強大的功能。以前那些功能個的實現(xiàn)都是依賴于寫代碼來控制機器人。

例如:我想要機械臂聽到命令之后往前走,就必須得提前編程接收到命令 往前走的代碼,之后觸發(fā)這個功能。

wKgaomXv8pyAJnExAAIu1Dx7hTk682.png

這個團隊探索改變這個現(xiàn)狀,用OpenAI的AI語言模型ChatGPT使自然的人機交互成為可能。不再需要大量的代碼提前編寫好一些固定的程序,只需要簡單的跟ChatGPT進行對話,就可以實現(xiàn)某種功能,希望能夠幫助人們更加輕松的與機器人進行交互,不需要學習復雜的編程語言或者有關機器人的詳細信息。

例如:預想的是,我們提前編程好相對應的 APIs功能,告訴ChatGPT這個功能是做什么的,然后通過跟 ChatGPT進行對話,ChatGPT根據對話的需求以及對應的API的 功能,自行的調用API控制機械臂。

wKgaomXv8puABMTBAAH1ApCIGmY018.png

技術實現(xiàn)
文中舉了一個例子,用myCobot 280M5用木塊構建Microsoft的logo。

Step 1:

首先定義一組控制機械臂的API或函數(shù)庫,這里用到的是pymycobot,專門控制myCobot的一個功能庫。直接使用就可以了,需要稍加注釋一下API的功能。

pymycobot:https://github.com/elephantrobotics/pymycobot
里面有詳細的介紹API


Step 2:

緊接著我們得給ChatGPT編寫一個文本提示,描述任務目標,明確pymycobot庫里面的功能哪些可以用 ,以及怎么使用。

User:
Imagine we are working with a manipulator robot. This is a robotic arm with 6 degrees of freedom that has a suction pump attached to its end effector. I would like you to assist me in sending commands to this robot given a scene and a task.

At any point, you have access to the following functions:

grab(): Turn on the suction pump to grab an object
release(): Turns off the suction pump to release an object
get_position(object): Given a string of an object name, returns the coordinates and orientation of the vacuum pump to touch the top of the object [X, Y, Z, Yaw, Pitch, Roll]
move_to(position): It moves the suction pump to a given position [X, Y, Z, Yaw, Pitch, Roll].
You are allowed to create new functions using these, but you are not allowed to use any other hypothetical functions.

Keep the solutions simple and clear. The positions are given in mm and the angles in degrees. You can also ask clarification questions using the tag "Question - ". Here is an example scenario that illustrates how you can ask clarification questions.

Let's assume a scene contains two spheres.pick up the sphere.


Step 3:

通過不斷的溝通Chat,最終實現(xiàn)我們想要的效果,讓ChatGPT生成相對應的變成代碼

User:
Awesome! I want now to use the blocks to build the logo from Microsoft on top of the white pad. It consists of four colors forming a square, blue on the bottom left, yellow on the bottom right, red on the top left and green on the top right.

ChatGPT:
Sure! Here's the Python code to build the Microsoft logo on top of the white pad using the blocks:
# get the positions of the blocks and the white pad
white_pad_pos = get_position("white pad")
blue_pos = get_position("blue block")
yellow_pos = get_position("yellow block")
red_pos = get_position("red block")
green_pos = get_position("green block")
# pick up the blue block
pick_up_object("blue block")
# calculate the position to place the blue block
place_pos = [white_pad_pos[0]-20, white_pad_pos[1]-20, white_pad_pos[2]+40, 0, 0, 0]
# place the blue block on the white pad
place_object(place_pos)
# pick up the yellow block
pick_up_object("yellow block")
# calculate the position to place the yellow block
place_pos = [white_pad_pos[0]+20, white_pad_pos[1]-20, white_pad_pos[2]+40, 0, 0, 0]
# place the yellow block on the white pad
place_object(place_pos)
# pick up the red block
pick_up_object("red block")
# calculate the position to place the red block
place_pos = [white_pad_pos[0]-20, white_pad_pos[1]+20, white_pad_pos[2]+40, 0, 0, 0]
# place the red block on the white pad
place_object(place_pos)
# pick up the green block
pick_up_object("green block")
# calculate the position to place the green block
place_pos = [white_pad_pos[0]+20, white_pad_pos[1]+20, white_pad_pos[2]+40, 0, 0, 0]
# place the green block on the white pad
place_object(place_pos)

https://youtu.be/wLOChUtdqoA

案例2:人臉跟蹤技術在機械臂中的應用
背景介紹:


這個案例 備受大家喜歡,因為作者本身也是一名剛開始接觸機械臂的愛好者,想要做機械臂的人臉識別跟蹤 ,一共分為了上下兩篇,上篇講的是使用OpenCV算法提供的人臉識別以及講述了項目的框架,需要什么來實現(xiàn)。下篇介紹的是機械臂運動控制的算法。

技術實現(xiàn):全程使用的是以樹莓派為主板的mechArm 270 ,6自由度的機械臂 。
想要實現(xiàn)人臉識別功能以及機械臂跟蹤,那么機器視覺是少不了的,目前市面上最熱門的識別算法是OpenCV的算法,里面的技術相對比較成熟,可以直接使用。

wKgZomXv8puAftJ2AAA_Kmn8uh4799.png

人臉識別一般由兩個部分組成,人臉檢測和人臉識別,在人臉檢測中,主要任務是構造能夠區(qū)分包含人臉的實例和不包含人臉的實例的分類器。OpenCV 中提供了三個經過訓練的級聯(lián)分類器。顧名思義,級聯(lián)分類器逐步篩選不同的特征,以得出其所屬的分類。分類器的link:http ://face-rec.org/databases/

wKgZomXv_RSAG05SAAH4D5gwqqg409.png

調用分類器和opencv算法就可以獲取到視頻流對人臉進行檢測

import cv2
import matplotlib.pyplot as plt
import time
def video_info():
# Loading classifiers
   face_cascade =             cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# Input video stream
   cap = cv2.VideoCapture(0)
# To use a video file as input
#cap = cv2.VideoCapture('demo.mp4')
   while True:
       _, img = cap.read()
# Conversion to greyscale
       gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Detecting faces
       faces = face_cascade.detectMultiScale(gray, 1.1, 4)
# Drawing the outline
       for (x, y, w, h) in faces:
           cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
           center_x = (x+w-x)//2+x
           center_y = (y+h-y)//2+y
           cv2.circle(img,(center_x,center_y),10,(0,255,255),2)
# Display effects
       cv2.imshow('img', img)
       k = cv2.waitKey(30) & 0xff
       if k==27:
       break
       cap.release()
wKgaomXv8pyAIEovAAeUb6AuqRg655.png

設定機械臂末端來獲取視頻信息,就需要固定好位置,因為在這里涉及到一個機械臂的知識-手眼標定。手眼標定可以讓機械臂知道相機拍攝的物體相對于機械臂的位置,或者說,建立相機坐標系和機械臂坐標系之間的映射。

換句話也就是說 ,獲得相機的畫面下的 人臉的參數(shù),相對于機械臂的位置是怎樣的,這個是相當重要的為了能夠準確并且實時的撲捉到人臉相對應的坐標。

wKgZomXv8puAWojmAAFc1dxYyjM173.png

經過實踐之后,發(fā)現(xiàn)raspberry pi 4b的算力有所欠缺,如果用手眼標定來做的話看起來效果并不好,而且會有許多未知參數(shù)。所以作者決定使用相對位移來進行運動控制。這樣的話就需要設計一種采樣運動機制,保證在一個周期內完全獲取人臉的偏移量并且實現(xiàn)跟蹤,我們一起來看看效果如何。

https://youtu.be/dNdqrkggr9c

如果你感興趣可以了解更多 :Facial Recognition and Tracking Project with mechArm - Hackster.io

案例3:Operate myCobot with the spatial recognition of D455
背景介紹:


為了滿足更多的場景需求,現(xiàn)在深度相機被使用的十分的廣泛,就例如下面這個用戶做的案例。使用到的是realsense D455,這是一款微軟的深度相機,能夠獲取某個物體的多個參數(shù)。該項目是用深度相機結合機械臂做一個空間上的物體跟蹤。

wKgZomXv8pyAQDqYAAPQ2GUQuDE837.png

技術實現(xiàn):

wKgZomXv8p2AMOHlACJENwsUgEY315.png


可以看到場景里面,在左上角有一個攝像頭,獲取紅色物體的坐標,然后返回給機械臂,機械臂再去進行移動。

這個案例跟上一個案例有點相似,也不大一樣,相似的點在于都是機械臂視覺的應用,不太相似的點在于這個案例用的是深度相機,通過相機內置的算法能夠獲取到木塊的參數(shù),可以比較方便的進行手眼標定。里面也介紹了realsense的運動模塊的信息,里面的設置可以為0.01m,甚至設置到0.001m左右,可以獲取到十分精細的參數(shù)。

wKgZomXv8pyAeR1sAAJMoD0tFtc832.png

最后整個項目是在ROS當中完成的,將Realsense d455和 myCobot鏈接到一起。

wKgaomXv8pyAYvm-AALQ1qGyK6c314.png

這篇文章能夠很好的幫助了購買了機械臂或深度相機但不知道如何使用它的人。

案例4:

Automating Fruit Harvesting and Sorting
背景介紹:這一篇技術案例就比較偏向一個模擬場景的建設了,它里面有多臺mechArm 270協(xié)同合作,一臺傳送帶,多個攝像模組。主要是模擬一個果實的采摘然后進行分類。

wKgZomXv8pyASpTYAAZgLChqp2E270.png


技術亮點:

wKgZomXv8p2AfRa5ACDENptUSlE052.png


可以看到整個場景的流程,這個案例主要關注幾個技術點:

1.機器視覺的識別,目標果實坐標的獲取。
2.機械臂之間協(xié)同關系,和傳送帶邏輯的關系。
從案例1到案例4只要是要做一些場景應用的話都會要用到機器視覺,就少不了攝像頭,要想做一個好項目機器視覺的知識是必不可少的。讓我們來一起看看如何處理這里的視覺。

案例當中是用到的是深度攝像頭,相比2D攝像頭就少去了一些標志物,我們可以依賴深度相機的參數(shù)來直接做手眼標定,這里我們的“眼”是固定的,稱為眼在手外,目標找到一個變換矩陣,該矩陣被描述了攝像頭坐標系相對于機器人基座坐標系的位置和方向。

wKgaomXv8puAUzTNAAFHuK-WKp4663.png

識別物體做的是OpenCV的顏色識別,通過顏色來區(qū)別果實的情況。

Detection and identification class
"""
HSV_DIST = {
"redA": (np.array([0, 120, 50]), np.array([3, 255, 255])),
"redB": (np.array([118, 120, 50]), np.array([179, 255, 255])),
"orange": (np.array([8, 150, 150]), np.array([20, 255, 255])),
"yellow": (np.array([28, 100, 150]), np.array([35, 255, 255])), 
}


先定義好可能會出現(xiàn)的結果,就可以精準的識別,得到目標果實的坐標了。

wKgaomXv8puAVk2UAAFWyzAp4Gg075.png

機械臂抓取果實的路徑主要考慮幾個方面:

初始姿勢
抓握的姿勢
避障的姿勢
基本上考慮這幾個方面,達到不會影響抓取目標,碰到場景中其他的物件。

接下來較為關鍵的是處理,兩臺機械臂和傳送帶之間的邏輯關系,分配好角色哪個機械臂先動,哪個機械臂動,保證整個流程下來是順暢的,不會導致程序的死鎖。

wKgaomXv8puASxb8AABh1Ul4Jlo443.png

這個場景應用,涉及到了多方面的功能,可以幫助初學者怎么將機械臂運用起來,怎么搭建一個場景。也能幫助掌握機械臂運動控制,視覺識別,物體抓取技術等等相關知識,如果你有興趣了解的話點擊查看。

總結


在2023年,機械臂技術的飛速發(fā)展引起了廣泛關注,幾個備受矚目的案例展示了其在創(chuàng)新與應用方面的巨大可能性。我們歡迎所有有興趣探索這一領域、愿意分享新奇想法的朋友與我們交流。讓我們共同見證并體驗科技如何塑造未來世界的奇跡!

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 人工智能
    +關注

    關注

    1789

    文章

    46667

    瀏覽量

    237102
  • 開源
    +關注

    關注

    3

    文章

    3218

    瀏覽量

    42329
  • 機械臂
    +關注

    關注

    12

    文章

    506

    瀏覽量

    24459
收藏 人收藏

    評論

    相關推薦

    基于LabVIEW和SolidWorks改進機械的設計流程

    NI 9512模塊開發(fā)實際裝配系統(tǒng)?! olidWorks裝配圖CARMA機械  Square One是關注滿足更多用戶技術需求的機器人和自動化公司。我們利用多種技術,通過提供高精
    發(fā)表于 02-12 15:56

    舵機怎么調機械

    舵機怎么調機械
    發(fā)表于 07-30 09:01

    機械問題

    機械仿真,用什么軟件效果比較好?
    發(fā)表于 01-18 16:50

    【NanoPC-T4試用申請】NanoPC-T4智能機械

    等有過深入的學習和探索。想借助發(fā)燒友論壇和NanoPC-T4完善NanoPC-T4智能機械項目的開源設計。項目計劃①根據文檔,對NanoPC-T4快速入門②通過學習NanoPC-T4的軟件和系統(tǒng)
    發(fā)表于 09-12 16:46

    關于機械的設計問題

    我應該去哪里采購這種機械,我想到的地方是淘寶,不知道還有沒有其他靠譜的地方? 2. 什么樣的機械才能滿足需求,需要符合哪些參數(shù)? 3. 我應該從哪里獲取涉及該需求的知識點?書籍?
    發(fā)表于 12-16 15:32

    機械仿真控制

    機械仿真控制
    發(fā)表于 09-29 19:23

    工業(yè)機械的相關資料推薦

    本章小結第三章機械控制系統(tǒng)介紹3.1 基于Arduino控制伺服電機系統(tǒng)3.1.1 機械結構3.1.2 系統(tǒng)供電3.1.3 機械
    發(fā)表于 11-29 07:19

    機械的控制學習

    機械的控制-------------控制器1.位置控制機器人最傳統(tǒng),最常用的控制方式就是位置控制,它能以0誤差來達到指定位置或以0誤差跟隨指定軌跡。普通的位置控制,是控制機器人末端到指定的地點(讓
    發(fā)表于 02-23 07:49

    探索輕量型機械的新機遇

    慧靈科技合伙人胡月在會議上做了《探索輕量型機械的新機遇》為主題的演講。
    的頭像 發(fā)表于 06-18 09:29 ?4894次閱讀

    工業(yè)機械

    工藝流程2.3 本章小結第三章 機械控制系統(tǒng)介紹3.1 基于Arduino控制伺服電機系統(tǒng)3.1.1 機械結構3.1.2 系統(tǒng)供電3.1.3
    發(fā)表于 11-19 12:21 ?72次下載
    工業(yè)<b class='flag-5'>機械</b><b class='flag-5'>臂</b>

    什么是小機械?問天實驗艙小機械在軌測試流程

    機械進行解鎖后,小機械在軌測試逐步展開??蒲腥藛T首先對機械的各項產品進行檢查,其檢查內容
    發(fā)表于 08-29 15:39 ?782次閱讀

    如何選擇一款六軸機械作為入門(教育或者研究)機械

    未來的趨勢絕對是機器人代替人工作業(yè),機械首當其沖。如今機械工業(yè)化已經比較成熟,許多人都開始對機械
    的頭像 發(fā)表于 12-09 17:41 ?1878次閱讀
    如何選擇一款六軸<b class='flag-5'>機械</b><b class='flag-5'>臂</b>作為入門(教育或者研究)<b class='flag-5'>機械</b><b class='flag-5'>臂</b>?

    控制機械開源

    電子發(fā)燒友網站提供《人控制機械開源.zip》資料免費下載
    發(fā)表于 01-31 14:43 ?4次下載
    人<b class='flag-5'>臂</b>控制<b class='flag-5'>機械</b><b class='flag-5'>臂</b>開源

    剛性機械的動力學建模

    剛性機械 機械建模是機械控制的基礎,控制效果的好壞很大程度上決定于所建立的動力學模型的準確
    的頭像 發(fā)表于 11-17 17:03 ?775次閱讀

    如何解決柔性機械建模過程問題

    柔性機械 剛性機械建模方法已經可以有效地求解出機械各部分之間的耦合情況,但是對于柔性
    的頭像 發(fā)表于 11-17 17:12 ?825次閱讀