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

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

3天內(nèi)不再提示

myCobot Pro600六軸機械臂與3D深度視覺:物體精確識別抓取堆疊

大象機器人科技 ? 來源:大象機器人科技 ? 作者:大象機器人科技 ? 2023-09-12 10:51 ? 次閱讀

myCobot 600技術(shù)案例

Introduction

隨著時代的進步,各種精密的機械臂,人形機器人不斷的問世。我們即將迎來到處都是機器人的高科技時代。為了跟上時代的腳步,我最近入手了一臺myCobot pro 600機械臂,我主要是想要用它來學習機械臂相關(guān)得控制以及機器視覺的項目,給以后的實踐中在本文中,我將記錄使用myCobot pro 600結(jié)合深度相機來實現(xiàn)物體得跟蹤以及抓取。

接下來我會介紹我使用到的設(shè)備

Equipment

myCobot pro 600

myCobot pro 600是一款六個自由度的機械臂,它的工作半徑最大達到600mm,它末端最大負載達到2kg,搭載的電機是諧波減速器。它還是一款以樹莓派4B為核心控制主板的嵌入式機械臂搭配ubuntu20.0的系統(tǒng)。我選擇他的原因有幾個:

1、它不需要額外的電腦進行控制,可以直接使用樹莓派進行控制

2、它的工作半徑和末端負載能力剛好適合我的場景

3、大象機器人為它設(shè)計了一款可視化的控制軟件robotflow,可以進行一些拖拽式的編程

1.png

SPECIFICATIONS

Degree of Freedom6
Payload2000g
Weight8800g
Working Radius600mm
Positioning Accuracy±0.5mm
Working Temperature-5℃~45℃
Working Lifespan2000h
Power InputDC 48V
JOINT ROTATION RANGE
Joint1-180°~+180°
Joint2-270°~+90°
Joint3-150°~+150°
Joint4-260°~+80°
Joint5-168°~+168°
Joint6-174°~+174°
Joint Maximum Speed115°/s

FS820-E1-Depth camera

深度相機可以捕捉深度信息,可以獲得物體的三維坐標,距離,尺寸和體積。深度相機使用多種算法技術(shù)來測量物體的深度,如結(jié)構(gòu)光、時間飛行和立體視覺等。在機器視覺應用中,深度相機可以用于點云分割、物體識別和3D重建等任務(wù)。

2.png

ModelFS820-E1
Working Distance0.3m-1.4m
FOV(H/V)66°/44°
Accuracy(Z)0.14mm@400mm;1.53mm@700mm
Accuracy(XY)4.88mm@700mm
Depth Resolution1280*800
RGB Resolution1920*1080
Power InterfaceDC 12V/24V
Trigger SignalHR10A-7P-6S
Data InterfaceGigabit Ethernet
Power Consumption2.8W ~ 3.9W
TemperatureStorage:-10℃~55℃; Operation:0℃~45℃
Ingress ProtectionIP41
Size95mm45mm43mm
Weight228g

Project

我使用機械臂有一段時間了,大部分的時間都是用來去執(zhí)行一些路徑,重復的做一些動作。如果只是這樣的話,機械臂在很多方面都是不能夠勝任人們的工作的。我們工作的時候手和眼睛是需要進行配合,當然機械臂我們要給他配置一個“眼睛”,就是深度相機。

我今天要記錄的是用機械臂+相機來是想物體的抓取,不只是一個平面的抓取,而是一個能夠根據(jù)獲取的深度信息進行判斷高度的抓取。

接下來我先簡要介紹一下項目的結(jié)構(gòu)。

3.png

Clear Task:首先我們要明確我的目標,做一個深度視覺的機械臂抓取木塊的任務(wù)

Hardware preparation:機械臂使用的是mycobot pro 600,深度相機用的是FS820-E1

Hand-eye calibration:進行機械臂和相機之間的手眼標定,以建立它們之間的坐標系轉(zhuǎn)換關(guān)系。通過手眼標定,可以確定機械臂末端執(zhí)行器的位置和姿態(tài)與相機坐標系之間的轉(zhuǎn)換關(guān)系,從而實現(xiàn)精確的視覺引導和抓取。

Object detection and recognition:確定被測物體為木塊,訓練算法識別木塊,通過大量的數(shù)據(jù)讓機器能夠精準的識別出被測物體

Robotic arm path planning:識別到被測物體之后返回一個物體的三維坐標,給到機械臂執(zhí)行抓取,要規(guī)劃機械臂的運動軌跡達到抓取的點位

Test:完成上邊測試之后,需要進行測試,不斷的進行調(diào)整。

Execute:測試完成后,去執(zhí)行任務(wù)

介紹完項目的結(jié)構(gòu),讓我們開始實現(xiàn)Hand-eye calibration。

Hand-eye calibration

通常情況下,對于機械臂執(zhí)行視覺類的抓取任務(wù),手眼標定是必需的。手眼標定是一種將機械臂的坐標系與深度相機的坐標系進行關(guān)聯(lián)的過程。通過手眼標定,可以確定機械臂末端執(zhí)行器的位置和姿態(tài)與相機坐標系之間的轉(zhuǎn)換關(guān)系,從而實現(xiàn)精確的視覺引導和抓取。

第一步

需要準備一個標定板:選擇黑白相間的方格為標定板,棋盤格的幾何結(jié)構(gòu)非常規(guī)則,方格之間的邊緣和角點位置可以被精確地計算和模型化。這使得標定算法可以準確地估計相機與棋盤格之間的幾何關(guān)系。

4.png

第二步

固定深度相機和機械臂

我要做的是眼在手外,就是eye to hand的模式,相機的位置不會隨著機械臂的改變而改變。

5.png

第三步

匹配特偵點

將標定板在相機視野范圍內(nèi)進行多次的旋轉(zhuǎn)移動,捕獲這些圖片以提供豐富的圖片信息,對每個標定板圖像,使用角點檢測算法來提取標定板上的取方格交叉點的坐標特征點。

6.png

7.png

用的是相機自帶的RVS(robot vision suite)軟件,里面提前編寫好捕獲圖片,提取特征點,匹配特偵點的方法。

第四步

計算標定坐標值

得到了20張不同角度,不同位置的特偵點的數(shù)據(jù),接下來使用RVS提供的算法在程序中進行計算得出eye to hand標定的值。記錄下手眼標定的結(jié)果等到后面進行機械臂坐標系和相機坐標系轉(zhuǎn)化的關(guān)鍵。

8.png

9.png

到這里手眼標定就結(jié)束了,接下來我們來訓練機器識別被測物體。

Object detection and recognition

首先得采集我們的被測物體,木塊。我們用一個開源軟件labelme,LabelMe是一個流行的開源圖像標注工具,用于創(chuàng)建和編輯圖像標注數(shù)據(jù)集。旨在簡化圖像標注的過程,并為機器學習計算機視覺任務(wù)提供標注數(shù)據(jù)。

采集被測物圖片

像前邊標定一樣,采集的圖片越多數(shù)據(jù)越精準。將他保存在指定的路徑中。

10.png

安裝labelme

python中安裝依賴庫,以便后續(xù)的使用

pip install PyQt5
pip install labelme

標注過程

打開labelme,找到我們保存采集圖片的路徑,然后點擊Create Polygons,為木塊繪制紅色的邊框,完成標記后給標記結(jié)果明明“wooden block”,一直重復這個步驟為木塊繪制邊框,直至標記完所有采集的圖片。

11.png

這是人為標記的木塊,要實現(xiàn)機器識別就得讓機器學會檢測該標記的物體。接下來要訓練AI 模型,RVS軟件中有這個算法,我們只需要將標記好的圖片提交到AI訓練功能,最后會生成一個Train output文件夾,在這里可以獲取標記的權(quán)重文件。

AI 推理

AI推理它使得訓練好的模型能夠應用到實際場景中,使用先前經(jīng)過訓練的參數(shù)和權(quán)重來處理新的輸入數(shù)據(jù),并生成相應的輸出結(jié)果。

1)使用 FilterBoxList 算子(重命名為"點云高度排序")來篩選木塊并按照木塊列表的 Z 軸坐標值進行排序。這個算子的屬性值需要按照下面的要求進行調(diào)整。

2)使用 FindElement 算子來獲取適合抓取的平面。在算子屬性中選擇類型為"Plane",并通過調(diào)整 distance_threshold 屬性來選擇合適的平面??梢源蜷_點云可視化屬性來查看所選的平面。

3)使用 MinimumBoundingBox 算子(重命名為"獲得外包框")來獲取平面的中心點坐標。在算子屬性中選擇類型為"ApproxMVBB",并給該算子提供一個 ref_pose,這個 ref_pose 連接到先前提到的"TowardsDownPose"算子,它表示繞著 X 軸旋轉(zhuǎn) 180°,使 Z 軸朝下,以便機器人抓取??梢源蜷_"GetBoxCube"屬性面板中的 box 和 box_pose 可視化屬性來顯示計算出的平面中心點。
12.png

總結(jié)起來,這個操作的目標是從點云中篩選出木塊并按照高度進行排序,然后找到適合抓取的平面,并計算該平面的中心點坐標。這個過程可能是為了進一步在機器人操作中使用這些信息,例如進行抓取任務(wù)或路徑規(guī)劃。
13.png

被測物體的識別和檢測就完成了。

再結(jié)合手眼標定,就能識別出木塊的時候會得到木塊的坐標信息。這樣就獲取到了木塊相對于機械臂的坐標。

14.png

下圖是RVS中的仿真模擬3D環(huán)境。最左邊帶坐標的是深度相機的坐標系的標志。

15.png

Robotic arm path planning

在上一步操作中,我們得到了resultPose,也就是木塊相對于機械臂的坐標,有了坐標就可以對機械臂進行控制,將機械臂的末端運行到被測物體坐標的上方。

下面是部分實現(xiàn)路徑規(guī)劃的代碼

import _thread
import socket
import json
import time
import sys
import math
import copy
import numpy as np
from RoboFlowSocket import RoboFlowSocket

#旋轉(zhuǎn)矩陣和歐拉角之間的轉(zhuǎn)換
defCvtRotationMatrixToEulerAngle(pdtRotationMatrix):
    pdtEulerAngle = np.zeros(3)

    pdtEulerAngle[2]= np.arctan2(pdtRotationMatrix[1,0], pdtRotationMatrix[0,0])

    fCosRoll = np.cos(pdtEulerAngle[2])
    fSinRoll = np.sin(pdtEulerAngle[2])

    pdtEulerAngle[1]= np.arctan2(-pdtRotationMatrix[2,0],(fCosRoll * pdtRotationMatrix[0,0])+(fSinRoll * pdtRotationMatrix[1,0]))
    pdtEulerAngle[0]= np.arctan2((fSinRoll * pdtRotationMatrix[0,2])-(fCosRoll * pdtRotationMatrix[1,2]),(-fSinRoll * pdtRotationMatrix[0,1])+(fCosRoll * pdtRotationMatrix[1,1]))

return pdtEulerAngle

defCvtEulerAngleToRotationMatrix(ptrEulerAngle):
    ptrSinAngle = np.sin(ptrEulerAngle)
    ptrCosAngle = np.cos(ptrEulerAngle)

    ptrRotationMatrix = np.zeros((3,3))
    ptrRotationMatrix[0,0]= ptrCosAngle[2]* ptrCosAngle[1]
    ptrRotationMatrix[0,1]= ptrCosAngle[2]* ptrSinAngle[1]* ptrSinAngle[0]- ptrSinAngle[2]* ptrCosAngle[0]
    ptrRotationMatrix[0,2]= ptrCosAngle[2]* ptrSinAngle[1]* ptrCosAngle[0]+ ptrSinAngle[2]* ptrSinAngle[0]
    ptrRotationMatrix[1,0]= ptrSinAngle[2]* ptrCosAngle[1]
    ptrRotationMatrix[1,1]= ptrSinAngle[2]* ptrSinAngle[1]* ptrSinAngle[0]+ ptrCosAngle[2]* ptrCosAngle[0]
    ptrRotationMatrix[1,2]= ptrSinAngle[2]* ptrSinAngle[1]* ptrCosAngle[0]- ptrCosAngle[2]* ptrSinAngle[0]
    ptrRotationMatrix[2,0]=-ptrSinAngle[1]
    ptrRotationMatrix[2,1]= ptrCosAngle[1]* ptrSinAngle[0]
    ptrRotationMatrix[2,2]= ptrCosAngle[1]* ptrCosAngle[0]

return ptrRotationMatrix

# 抓取位置的路徑規(guī)劃
defcompute_end_effector_pose(current_pose, tool_pose):
# 從位姿矩陣中提取旋轉(zhuǎn)矩陣和平移向量
    current_rotation = current_pose[:3,:3]
    current_translation = current_pose[:3,3]
    tool_rotation = tool_pose[:3,:3]
    tool_translation = tool_pose[:3,3]

# 計算工具坐標系在基坐標系下的位姿
    new_rotation = np.dot(current_rotation, tool_rotation)
    new_translation = np.dot(current_rotation, tool_translation)+ current_translation

# 組合旋轉(zhuǎn)矩陣和平移向量得到新的位姿矩陣
    new_pose = np.eye(4)
    new_pose[:3,:3]= new_rotation
    new_pose[:3,3]= new_translation

return new_pose

我們來一起看看效果如何。

Honeycam 2023-09-11 19-11-41.gif

我預留了一段距離,機械臂末端到木塊的距離。這一段距離是給機械安裝上夾爪的距離。我在桌面上放了幾張白紙,那是因為我使用的被測物體跟我放置的桌面的顏色相似度較高,為了能夠快速識別被測物體。

遇到的問題

1 最一開始在考慮機械臂跟深度相機如何建立聯(lián)系,兩個處理器之間建立聯(lián)系就有點復雜,最后用了python的socket的庫來實現(xiàn)上位機對myCobot pro 600的控制。

2 在測試的時候會有個別的坐標出現(xiàn)了偏差,后來檢測原因是因為,在做完手眼標定之后,機械臂和深度相機的位置一定是要固定住的,不能再標定完之后再去做改變。

3 被測物的識別的快慢的問題。在圖片中我們可以看到桌面上放了幾張白紙,那是因為我們的被測物體跟桌面的背景色的紋理有些相似,所以不能快速的識別出來。(是為了提高識別率從才放的白紙)機器終究還是機器,抵不過人類的眼睛。

總結(jié)

目前的項目還不夠完善,后續(xù)我考慮加上末端的執(zhí)行器將木塊抓起來。但是這個也不能真正的運用到實際場景當中使用,是不需要我們來抓木塊。換個角度,如果說他是一堆零件堆在那,用機械臂將一大堆的零件進行分類,給人們提供一個幫助那就很有用了。因為在一堆雜亂的零件中找零件是一件非常痛苦的事情,如果有遇到過這個問題的就能明白我在說什么了。

如果你有什么想法,或者有趣的建議歡迎在下方評論留言。你要是覺得喜歡這篇文章給予我一個點贊或者評論吧!

審核編輯 黃宇

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

    關(guān)注

    211

    文章

    28475

    瀏覽量

    207395
  • 機械臂
    +關(guān)注

    關(guān)注

    12

    文章

    515

    瀏覽量

    24619
收藏 人收藏

    評論

    相關(guān)推薦

    國產(chǎn)芯RK3568教學實驗箱操作案例:顏色識別抓取積木

    一、實驗目的 本節(jié)視頻的目的是了解機械識別顏色抓取積木的基本原理和流程,并掌握機械
    發(fā)表于 12-05 14:30

    3D堆疊像素探測器芯片技術(shù)詳解(72頁PPT)

    3D堆疊像素探測器芯片技術(shù)詳解
    的頭像 發(fā)表于 11-01 11:08 ?2811次閱讀
    <b class='flag-5'>3D</b><b class='flag-5'>堆疊</b>像素探測器芯片技術(shù)詳解(72頁PPT)

    探索3D視覺技術(shù)在活塞桿自動化抓取中的應用

    隨著工業(yè)4.0時代的到來,智能制造成為工業(yè)發(fā)展的重要趨勢。作為智能制造的關(guān)鍵技術(shù)之一,3D視覺技術(shù)在活塞桿抓取領(lǐng)域的應用前景十分廣闊。
    的頭像 發(fā)表于 09-07 15:38 ?283次閱讀

    開源協(xié)作機器人myCobot 320結(jié)合人臉表情識別情緒!

    與眾不同的功能。通過結(jié)合人臉表情識別技術(shù),我們可以讓機械感知到我們的情緒變化。當我們開心時,機械可以跟著一起開心地舞動;當我們傷心難過時
    的頭像 發(fā)表于 08-12 15:21 ?942次閱讀
    開源<b class='flag-5'>六</b><b class='flag-5'>軸</b>協(xié)作機器人<b class='flag-5'>myCobot</b> 320結(jié)合人臉表情<b class='flag-5'>識別</b>情緒!

    智能目標顏色識別抓取丨國產(chǎn)Cortex-A55人工智能實驗箱機械案例分享

    智能目標顏色識別抓取丨國產(chǎn)Cortex-A55人工智能實驗箱機械案例分享
    的頭像 發(fā)表于 08-10 08:32 ?363次閱讀
    智能目標顏色<b class='flag-5'>識別</b><b class='flag-5'>抓取</b>丨國產(chǎn)Cortex-A55人工智能實驗箱<b class='flag-5'>機械</b><b class='flag-5'>臂</b>案例分享

    3D視覺技術(shù)廣闊的應用前景

    隨著工業(yè)自動化領(lǐng)域的迅猛進步,對制造過程中抓取作業(yè)的精度與效率提出了更為嚴苛的要求。作為機械構(gòu)造中的核心組件,活塞桿的精準抓取成為了保障產(chǎn)品質(zhì)量、提升生產(chǎn)效率的關(guān)鍵環(huán)節(jié)。在此背景下,3D
    的頭像 發(fā)表于 07-29 15:56 ?355次閱讀
    <b class='flag-5'>3D</b><b class='flag-5'>視覺</b>技術(shù)廣闊的應用前景

    蘇州吳中區(qū)多色PCB板元器件3D視覺檢測技術(shù)

    3D視覺檢測相較于2D視覺檢測,有其獨特的優(yōu)勢,不受產(chǎn)品表面對比度影響,精確檢出產(chǎn)品形狀,可以測出高度(厚度)、體積、平整度等。在實際應用中
    的頭像 發(fā)表于 06-14 15:02 ?425次閱讀
    蘇州吳中區(qū)多色PCB板元器件<b class='flag-5'>3D</b><b class='flag-5'>視覺</b>檢測技術(shù)

    基于維力傳感器的機械自動裝配應用

    維力傳感器是一種特殊的力覺傳感器,可以測量物體在笛卡爾坐標系下三個軸向的力和力矩,其內(nèi)部采用高度敏感的材料和精密機械構(gòu)造,可以為機械提供
    的頭像 發(fā)表于 06-06 13:49 ?796次閱讀
    基于<b class='flag-5'>六</b>維力傳感器的<b class='flag-5'>機械</b><b class='flag-5'>臂</b>自動裝配應用

    3D視覺技術(shù)無序抓取引導活塞桿

    隨著工業(yè)4.0時代的到來,智能制造成為工業(yè)發(fā)展的重要趨勢。作為智能制造的關(guān)鍵技術(shù)之一,3D視覺技術(shù)在活塞桿抓取領(lǐng)域的應用前景十分廣闊。
    的頭像 發(fā)表于 05-13 13:40 ?295次閱讀
    <b class='flag-5'>3D</b><b class='flag-5'>視覺</b>技術(shù)無序<b class='flag-5'>抓取</b>引導活塞桿

    機器人3D視覺引導系統(tǒng)框架介紹

    通過自主開發(fā)的3D掃描儀可獲準確并且快速地獲取場景的點云圖像,通過3D識別算法,可實現(xiàn)在對點云圖中的多種目標物體進行識別和位姿估計。
    發(fā)表于 04-29 09:31 ?345次閱讀
    機器人<b class='flag-5'>3D</b><b class='flag-5'>視覺</b>引導系統(tǒng)框架介紹

    大象機器人開源協(xié)作機械myCobot 630 全面升級!

    1. 開篇概述 在快速發(fā)展的機器人技術(shù)領(lǐng)域中,Elephant Robotics的myCobot 600已經(jīng)證明了其在教育、科研和輕工業(yè)領(lǐng)域的顯著適用性。作為一款具備自由度的機械
    的頭像 發(fā)表于 04-28 15:19 ?1011次閱讀
    大象機器人開源協(xié)作<b class='flag-5'>機械</b><b class='flag-5'>臂</b><b class='flag-5'>myCobot</b> 630 全面升級!

    奧比中光攜多款3D相機深度參與國內(nèi)3D視覺最高規(guī)格會議

    4月19日-21日,國內(nèi)3D視覺最高規(guī)格會議China 3DV 2024大會在深圳舉行。奧比中光作為大會鉑金贊助商,攜多款不同技術(shù)路線的3D相機深度
    的頭像 發(fā)表于 04-24 09:26 ?458次閱讀
    奧比中光攜多款<b class='flag-5'>3D</b>相機<b class='flag-5'>深度</b>參與國內(nèi)<b class='flag-5'>3D</b><b class='flag-5'>視覺</b>最高規(guī)格會議

    富唯智能案例|3D視覺引導機器人抓取鞋墊上下料

    隨著制造業(yè)對自動化、智能化需求的不斷提升,如何實現(xiàn)鞋墊上下料的精準、高效操作成為了企業(yè)亟待解決的問題。傳統(tǒng)的上下料方式往往依賴人工,存在效率低下、精度不足等問題。而富唯智能的3D視覺引導機器人抓取解決方案,則能夠有效解決這些問題
    的頭像 發(fā)表于 04-08 16:57 ?415次閱讀
    富唯智能案例|<b class='flag-5'>3D</b><b class='flag-5'>視覺</b>引導機器人<b class='flag-5'>抓取</b>鞋墊上下料

    嘈雜環(huán)境下評估機械動作識別性能的策略與方法

    本文探討了在嘈雜環(huán)境中利用機器學習技術(shù)進行機械動作識別的問題。通過使用視覺系統(tǒng)和深度學習模型,作者提出的方法在
    發(fā)表于 02-27 14:35 ?376次閱讀
    嘈雜環(huán)境下評估<b class='flag-5'>機械</b><b class='flag-5'>臂</b>動作<b class='flag-5'>識別</b>性能的策略與方法

    大象機器人協(xié)作機械myCobot 320 進行手勢識別!

    的靈感源自于我對創(chuàng)新技術(shù)的熱愛以及對改善人機互動方式的追求。我的目標是開發(fā)一個基于手勢的機械控制系統(tǒng),使非專業(yè)人士也能輕松操作。為此,我選擇了Google的MediaPipe庫進行手勢識別,并以
    的頭像 發(fā)表于 01-31 16:17 ?804次閱讀
    大象機器人<b class='flag-5'>六</b><b class='flag-5'>軸</b>協(xié)作<b class='flag-5'>機械</b><b class='flag-5'>臂</b><b class='flag-5'>myCobot</b> 320 進行手勢<b class='flag-5'>識別</b>!