<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

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

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

引言


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

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

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


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

https://youtu.be/NYd0QcZcS6Q

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

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

wKgaomXv8pyAJnExAAIu1Dx7hTk682.png

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

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

wKgaomXv8puABMTBAAH1ApCIGmY018.png

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

Step 1:

首先定義一組控制機械臂的API或函數庫,這里用到的是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,最終實現我們想要的效果,讓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算法提供的人臉識別以及講述了項目的框架,需要什么來實現。下篇介紹的是機械臂運動控制的算法。

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

wKgZomXv8puAftJ2AAA_Kmn8uh4799.png

人臉識別一般由兩個部分組成,人臉檢測和人臉識別,在人臉檢測中,主要任務是構造能夠區分包含人臉的實例和不包含人臉的實例的分類器。OpenCV 中提供了三個經過訓練的級聯分類器。顧名思義,級聯分類器逐步篩選不同的特征,以得出其所屬的分類。分類器的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

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

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

wKgZomXv8puAWojmAAFc1dxYyjM173.png

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

https://youtu.be/dNdqrkggr9c

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

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


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

wKgZomXv8pyAQDqYAAPQ2GUQuDE837.png

技術實現:

wKgZomXv8p2AMOHlACJENwsUgEY315.png


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

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

wKgZomXv8pyAeR1sAAJMoD0tFtc832.png

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

wKgaomXv8pyAYvm-AALQ1qGyK6c314.png

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

案例4:

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

wKgZomXv8pyASpTYAAZgLChqp2E270.png


技術亮點:

wKgZomXv8p2AfRa5ACDENptUSlE052.png


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

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

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

wKgaomXv8puAUzTNAAFHuK-WKp4663.png

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

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])), 
}


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

wKgaomXv8puAVk2UAAFWyzAp4Gg075.png

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

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

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

wKgaomXv8puASxb8AABh1Ul4Jlo443.png

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

總結


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

審核編輯:湯梓紅

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

    關注

    1781

    文章

    44781

    瀏覽量

    231941
  • 開源
    +關注

    關注

    3

    文章

    3030

    瀏覽量

    41814
  • 機械臂
    +關注

    關注

    11

    文章

    481

    瀏覽量

    24008
收藏 人收藏

    評論

    相關推薦

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

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

    【FireBLE申請】基于leapmotion的智能機械

    申請理由:申請了個基于leapmotion智能機械的創新項目,現在申請到了國家的補助,希望用藍牙來完成傳輸部分,減少開發成本,完善開發穩定項目描述:體感的傳感器基于leapmotion的攝像頭和紅外傳感器,用藍牙來傳輸數據到機械
    發表于 08-08 12:12

    舵機怎么調機械

    舵機怎么調機械
    發表于 07-30 09:01

    #開箱體驗#開源機械開箱

    本帖最后由 雨落長安 于 2017-7-17 16:42 編輯 開源機械開箱體驗一直以來,我對機械都比較感興趣,時常在網絡上搜尋有個機械
    發表于 07-17 16:42

    求精通機械控制理論的大神

    有些機械控制的問題請教大神
    發表于 01-08 17:18

    機械問題

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

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

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

    關于機械的設計問題

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

    機械仿真控制

    機械仿真控制
    發表于 09-29 19:23

    永磁同步電機與機械的聯合simulink仿真

    前言:有個把月沒更新博客了,一是有點忙,二來也不是特別想寫博客。上個月主要是在搭建永磁同步電機和機械聯合仿真的模型,最后仿真效果還算良好,應該算完成了。永磁同步電機與機械的聯合si
    發表于 08-30 06:31

    對新改進的機械進行整體調試

    ? 00機械的改動今天(2020-09-28 09:14:46)對新改進的機械進行整體調試。機械
    發表于 09-03 09:24

    工業機械的相關資料推薦

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

    基于單片機的三軸機械控制怎么實現

    文章目錄三軸機械的控制原理三軸機械接線三軸機械控制垂直坐標系控制立體空間坐標系控制三軸
    發表于 12-13 07:14

    機械的相關資料分享

    正運動學反過來,對于我們的機械而言,也就是已知末端執行器的位置和朝向,求每個關節的角度。我們的機械的三維運動是比較復雜的,這里為了簡化模型更加便于大家的理解,我們對模型進行精簡,先
    發表于 01-20 06:46

    機械的控制學習

    機械的控制-------------控制器1.位置控制機器人最傳統,最常用的控制方式就是位置控制,它能以0誤差來達到指定位置或以0誤差跟隨指定軌跡。普通的位置控制,是控制機器人末端到指定的地點(讓
    發表于 02-23 07:49
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>