《機(jī)械臂智能控制》 課件 項(xiàng)目5 機(jī)械臂智能控制實(shí)戰(zhàn)-積木識(shí)別與抓取_第1頁(yè)
《機(jī)械臂智能控制》 課件 項(xiàng)目5 機(jī)械臂智能控制實(shí)戰(zhàn)-積木識(shí)別與抓取_第2頁(yè)
《機(jī)械臂智能控制》 課件 項(xiàng)目5 機(jī)械臂智能控制實(shí)戰(zhàn)-積木識(shí)別與抓取_第3頁(yè)
《機(jī)械臂智能控制》 課件 項(xiàng)目5 機(jī)械臂智能控制實(shí)戰(zhàn)-積木識(shí)別與抓取_第4頁(yè)
《機(jī)械臂智能控制》 課件 項(xiàng)目5 機(jī)械臂智能控制實(shí)戰(zhàn)-積木識(shí)別與抓取_第5頁(yè)
已閱讀5頁(yè),還剩137頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

智能產(chǎn)品設(shè)計(jì)制作綜合實(shí)訓(xùn)

——機(jī)械臂視覺(jué)抓取系統(tǒng)合作QQ:243001978CONTENTS目錄積木識(shí)別與抓取撲克牌識(shí)別與抓取合作QQ:243001978Part1積木識(shí)別與抓取1.1靜態(tài)積木識(shí)別與定位抓取

OpenCV識(shí)別,定位吸取,定位抓?。?)1.2靜態(tài)積木識(shí)別與任意位置抓取

相機(jī)標(biāo)定,坐標(biāo)系變換,隨意位置抓取(8)實(shí)訓(xùn)安排Part2撲克牌識(shí)別與抓取2.1撲克牌識(shí)別(OpenCV)(4)2.2靜態(tài)撲克牌任意位置吸?。?)2.3撰寫(xiě)實(shí)訓(xùn)報(bào)告(4)任務(wù)5-1積木識(shí)別《智能機(jī)械臂控制》主講教師:吳蓬勃知識(shí)鏈接1:積木識(shí)別抓取的流程工作流程1.積木識(shí)別獲取積木中心像素坐標(biāo)2.坐標(biāo)變換像素坐標(biāo)->機(jī)械臂坐標(biāo)3.抓取機(jī)械臂運(yùn)動(dòng)控制知識(shí)鏈接2:圖像預(yù)處理OpenCV圖像噪聲是指存在于圖像數(shù)據(jù)中不必要的或多余的干擾信息,噪聲會(huì)讓圖像變得不清楚,妨礙人們對(duì)圖像進(jìn)行理解。(1)來(lái)源:噪聲可能來(lái)自于圖像獲取、傳輸、處理或存儲(chǔ)過(guò)程中的各種因素。(2)表現(xiàn)形式:噪聲在圖像中常表現(xiàn)為一些孤立的像素點(diǎn)或像素塊,它們與要研究的對(duì)象不相關(guān),以無(wú)用的信息形式出現(xiàn),擾亂圖像的可觀測(cè)信息。積木識(shí)別——預(yù)備知識(shí):圖像的噪聲知識(shí)鏈接2:圖像預(yù)處理OpenCV圖像噪聲種類:高斯噪聲、椒鹽噪聲、斑點(diǎn)噪聲、泊松噪聲等。積木識(shí)別——預(yù)備知識(shí):圖像的噪聲高斯噪聲椒鹽噪聲每個(gè)像素點(diǎn)的噪聲服從獨(dú)立同分布的高斯分布像素值突然變?yōu)樽畲蠡蜃钚≈抵R(shí)鏈接2:圖像預(yù)處理OpenCV圖像噪聲種類:高斯噪聲、椒鹽噪聲、斑點(diǎn)噪聲、泊松噪聲等。積木識(shí)別——預(yù)備知識(shí):圖像的噪聲高斯噪聲產(chǎn)生原因:圖像在拍攝時(shí)不夠明亮、亮度不夠均電路各元器件自身噪聲和相互影響;傳感器長(zhǎng)期工作溫度過(guò)高等。采用高斯濾波器進(jìn)行處理知識(shí)鏈接2:圖像預(yù)處理OpenCV圖像噪聲種類:高斯噪聲、椒鹽噪聲、斑點(diǎn)噪聲、泊松噪聲等。積木識(shí)別——預(yù)備知識(shí):圖像的噪聲椒鹽噪聲產(chǎn)生原因:一般低光照條件下,圖像的噪聲多為椒鹽噪聲而不是高斯噪聲,比如礦井下的圖像。椒鹽噪聲通常使用中值濾波器進(jìn)行處理。知識(shí)鏈接2:圖像預(yù)處理OpenCVS0:原圖S1:高斯模糊減少圖像噪聲、降低細(xì)節(jié)層次積木識(shí)別:知識(shí)鏈接3:標(biāo)準(zhǔn)的HSV空間視覺(jué)識(shí)別汽車(chē)剮蹭——掉漆知識(shí)鏈接3:標(biāo)準(zhǔn)的HSV空間視覺(jué)識(shí)別汽車(chē)油漆:紅?汽車(chē)油漆調(diào)色是個(gè)技術(shù)活知識(shí)鏈接3:標(biāo)準(zhǔn)的HSV空間視覺(jué)識(shí)別【HSV空間】H:色調(diào),色彩信息。角度度量:0~360°S:飽和度,顏色的深度:0%—100%V:色調(diào),色彩的明亮程度:0%—100%RGBHSVRGB顏色空間僅適合于顯示系統(tǒng),HSV空間則更適合于圖像處理知識(shí)鏈接3:OpenCV的HSV空間視覺(jué)識(shí)別H:色調(diào),色彩信息,0-180S:飽和度,顏色的深度,0-255V:色調(diào),色彩的明亮程度,0-255【轉(zhuǎn)換】:Ho=H/360*180;So=S/100*255Vo=V/100*255

黑灰白紅橙黃綠青藍(lán)紫hmin000015611263578100125hmax1801801801018025347799124155smin00043434343434343smax2554330255255255255255255255vmin04622146464646464646vmax46220255255255255255255255255典型顏色HSV范圍知識(shí)鏈接3:RGB->HSVOpenCVS2:HSV圖方便單一顏色的提取S1:高斯模糊減少圖像噪聲以及降低細(xì)節(jié)層次知識(shí)鏈接4:腐蝕去噪OpenCVS2:HSV圖方便單一顏色的提取S3:腐蝕去除噪聲點(diǎn)知識(shí)鏈接5:二值化與輪廓標(biāo)識(shí)OpenCVS4:去除背景部分將圖像轉(zhuǎn)化為二值化圖像S5:識(shí)別結(jié)果紅色積木輪廓添加黃框獲取積木坐標(biāo)S0:原圖S1:高斯模糊S2:RGB->HSVS3:腐蝕S4:二值化S5:輪廓標(biāo)識(shí)知識(shí)鏈接:積木識(shí)別流程O(píng)penCV知識(shí)鏈接6:旋轉(zhuǎn)角度OpenCVrect=cv2.minAreaRect(cnt)Rect=((x,y),(w,h),angle)①

rect[0]返回矩形的中心點(diǎn)像素坐標(biāo)(x,y)②

rect[1]返回矩形的寬和高(w,h)③

rect[2]返回矩形的旋轉(zhuǎn)角度α

。x1軸順時(shí)針旋轉(zhuǎn)最先重合的邊為寬度w;α為x1軸順時(shí)針旋轉(zhuǎn)到w的角度,α取值范圍為(0°,90°]旋轉(zhuǎn)角度α(OpenCV4.5版本)夾爪(與x1

平行)旋轉(zhuǎn)角度:可以使用寬、高的值來(lái)確定。知識(shí)鏈接6:旋轉(zhuǎn)角度OpenCVOpenCV4.5版本旋轉(zhuǎn)角度angle:0-180知識(shí)鏈接7:中心點(diǎn)坐標(biāo)OpenCV#獲取最小外接矩陣rect=cv2.minAreaRect(points)#獲取矩形四個(gè)頂點(diǎn)坐標(biāo),浮點(diǎn)型box=cv2.boxPoints(rect)OpenCV4.5版本注:四個(gè)點(diǎn)的順序,需根據(jù)坐標(biāo)值確定block_angle=77box=[

[331.72372226.27055][396.45773210.82268][426.19125335.42035][361.45724350.86823]]中心點(diǎn)坐標(biāo)任務(wù)實(shí)施:積木識(shí)別Step01:新建工程積木識(shí)別(1)在磁盤(pán)根目錄下新建文件夾Robot(2)打開(kāi)Pycharm,新建工程Step01:新建工程積木識(shí)別(3)輸入Robot文件夾路徑、勾選編譯器Step01:新建工程積木識(shí)別(4)在Conda環(huán)境下,選擇pp_py37虛擬環(huán)境Step01:新建工程積木識(shí)別(5)創(chuàng)建工程Step02:創(chuàng)建目錄積木識(shí)別(1)創(chuàng)建目錄(2)輸入目錄名稱:S1_ColorBlockFinderStep02:創(chuàng)建目錄積木識(shí)別(3)在目錄S1_ColorBlockFinder下,創(chuàng)建3個(gè)子目錄Step03:創(chuàng)建python文件積木識(shí)別(1)在目錄S11_ColorBlock_Finder下,創(chuàng)建python文件S11_BlockRecognize.pyStep03:拷貝python文件積木識(shí)別(2)

將攝像頭文件VideoStream.py拷貝到

S11_ColorBlock_Finder目錄下,最終文件結(jié)構(gòu)如下圖:Step04:

代碼文件解析BlockRecognize.py

主函數(shù)文件攝像頭配置FindBlockPixelLocation積木識(shí)別,獲取中心坐標(biāo)PickBlock主函數(shù)VideoStream.py攝像頭圖像捕獲相機(jī)參數(shù)配置相機(jī)開(kāi)啟捕獲圖像已提供源代碼任務(wù)實(shí)施:積木識(shí)別OpenCV任務(wù)5-1積木識(shí)別(python)通過(guò)pycharm進(jìn)行python編程,添加視頻采集文件VideoStream.py編寫(xiě)代碼S11_BlockRecognize.py;實(shí)現(xiàn)不同顏色積木識(shí)別。

在攝像頭圖像區(qū)域內(nèi),隨機(jī)放置4個(gè)以上不同顏色的積木。(1)學(xué)號(hào)尾號(hào)為奇數(shù):實(shí)現(xiàn)藍(lán)色積木識(shí)別,并通過(guò)藍(lán)色顯示角度值(2)學(xué)號(hào)尾號(hào)為偶數(shù):實(shí)現(xiàn)綠色積木識(shí)別,并通過(guò)綠色顯示角度值【作業(yè)提交】:(1)代碼截圖,(2)視頻識(shí)別結(jié)果截圖:框出積木位置,顯示積木旋轉(zhuǎn)角度任務(wù)5-2積木定位吸取《智能機(jī)械臂控制》任務(wù)解析:積木定位吸取視覺(jué)+機(jī)械臂任務(wù)5-2

積木定位吸取任務(wù)3-3積木搬運(yùn)(python)任務(wù)5-1積木識(shí)別任務(wù)解析:代碼文件DobotControl_block.py

機(jī)械臂控制連接機(jī)械臂機(jī)械臂運(yùn)動(dòng)控制斷開(kāi)連接VideoStream.py

攝像頭圖像捕獲相機(jī)參數(shù)配置相機(jī)開(kāi)啟捕獲圖像參考:任務(wù)3-3積木搬運(yùn)已提供源代碼BlockRecognize_ArmSuction.py

主函數(shù)文件攝像頭配置FindBlockPixelLocation積木識(shí)別,獲取中心坐標(biāo)PickBlockmain主函數(shù)以“任務(wù)5-1積木識(shí)別”為基礎(chǔ)視覺(jué)+機(jī)械臂任務(wù)要求任務(wù)5-2積木識(shí)別:定位吸取通過(guò)積木識(shí)別獲取要吸取積木的位置信息,向機(jī)械臂發(fā)送信號(hào),觸發(fā)機(jī)械臂到指定位置搬運(yùn)積木視覺(jué)+機(jī)械臂任務(wù)實(shí)施:積木定位吸取Step01:項(xiàng)目文件(1)將任務(wù)5-1的代碼文件:

S11_BlockRecognize.py,VideoStream.py

拷貝到任務(wù)5-2的工程文件夾:S12_ColorBlock_Suction

(2)將下發(fā)的DobotControl_block.py

拷貝到任務(wù)5-2的工程文件夾(3)

S11_BlockRecognize.py

重命名為:S12_BlockRecognize_ArmSuction.py(4)將Dobot機(jī)械臂的動(dòng)態(tài)庫(kù)文件,拷貝到任務(wù)5-2文件夾

積木定位吸取Step01:項(xiàng)目文件積木定位吸取機(jī)械臂控制代碼需修改源自任務(wù)5-1需修改源自任務(wù)5-1無(wú)需修改機(jī)械臂動(dòng)態(tài)庫(kù)無(wú)需修改Step02:機(jī)械臂定位吸取積木(1)通過(guò)DobotStudio-Blockly進(jìn)行積木搬運(yùn)編程獲取要抓取積木的XYZ坐標(biāo),設(shè)置為起始坐標(biāo)。機(jī)械臂起始坐標(biāo)目的坐標(biāo)Step02:機(jī)械臂定位吸取積木機(jī)械臂(2)參照任務(wù)3-3,將Blockly編程轉(zhuǎn)化為python代碼,

填寫(xiě)到DobotControl_block.py相應(yīng)區(qū)域,并進(jìn)行代碼修改。Step03:積木識(shí)別+定位吸取修改完善S12_BlockRecognize_ArmSuction.py積木定位吸?。?)導(dǎo)入機(jī)械臂控制庫(kù)Step03:積木識(shí)別+定位吸取修改完善S12_BlockRecognize_ArmSuction.py積木定位吸?。?)選擇要識(shí)別的積木顏色Step03:積木識(shí)別+定位吸取積木定位吸取(3)添加機(jī)械臂動(dòng)作函數(shù)Step03:積木識(shí)別+定位吸取積木定位吸取(4)主函數(shù):添加機(jī)械臂控制與積木識(shí)別函數(shù)注意:機(jī)械臂連接串口號(hào),需根據(jù)實(shí)際情況修改修改完善S12_BlockRecognize_ArmSuction.pyStep04:機(jī)械臂異常處理積木定位吸?。?)機(jī)械臂報(bào)警分類序號(hào)類別說(shuō)明1公共報(bào)警如:復(fù)位、角度傳感器讀取錯(cuò)誤等2規(guī)劃報(bào)警規(guī)劃過(guò)程中計(jì)算錯(cuò)誤等3運(yùn)動(dòng)報(bào)警運(yùn)動(dòng)過(guò)程中計(jì)算錯(cuò)誤、限位等4超速報(bào)警各關(guān)節(jié)運(yùn)動(dòng)超速5限位報(bào)警各關(guān)節(jié)限位6丟步報(bào)警運(yùn)動(dòng)過(guò)程中受到碰撞,發(fā)出咯吱咯吱聲響Step04:機(jī)械臂異常處理積木定位吸?。?)機(jī)械臂報(bào)警處理方法類別說(shuō)明報(bào)警清除方法公共報(bào)警如:復(fù)位、角度傳感器讀取錯(cuò)誤等嘗試:按下復(fù)位按鍵,重新上電,協(xié)議指令清除(3)在DobotStudio中,

雙擊報(bào)警信息,清除;

或發(fā)送協(xié)議指令(1)(2)Step04:機(jī)械臂異常處理積木定位吸?。?)機(jī)械臂報(bào)警處理方法類別說(shuō)明報(bào)警清除方法規(guī)劃報(bào)警規(guī)劃過(guò)程中計(jì)算錯(cuò)誤等協(xié)議指令清除運(yùn)動(dòng)報(bào)警運(yùn)動(dòng)過(guò)程中計(jì)算錯(cuò)誤、限位等協(xié)議指令清除超速報(bào)警各關(guān)節(jié)運(yùn)動(dòng)超速協(xié)議指令清除在DobotStudio中,雙擊報(bào)警信息,清除;或發(fā)送協(xié)議指令

Step04:機(jī)械臂異常處理積木定位吸取(2)機(jī)械臂報(bào)警處理方法方式1:在DobotStudio中,雙擊報(bào)警信息,清除運(yùn)動(dòng)報(bào)警雙擊紅色文字Step04:機(jī)械臂異常處理積木定位吸取(2)機(jī)械臂報(bào)警處理方法方式2:協(xié)議指令清除報(bào)警Step04:機(jī)械臂異常處理積木定位吸?。?)機(jī)械臂報(bào)警處理方法方式2:協(xié)議指令清除報(bào)警Step04:機(jī)械臂異常處理積木定位吸取(2)機(jī)械臂報(bào)警處理方法類別說(shuō)明報(bào)警清除方法限位報(bào)警各關(guān)節(jié)限位按住“解鎖”按鈕,調(diào)整機(jī)械臂姿態(tài)直至底座紅燈變?yōu)榫G色按住解鎖按鈕拖動(dòng)大臂和小臂Step04:機(jī)械臂異常處理積木定位吸?。?)機(jī)械臂報(bào)警處理方法類別說(shuō)明報(bào)警清除方法丟步報(bào)警運(yùn)動(dòng)過(guò)程中受到碰撞,發(fā)出咯吱咯吱聲響機(jī)械臂歸零操作積木定位吸取——效果展示任務(wù)實(shí)施任務(wù)5-2積木定位吸取將積木放置到指定位置,調(diào)整機(jī)械臂到該位置,獲取機(jī)械臂XYZ坐標(biāo)。以任務(wù)5-1為基礎(chǔ),在DobotControl_block.py中添加積木吸取搬運(yùn)代碼,實(shí)現(xiàn):(1)學(xué)號(hào)尾號(hào)為奇數(shù):實(shí)現(xiàn)藍(lán)色積木識(shí)別,機(jī)械臂吸盤(pán)定位吸?。?)學(xué)號(hào)尾號(hào)為偶數(shù):實(shí)現(xiàn)綠色積木識(shí)別,機(jī)械臂吸盤(pán)定位吸取【作業(yè)提交】:(1)代碼截圖,(2)機(jī)械臂吸取積木視頻視覺(jué)+機(jī)械臂任務(wù)5-3積木定位夾取《智能機(jī)械臂控制》任務(wù)要求積木夾取任務(wù)5-3積木識(shí)別:定位夾取更換吸盤(pán)為“氣動(dòng)夾爪”,在任務(wù)5-2基礎(chǔ)上,修改機(jī)械臂控制程序,修改S12_BlockRecognize_ArmSuction.py代碼,實(shí)現(xiàn)夾爪旋轉(zhuǎn)角度夾取積木:(1)學(xué)號(hào)尾號(hào)為奇數(shù):實(shí)現(xiàn)紅色積木識(shí)別,機(jī)械臂氣爪旋轉(zhuǎn)、定位夾?。?)學(xué)號(hào)尾號(hào)為偶數(shù):實(shí)現(xiàn)綠色積木識(shí)別,機(jī)械臂氣爪旋轉(zhuǎn)、定位夾取【作業(yè)提交】:(1)機(jī)械臂Blockly代碼截圖(2)機(jī)械臂夾取積木視頻任務(wù)實(shí)施:積木定位夾取Step01:相對(duì)位置設(shè)置角度轉(zhuǎn)換設(shè)置機(jī)械臂和相機(jī)的相對(duì)位置

當(dāng)J1軸=0度時(shí),

機(jī)械臂與相機(jī)方向位于一條線上Step02:機(jī)械臂回零點(diǎn)設(shè)置回零點(diǎn)設(shè)置機(jī)械臂回零點(diǎn)的目的:確保機(jī)械臂在回零點(diǎn)位置,不遮擋相機(jī)視野,

不影響積木的圖像識(shí)別設(shè)置末端R軸為0,為夾取做準(zhǔn)備Step02:機(jī)械臂回零點(diǎn)設(shè)置回零點(diǎn)(1)打開(kāi)DobotStudio,連接機(jī)械臂并單擊“示教再現(xiàn)”。Step02:機(jī)械臂回零點(diǎn)設(shè)置回零點(diǎn)(2)按住“解鎖”按鈕,調(diào)整機(jī)械臂方向與相機(jī)方向垂直,松手。

建議:機(jī)械臂方向與相機(jī)方向垂直,不影響相機(jī)視野

。機(jī)械臂回零點(diǎn)可設(shè)置高一點(diǎn),防止回零中碰撞導(dǎo)致丟步。相機(jī)方向相機(jī)底座相機(jī)鏡頭機(jī)械臂底座機(jī)械臂方向Step02:機(jī)械臂回零點(diǎn)設(shè)置回零點(diǎn)(3)在DobotStudio“示教再現(xiàn)”窗口中雙擊位置數(shù)字,對(duì)位置值做微調(diào),設(shè)置R軸角度為0XYZ數(shù)值微調(diào)去掉小數(shù)位設(shè)置R軸角度=0Step02:機(jī)械臂回零點(diǎn)設(shè)置回零點(diǎn)(4)在該點(diǎn)位位置單擊鼠標(biāo)右鍵,選擇“設(shè)置為回零位置”。Step02:機(jī)械臂回零點(diǎn)設(shè)置回零點(diǎn)(5)歸零測(cè)試若歸零失敗,按復(fù)位鍵,重復(fù)上述操作Step03:氣動(dòng)吸盤(pán)->氣動(dòng)夾爪吸盤(pán)套件卸載(1)機(jī)械臂關(guān)機(jī);拔掉GP3的連接線

(2)螺母擰松,拔出末端設(shè)備(3)擰松2個(gè)頂絲,

拔下吸盤(pán)和固定軸1.5mm內(nèi)六角扳手Step03:氣動(dòng)吸盤(pán)->氣動(dòng)夾爪手爪套件安裝(4)用2.5mm內(nèi)六角扳手

將手爪套件安裝在舵機(jī)上【注意】:夾爪與上部的舵機(jī)保持水平。6S準(zhǔn)則:不用的吸盤(pán)末端和工具放回袋中。Step03:氣動(dòng)吸盤(pán)->氣動(dòng)夾爪手爪套件安裝(5)連接手爪和氣泵,

與吸盤(pán)套件連接方法一致Step04:機(jī)械臂末端角度R笛卡爾坐標(biāo)系下,末端角度R=J1角度+J4角度當(dāng)J1=0時(shí),J4角度=末端角度R笛卡爾坐標(biāo)系關(guān)節(jié)坐標(biāo)系末端角度Step04:機(jī)械臂末端角度R末端角度R=J1角度+J4角度0.3878+9.6122=10末端角度Step04:機(jī)械臂末端角度——微調(diào)注意:角度AngleInterval是由于安裝誤差引入的,每個(gè)機(jī)械臂各不相同!末端角度R=J1角度+J4角度;當(dāng)J1=0時(shí),末端角度R=J4角度末端角度Step05:機(jī)械臂控制——圖形化編程圖形化編程Step06:機(jī)械臂控制——python編程(1)代碼拷貝到DobotControl_block.py代碼縮進(jìn):選中所有拷貝的代碼按下2次Tab鍵代碼拷貝Step06:機(jī)械臂控制——python編程(2)夾取角度pickAngle,由函數(shù)參數(shù)傳入原來(lái)的夾取角度pickAngle部分,注銷(xiāo)掉代碼修改Step06:機(jī)械臂控制——python編程(3)

DobotStudio腳本代碼修改

api替換為self.api。

去掉指令后的Ex后綴,目前的版本不支持帶Ex后綴的指令。末端執(zhí)行器函數(shù),添加參數(shù)“isQueued=1”。

所有的指令都是隊(duì)列模式,即:命令加入隊(duì)列后逐個(gè)執(zhí)行。在最后一項(xiàng)指令前面,添加語(yǔ)句獲取最后一條指令的執(zhí)行索引,

為后面等待時(shí)長(zhǎng)設(shè)置依據(jù)。腳本修改Step06:機(jī)械臂控制——python編程腳本修改api替換為self.apiStep06:機(jī)械臂控制——python編程腳本修改去掉指令后的Ex后綴Step06:機(jī)械臂控制——python編程腳本修改末端執(zhí)行器函數(shù)括號(hào)里,添加最后一項(xiàng)參數(shù),"isQueued=1"Step06:機(jī)械臂控制——python編程腳本修改獲取最后一條指令的執(zhí)行索引注釋掉GetPose相關(guān)語(yǔ)句Step07:積木識(shí)別夾取——代碼完善修改S12_BlockRecognize_ArmSuction.py函數(shù)defPickBlock(myARM)添加機(jī)械臂夾取代碼積木識(shí)別夾取積木定位夾取——效果展示任務(wù)實(shí)施積木夾取任務(wù)5-3積木定位夾取更換吸盤(pán)為“氣動(dòng)爪”,在任務(wù)5-2基礎(chǔ)上,修改機(jī)械臂控制程序,修改S12_BlockRecognize_ArmSuction.py代碼,實(shí)現(xiàn)夾爪旋轉(zhuǎn)角度夾取積木:(1)學(xué)號(hào)尾號(hào)為奇數(shù):實(shí)現(xiàn)紅色積木識(shí)別,機(jī)械臂氣爪旋轉(zhuǎn)、定位夾?。?)學(xué)號(hào)尾號(hào)為偶數(shù):實(shí)現(xiàn)綠色積木識(shí)別,機(jī)械臂氣爪旋轉(zhuǎn)、定位夾取【作業(yè)提交】:(1)機(jī)械臂Blockly代碼截圖(2)機(jī)械臂夾取積木視頻任務(wù)5-4積木動(dòng)態(tài)抓取——相機(jī)標(biāo)定《智能機(jī)械臂控制》任務(wù)5-4積木動(dòng)態(tài)抓取——相機(jī)標(biāo)定使用pycharm打開(kāi)相機(jī)標(biāo)定工程S2_CameraCal,完成相機(jī)標(biāo)定(1)采集的不少于20張棋盤(pán)圖圖像截屏(2)相機(jī)校準(zhǔn)截圖(3)ModelCamera.py文件

畸變校正函數(shù)Video_undistort(self,image_raw)代碼截圖,

含:內(nèi)參和畸變參數(shù)【作業(yè)提交】:提交以上截圖任務(wù)要求相機(jī)標(biāo)定知識(shí)鏈接1:相機(jī)標(biāo)定基礎(chǔ)相機(jī)標(biāo)定(1)相機(jī)的成像原理:透鏡成像墨子發(fā)現(xiàn):用一個(gè)帶有小孔的板遮擋在墻體與物體之間,

墻體上就會(huì)形成物體的倒影,這種現(xiàn)象就叫小孔成像。知識(shí)鏈接1:相機(jī)標(biāo)定基礎(chǔ)相機(jī)標(biāo)定(1)相機(jī)的成像原理:透鏡成像利用小孔成像,在暗箱中,臨摹畫(huà)畫(huà)。但是:暗箱太黑不利于作畫(huà)。在孔上裝一塊凸透鏡,利用了凸透鏡的屈光性聚焦光線,可得到清晰明亮的影像。——透鏡成像知識(shí)鏈接1:相機(jī)標(biāo)定基礎(chǔ)相機(jī)標(biāo)定(1)相機(jī)的成像原理:感光材料——鹵化銀知識(shí)鏈接1:相機(jī)標(biāo)定基礎(chǔ)相機(jī)標(biāo)定(1)相機(jī)的三個(gè)基本部件:暗箱、鏡頭、感光元件知識(shí)鏈接1:相機(jī)標(biāo)定基礎(chǔ)相機(jī)標(biāo)定相機(jī)的原理是小孔成像,但是由于這種成像方式只有一個(gè)小孔能透過(guò)光線就會(huì)導(dǎo)致物體的成像亮度很低。為了解決亮度的問(wèn)題,我們使用了透鏡,雖然這樣可以解決亮度的問(wèn)題,但是由于透鏡的制作工藝會(huì)使成像產(chǎn)生多種形式的畸變,也就是說(shuō)成像后的圖像會(huì)和真實(shí)世界的景象不一致,需要利用畸變系數(shù)來(lái)矯正這種像差。(2)相機(jī)圖像畸變知識(shí)鏈接1:相機(jī)標(biāo)定基礎(chǔ)相機(jī)標(biāo)定(a)徑向畸變(RadialDistortion):產(chǎn)生原因是圖像在遠(yuǎn)離透鏡中心的地方比靠近中心的地方更加彎曲。徑向畸變包含:桶形畸變、枕形畸變。(2)相機(jī)圖像畸變知識(shí)鏈接1:相機(jī)標(biāo)定基礎(chǔ)相機(jī)標(biāo)定(b)切向畸變(TangetialDistortion)產(chǎn)生的原因:透鏡不完全平行于圖像平面,鏡頭本身存在傾角誤差。(2)相機(jī)圖像畸變知識(shí)鏈接1:相機(jī)標(biāo)定基礎(chǔ)相機(jī)標(biāo)定(3)圖像處理中涉及的坐標(biāo)系1——像素坐標(biāo)系

知識(shí)鏈接1:相機(jī)標(biāo)定基礎(chǔ)相機(jī)標(biāo)定(3)圖像處理中涉及的坐標(biāo)系2——圖像坐標(biāo)系

知識(shí)鏈接1:相機(jī)標(biāo)定基礎(chǔ)相機(jī)標(biāo)定(3)圖像處理中涉及的坐標(biāo)系3——相機(jī)坐標(biāo)系

知識(shí)鏈接1:相機(jī)標(biāo)定基礎(chǔ)相機(jī)標(biāo)定(3)圖像處理中涉及的坐標(biāo)系4——世界坐標(biāo)系相機(jī)坐標(biāo)系C世界坐標(biāo)系W

從世界坐標(biāo)系變換到相機(jī)坐標(biāo)系屬于剛體變換:即物體不會(huì)發(fā)生形變,只需要進(jìn)行旋轉(zhuǎn)和平移。R:表示旋轉(zhuǎn)矩陣,3x3T:表示偏移向量,1x3知識(shí)鏈接1:相機(jī)標(biāo)定基礎(chǔ)相機(jī)標(biāo)定(4)坐標(biāo)系轉(zhuǎn)換——像素坐標(biāo)系與圖像坐標(biāo)系

dx

dy:表示每個(gè)像素點(diǎn)在x和y方向上的尺寸。即:1pixel=dxmm;1pixel=dymm像素坐標(biāo)系,pixel圖像坐標(biāo)系,mm

像素坐標(biāo)

圖像坐標(biāo)知識(shí)鏈接1:相機(jī)標(biāo)定基礎(chǔ)相機(jī)標(biāo)定(4)坐標(biāo)系轉(zhuǎn)換——相機(jī)坐標(biāo)系與圖像坐標(biāo)系

知識(shí)鏈接1:相機(jī)標(biāo)定基礎(chǔ)相機(jī)標(biāo)定(5)相機(jī)內(nèi)參(相機(jī)內(nèi)參矩陣)——相機(jī)成像到實(shí)際圖像的轉(zhuǎn)換矩陣

像素坐標(biāo)

圖像坐標(biāo)

圖像坐標(biāo)

相機(jī)坐標(biāo)相機(jī)內(nèi)參矩陣

像素坐標(biāo)

相機(jī)坐標(biāo)知識(shí)鏈接1:相機(jī)標(biāo)定基礎(chǔ)相機(jī)標(biāo)定由于相機(jī)設(shè)計(jì)工藝問(wèn)題,會(huì)造成成像與實(shí)際圖像不一樣的現(xiàn)象。相機(jī)成像到實(shí)際圖像的轉(zhuǎn)換矩陣,稱為相機(jī)內(nèi)參矩陣(5)相機(jī)內(nèi)參(1)fx=f/dx,fy=f/dy

(a)焦距:f(b)dx和dy表示每一列和每一行分別代表多少mm,

即:1pixel=dxmm;1pixel=dymm

(2)C:principalpoint,主點(diǎn)(u0,v0),

相機(jī)光心所在的主軸與像平面的交點(diǎn)知識(shí)鏈接1:相機(jī)標(biāo)定基礎(chǔ)相機(jī)標(biāo)定世界坐標(biāo)到相機(jī)坐標(biāo)的轉(zhuǎn)換矩陣,稱為相機(jī)外參矩陣。與相機(jī)的安裝方式有關(guān)。(6)相機(jī)外參R:表示旋轉(zhuǎn)矩陣,3x3T:表示偏移向量,1x3相機(jī)坐標(biāo)系C世界坐標(biāo)系W知識(shí)鏈接1:相機(jī)標(biāo)定基礎(chǔ)相機(jī)標(biāo)定(7)總結(jié):像素坐標(biāo)系

世界坐標(biāo)系像素坐標(biāo)(u,v)圖像坐標(biāo)(x,y)相機(jī)坐標(biāo)(Xc,Yc,Zc)世界坐標(biāo)(Xw,Yw,Zw)

二次轉(zhuǎn)換透視投影剛體變換

相機(jī)內(nèi)參相機(jī)外參世界坐標(biāo)像素坐標(biāo)知識(shí)鏈接2:相機(jī)標(biāo)定相機(jī)標(biāo)定(1)相機(jī)標(biāo)定目標(biāo):獲取相機(jī)內(nèi)參、外參、畸變系數(shù),實(shí)現(xiàn)圖像校準(zhǔn)。(2)OpenCV中,相機(jī)標(biāo)定所使用的標(biāo)定圖案:棋盤(pán)格、對(duì)稱圓形、ArUco板等。

棋盤(pán)格圖案:操作簡(jiǎn)單、快速,標(biāo)定精度滿足一般應(yīng)用場(chǎng)景的需求。

對(duì)于標(biāo)定精度要求高的場(chǎng)景,則一般采用圓形標(biāo)定圖案。棋盤(pán)格板A4紙尺寸,7x6內(nèi)角,方塊27mmArUco板圓形板11x4任務(wù)實(shí)施:相機(jī)標(biāo)定Step01:圖像采集相機(jī)標(biāo)定調(diào)整棋盤(pán)圖的位置、姿態(tài),采集不少于20張棋盤(pán)圖圖像?!疽蟆浚浩灞P(pán)圖在圖像中完整顯示,不要有缺失;保存到my_image目錄下?!咀⒁狻?.棋盤(pán)圖紙不能彎曲。2.棋盤(pán)圖千萬(wàn)不能弄臟,否則可能造成標(biāo)定失敗。3.圖片為相機(jī)采集原始尺寸圖片,不能裁剪4.圖片為jpg格式5.圖片文件名只能包括字母、數(shù)字和下劃線Step02:進(jìn)入相機(jī)標(biāo)定模式相機(jī)標(biāo)定打開(kāi)Models/ModelSet目錄下的:setting.py,設(shè)置棋盤(pán)圖縱橫方向角點(diǎn)數(shù)量、攝像頭分辨率

Step02:進(jìn)入相機(jī)標(biāo)定模式相機(jī)標(biāo)定打開(kāi)相機(jī)校準(zhǔn)python工程,打開(kāi)Models目錄下的:ModelCamera.py,設(shè)置g_workMode=0

Step03:相機(jī)標(biāo)定相機(jī)標(biāo)定運(yùn)行ModelCamera.py,進(jìn)行相機(jī)校準(zhǔn)。如果運(yùn)行錯(cuò)誤,請(qǐng)查看是否安裝了庫(kù)。庫(kù)名稱如有紅色波浪線,請(qǐng)通過(guò)Terminal窗口,安裝相應(yīng)的庫(kù)文件,例如:pipinstalltqdmpipinstallpyyamlStep03:相機(jī)標(biāo)定相機(jī)標(biāo)定ModelCamera.py運(yùn)行效果Pycharm:Run窗口棋盤(pán)圖查找角點(diǎn)圖像Step03:相機(jī)標(biāo)定相機(jī)標(biāo)定Pycharm:Run窗口相機(jī)內(nèi)參、外參、畸變系數(shù)校準(zhǔn)錯(cuò)誤率Step04:相機(jī)標(biāo)定結(jié)果分析相機(jī)標(biāo)定原始圖像,紅色為標(biāo)準(zhǔn)直線Step04:相機(jī)標(biāo)定結(jié)果分析相機(jī)標(biāo)定校準(zhǔn)后的圖像,紅色為標(biāo)準(zhǔn)直線Step04:相機(jī)標(biāo)定結(jié)果分析相機(jī)標(biāo)定log/log.txt記錄了校準(zhǔn)過(guò)程和產(chǎn)生的結(jié)果校準(zhǔn)錯(cuò)誤率要求<0.2如果校準(zhǔn)錯(cuò)誤率高,需要重新采集棋盤(pán)圖像,再次進(jìn)行校準(zhǔn)相機(jī)內(nèi)參矩陣相機(jī)外參矩陣畸變參數(shù)校準(zhǔn)錯(cuò)誤率Step04:相機(jī)標(biāo)定結(jié)果分析相機(jī)標(biāo)定校準(zhǔn)參數(shù)文件 config/camera_test.yaml

記錄了校準(zhǔn)所有參數(shù)信息畸變參數(shù)外參內(nèi)參相機(jī)透鏡工藝相機(jī)設(shè)計(jì)工藝相機(jī)外部環(huán)境與安裝方式Step05:相機(jī)圖像畸變校正相機(jī)標(biāo)定畸變參數(shù)外參內(nèi)參相機(jī)透鏡制作工藝相機(jī)設(shè)計(jì)工藝相機(jī)外部環(huán)境與安裝方式世界坐標(biāo)->相機(jī)坐標(biāo)相機(jī)成像->實(shí)際圖像圖像校準(zhǔn)Step05:相機(jī)圖像畸變校正相機(jī)標(biāo)定修改畸變校準(zhǔn)函數(shù)ModelCamera.py文件:

函數(shù)Video_undistort從log.txt中,將相機(jī)內(nèi)參和畸變參數(shù)拷貝到相應(yīng)位置,并修改格式(2維列表)相機(jī)標(biāo)定打開(kāi)Models目錄下的:ModelCamera.py,設(shè)置g_workMode=1

可獲得校準(zhǔn)后的實(shí)時(shí)圖像,按下空格按鍵,可獲取最外圍的4個(gè)角點(diǎn)像素坐標(biāo)Step05:相機(jī)圖像畸變校正按下空格按鍵可獲取最外圍的4個(gè)角點(diǎn)像素坐標(biāo)按下q鍵退出相機(jī)標(biāo)定打開(kāi)Models目錄下的:ModelCamera.py,設(shè)置g_workMode=1

可獲得校準(zhǔn)后的實(shí)時(shí)圖像,按下空格按鍵,可獲取最外圍的4個(gè)角點(diǎn)像素坐標(biāo)Step05:相機(jī)圖像畸變校正任務(wù)5-4積木抓取——相機(jī)標(biāo)定使用pycharm打開(kāi)S2_CameraCal工程,完成相機(jī)標(biāo)定(1)采集的不少于20張棋盤(pán)圖圖像截屏(見(jiàn)Step01)(2)相機(jī)標(biāo)定截圖(見(jiàn)Step03)(3)ModelCamera.py文件

函數(shù)Video_undistort(self,image_raw)代碼截圖,

含:內(nèi)參和畸變參數(shù)(見(jiàn)Step05)【作業(yè)提交】:提交以上截圖任務(wù)實(shí)施相機(jī)標(biāo)定任務(wù)5-5積木動(dòng)態(tài)抓取——坐標(biāo)變換《智能機(jī)械臂控制》知識(shí)鏈接:坐標(biāo)變換坐標(biāo)變換坐標(biāo)轉(zhuǎn)換:像素坐標(biāo)->機(jī)械臂笛卡爾坐標(biāo)【思路】:根據(jù)標(biāo)定板上三點(diǎn)像素坐標(biāo)A

和對(duì)應(yīng)位置的機(jī)械臂笛卡爾坐標(biāo)B,獲取變換系數(shù)RB=RTxA

B機(jī)械臂笛卡爾坐標(biāo)(手動(dòng)獲?。〢像素坐標(biāo)(程序獲取)RT轉(zhuǎn)換矩陣(待求值)任務(wù)實(shí)施:相機(jī)標(biāo)定Step01:設(shè)備布放坐標(biāo)變換調(diào)整設(shè)備相對(duì)位置將相機(jī)與機(jī)械臂相對(duì)放置。校準(zhǔn)棋盤(pán)圖,傾斜放置。相機(jī)與機(jī)械臂的坐標(biāo)系如圖所示?!疽蟆浚海?)全部棋盤(pán)格在相機(jī)視野范圍內(nèi)。(2)調(diào)整機(jī)械臂位置,使得:

機(jī)械臂末端可到達(dá)最少3個(gè)點(diǎn)。(3)此后,機(jī)械臂和相機(jī)位置不能再改動(dòng),否則需重新進(jìn)行坐標(biāo)變換。Step02:像素坐標(biāo)獲取坐標(biāo)變換【修改參數(shù)】打開(kāi)modelCamera.py

設(shè)置g_workMode=1運(yùn)行程序Step02:像素坐標(biāo)獲取坐標(biāo)變換【采集角點(diǎn)像素坐標(biāo)】(1)調(diào)整棋盤(pán)圖位置,棋盤(pán)圖傾斜放置,使其完全在攝像頭視野中。(2)調(diào)整機(jī)械臂,使其最少可正常到達(dá):紅、綠、藍(lán)、紫中的3個(gè)角點(diǎn)。(3)按下空格鍵,進(jìn)行四個(gè)角點(diǎn)像素坐標(biāo)提取。將圖像截屏保存。(4)按下q鍵(英文模式下),退出程序。相機(jī)圖像Step02:像素坐標(biāo)獲取坐標(biāo)變換【保存像素坐標(biāo)】將輸出結(jié)果中4個(gè)角點(diǎn)像素坐標(biāo)拷貝到文檔暫存【注意】:(1)操作過(guò)程中,務(wù)必確保棋盤(pán)圖位置不變。(2)程序暫不退出紅

藍(lán)

紫Step03:機(jī)械臂坐標(biāo)獲取坐標(biāo)變換(1)機(jī)械臂上電、開(kāi)機(jī),打開(kāi)DobotStudio,連接機(jī)械臂。(2)按下機(jī)械臂“解鎖”鍵,分別調(diào)整機(jī)械臂到達(dá)紅、綠、藍(lán)三個(gè)角點(diǎn),并記錄下三個(gè)位置機(jī)械臂的X和Y

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論