當前位置:首頁 » 機械製造 » 視頻機械臂如何識別物體

視頻機械臂如何識別物體

發布時間: 2021-02-24 01:50:01

機器人抓取時怎麼定位的用什麼感測器來檢測

機器人家上了解到,機器人領域的視覺(Machine Vision)跟計算機領域(Computer Vision)的視覺有一些不同:機器視覺的目的是給機器人提供操作物體的信息。所以,機器視覺的研究大概有這幾塊:
物體識別(Object Recognition):在圖像中檢測到物體類型等,這跟 CV 的研究有很大一部分交叉;
位姿估計(Pose Estimation):計算出物體在攝像機坐標系下的位置和姿態,對於機器人而言,需要抓取東西,不僅要知道這是什麼,也需要知道它具體在哪裡;
相機標定(Camera Calibration):因為上面做的只是計算了物體在相機坐標系下的坐標,我們還需要確定相機跟機器人的相對位置和姿態,這樣才可以將物體位姿轉換到機器人位姿。

當然,我這里主要是在物體抓取領域的機器視覺;SLAM 等其他領域的就先不講了。

由於視覺是機器人感知的一塊很重要內容,所以研究也非常多了,我就我了解的一些,按照由簡入繁的順序介紹吧:

0. 相機標定

這其實屬於比較成熟的領域。由於我們所有物體識別都只是計算物體在相機坐標系下的位姿,但是,機器人操作物體需要知道物體在機器人坐標系下的位姿。所以,我們先需要對相機的位姿進行標定。 內參標定就不說了,參照張正友的論文,或者各種標定工具箱; 外參標定的話,根據相機安裝位置,有兩種方式:

Eye to Hand:相機與機器人極坐標系固連,不隨機械臂運動而運動

Eye in Hand:相機固連在機械臂上,隨機械臂運動而運動 兩種方式的求解思路都類似,首先是眼在手外(Eye to Hand)

只需在機械臂末端固定一個棋盤格,在相機視野內運動幾個姿態。由於相機可以計算出棋盤格相對於相機坐標系的位姿 、機器人運動學正解可以計算出機器人底座到末端抓手之間的位姿變化 、而末端爪手與棋盤格的位姿相對固定不變。 這樣,我們就可以得到一個坐標系環

而對於眼在手上(Eye in Hand)的情況,也類似,在地上隨便放一個棋盤格(與機器人基座固連),然後讓機械臂帶著相機走幾個位姿,然後也可以形成一個 的坐標環。

1. 平面物體檢測

這是目前工業流水線上最常見的場景。目前來看,這一領域對視覺的要求是:快速、精確、穩定。所以,一般是採用最簡單的邊緣提取+邊緣匹配/形狀匹配的方法;而且,為了提高穩定性、一般會通過主要打光源、採用反差大的背景等手段,減少系統變數。

目前,很多智能相機(如 cognex)都直接內嵌了這些功能;而且,物體一般都是放置在一個平面上,相機只需計算物體的 三自由度位姿即可。 另外,這種應用場景一般都是用於處理一種特定工件,相當於只有位姿估計,而沒有物體識別。 當然,工業上追求穩定性無可厚非,但是隨著生產自動化的要求越來越高,以及服務類機器人的興起。對更復雜物體的完整位姿 估計也就成了機器視覺的研究熱點。

2. 有紋理的物體

機器人視覺領域是最早開始研究有紋理的物體的,如飲料瓶、零食盒等表面帶有豐富紋理的都屬於這一類。 當然,這些物體也還是可以用類似邊緣提取+模板匹配的方法。但是,實際機器人操作過程中,環境會更加復雜:光照條件不確定(光照)、物體距離相機距離不確定(尺度)、相機看物體的角度不確定(旋轉、仿射)、甚至是被其他物體遮擋(遮擋)。

幸好有一位叫做 Lowe 的大神,提出了一個叫做 SIFT (Scale-invariant feature transform)的超強局部特徵點: Lowe, David G. "Distinctive image features from scale-invariant keypoints."International journal of computer vision 60.2 (2004): 91-110. 具體原理可以看上面這篇被引用 4萬+ 的論文或各種博客,簡單地說,這個方法提取的特徵點只跟物體表面的某部分紋理有關,與光照變化、尺度變化、仿射變換、整個物體無關。 因此,利用 SIFT 特徵點,可以直接在相機圖像中尋找到與資料庫中相同的特徵點,這樣,就可以確定相機中的物體是什麼東西(物體識別)。

對於不會變形的物體,特徵點在物體坐標系下的位置是固定的。所以,我們在獲取若干點對之後,就可以直接求解出相機中物體與資料庫中物體之間的單應性矩陣。 如果我們用深度相機(如Kinect)或者雙目視覺方法,確定出每個特徵點的 3D 位置。那麼,直接求解這個 PnP 問題,就可以計算出物體在當前相機坐標系下的位姿。

↑ 這里就放一個實驗室之前畢業師兄的成果 當然,實際操作過程中還是有很多細節工作才可以讓它真正可用的,如:先利用點雲分割和歐氏距離去除背景的影響、選用特徵比較穩定的物體(有時候 SIFT 也會變化)、利用貝葉斯方法加速匹配等。 而且,除了 SIFT 之外,後來又出了一大堆類似的特徵點,如 SURF、ORB 等。

3. 無紋理的物體
好了,有問題的物體容易解決,那麼生活中或者工業里還有很多物體是沒有紋理的:

我們最容易想到的就是:是否有一種特徵點,可以描述物體形狀,同時具有跟 SIFT 相似的不變性? 不幸的是,據我了解,目前沒有這種特徵點。 所以,之前一大類方法還是採用基於模板匹配的辦法,但是,對匹配的特徵進行了專門選擇(不只是邊緣等簡單特徵)。

簡單而言,這篇論文同時利用了彩色圖像的圖像梯度和深度圖像的表面法向作為特徵,與資料庫中的模板進行匹配。 由於資料庫中的模板是從一個物體的多個視角拍攝後生成的,所以這樣匹配得到的物體位姿只能算是初步估計,並不精確。 但是,只要有了這個初步估計的物體位姿,我們就可以直接採用 ICP 演算法(Iterative closest point)匹配物體模型與 3D 點雲,從而得到物體在相機坐標系下的精確位姿。

當然,這個演算法在具體實施過程中還是有很多細節的:如何建立模板、顏色梯度的表示等。另外,這種方法無法應對物體被遮擋的情況。(當然,通過降低匹配閾值,可以應對部分遮擋,但是會造成誤識別)。 針對部分遮擋的情況,我們實驗室的張博士去年對 LineMod 進行了改進,但由於論文尚未發表,所以就先不過多涉及了。

4. 深度學習
由於深度學習在計算機視覺領域得到了非常好的效果,我們做機器人的自然也會嘗試把 DL 用到機器人的物體識別中。

首先,對於物體識別,這個就可以照搬 DL 的研究成果了,各種 CNN 拿過來用就好了。有沒有將深度學習融入機器人領域的嘗試?有哪些難點? - 知乎 這個回答中,我提到 2016 年的『亞馬遜抓取大賽』中,很多隊伍都採用了 DL 作為物體識別演算法。 然而, 在這個比賽中,雖然很多人採用 DL 進行物體識別,但在物體位姿估計方面都還是使用比較簡單、或者傳統的演算法。似乎並未廣泛採用 DL。 如 @周博磊 所說,一般是採用 semantic segmentation network 在彩色圖像上進行物體分割,之後,將分割出的部分點雲與物體 3D 模型進行 ICP 匹配。

當然,直接用神經網路做位姿估計的工作也是有的

它的方法大概是這樣:對於一個物體,取很多小塊 RGB-D 數據(只關心一個patch,用局部特徵可以應對遮擋);每小塊有一個坐標(相對於物體坐標系);然後,首先用一個自編碼器對數據進行降維;之後,用將降維後的特徵用於訓練Hough Forest。

5. 與任務/運動規劃結合
這部分也是比較有意思的研究內容,由於機器視覺的目的是給機器人操作物體提供信息,所以,並不限於相機中的物體識別與定位,往往需要跟機器人的其他模塊相結合。

我們讓機器人從冰箱中拿一瓶『雪碧』,但是這個 『雪碧』 被『美年達』擋住了。 我們人類的做法是這樣的:先把 『美年達』 移開,再去取 『雪碧』 。 所以,對於機器人來說,它需要先通過視覺確定雪碧在『美年達』後面,同時,還需要確定『美年達』這個東西是可以移開的,而不是冰箱門之類固定不可拿開的物體。 當然,將視覺跟機器人結合後,會引出其他很多好玩的新東西。由於不是我自己的研究方向,所以也就不再班門弄斧了。

❷ 雲跡科技機器人用什麼識別物體

它的具體的狀況的話,識別物體的方式是不一樣的,所以在這方面的話,它的作用也是完全不一樣,一種是紅外,一種是自動識別。

❸ 觸摸屏物體識別到底是怎麼實現的

電容屏物體識別是一種新型智能識別技術,可以在電容觸摸屏上識別特製的多個版模塊,感應出不同權的精美畫面,輕松炫酷實現人機交互。
物體識別可以將產品下放置模塊,模塊在放入屏幕中,可以展示任意炫酷的上層顯示效果,例如,可以在一個手機後面放置一個模塊,在把手機和模塊同時放在屏幕上,當然,屏幕是與地面水平,系統檢測到這個模塊以後會觸發相應的上層效果,例如手機四周出現光圈不斷閃爍,在一一介紹手機功能,手機各個零件功能,並且支持手觸摸,任意移動,當手機和模塊在移動時,上層特效跟隨移動,移動跟蹤效果。
市場的針對產品是非常好的應用,尤其是產品化,例如:手機、玩具、化妝品、洗衣用品、酒水類、對一些小的產品是一個非常適合,可以增加人氣,快速提升企業及產品知名度。
上海先之實業有限公司是一家專業從事多媒體創意,策劃,施工一體化的公司,同時以數字化,三維動畫,影視拍攝,人機互動等高端技術為主導,可根據客戶需求提供專業的「多媒體解決方案」。
公司的核心產品包括智能化中控系統,融合拼接軟體,多媒體互動軟體定製研發,大屏幕觸摸互動,VR,AR技術,舞台燈光音響設計集成,觸摸屏物體識別,展廳展館多媒體前端展示技術等

❹ opencv實現的AVI視頻中運動物體識別與追蹤的程序

以前有OPENCV的官網,可以下載到源代碼的,我這邊貼一個基於vc2005的源代碼吧。

#include <stdio.h>
#include<iostream>
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
using namespace std;

int main( int argc, char** argv )
{
//聲明IplImage指針
IplImage* pFrame = NULL;
IplImage* pFrImg = NULL;
IplImage* pBkImg = NULL;

CvMat* pFrameMat = NULL;
CvMat* pFrMat = NULL;
CvMat* pBkMat = NULL;

CvCapture* pCapture = NULL;

int nFrmNum = 0;

//創建窗口
cvNamedWindow("background",1);
cvNamedWindow("video", 1);
cvNamedWindow("foreground",1);
//排列窗口
cvMoveWindow("background", 30, 500);
cvMoveWindow("video", 350, 0);
cvMoveWindow("foreground", 690, 500);

//打開視頻文件
if(argc == 2)
if( !(pCapture = cvCaptureFromFile(argv[1])))
{
fprintf(stderr, "文件打開錯誤", argv[1]);
return -2;
}

//逐幀讀取視頻
while(pFrame = cvQueryFrame( pCapture ))
{
nFrmNum++;

//如果是第一幀,則申請內存,並初始化
if(nFrmNum == 1)
{
pBkImg = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,1);
pFrImg = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,1);

pBkMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);
pFrMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);
pFrameMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);

//轉化成單通道圖
cvCvtColor(pFrame, pBkImg, CV_BGR2GRAY);
cvCvtColor(pFrame, pFrImg, CV_BGR2GRAY);

cvConvert(pFrImg, pFrameMat);
cvConvert(pFrImg, pFrMat);
cvConvert(pFrImg, pBkMat);
}
else
{
cvCvtColor(pFrame, pFrImg, CV_BGR2GRAY);
cvConvert(pFrImg, pFrameMat);
//平滑圖像(高斯濾波)
cvSmooth(pFrameMat, pFrameMat, CV_GAUSSIAN, 3, 0, 0);

//當前幀減去背景
cvAbsDiff(pFrameMat, pBkMat, pFrMat);

//前景圖二值化
cvThreshold(pFrMat, pFrImg, 60, 255.0, CV_THRESH_BINARY);

//形態學濾波(去噪音)
cvErode(pFrImg, pFrImg, 0, 1);
cvDilate(pFrImg, pFrImg, 0, 1);

//把圖像轉正
pBkImg->origin=1;
pFrImg->origin=1;

//對pFrImg上的已經識別出的運動物體,在pFrame上畫跟蹤框
int x,y;
for (y=pFrImg->height - 1;y>=250;y--)

{

uchar* ptr = (uchar*)(pFrImg->imageData+pFrImg->widthStep*y); //將imageData指針指向第y行頭部

for (x=0;x<pFrImg->width;x++)
{
if(ptr[x]!=0)//判斷地y行第x個元素是否有圖像,如果有圖像,則畫跟蹤框
{
CvPoint pt1_Rect;
CvPoint pt2_Rect;
pt1_Rect.x=x-30;
pt1_Rect.y=y;
pt2_Rect.x=x+30;
pt2_Rect.y=y-300;
int thickness=3;
int line_type=8;
CvScalar color=CV_RGB(255,0,0);
cvRectangle( pFrame, pt1_Rect, pt2_Rect,color ,thickness, line_type, 0 );
y=-1;
break;

}

}

}

//顯示圖像
cvShowImage("video", pFrame);
cvShowImage("background", pBkImg);
cvShowImage("foreground", pFrImg);

//如果有按鍵事件,則跳出循環
//為cvShowImage函數提供時間完成顯示
//等待時間可以根據CPU速度調整
if( cvWaitKey(27) >= 0 )
break;

}

}

//銷毀窗口
cvDestroyWindow("video");
cvDestroyWindow("background");
cvDestroyWindow("foreground");

//釋放圖像和矩陣
cvReleaseImage(&pFrImg);
cvReleaseImage(&pBkImg);

cvReleaseMat(&pFrameMat);
cvReleaseMat(&pFrMat);
cvReleaseMat(&pBkMat);

cvReleaseCapture(&pCapture);

return 0;
}

❺ 怎麼讓機械臂根據超聲波感測器自動抓取物體

超聲波感測器檢測到物體後輸出一個信號給機械臂控制單元,然後機械臂就抓取

❻ 攝像機安裝在機械臂上,當機械臂運動時如何確定攝像機的坐標

確定攝像機的坐標是基於什麼目的呢
是監控攝像頭嗎
一般來說監控攝像頭都是對所在區域范圍進行監控和錄像,很少有對坐標進行定位的

❼ proe機構模擬怎麼做機械臂抓取物體的動作

在機械臂抓到物品後,應該給物品也定義電機,讓物品跟機械臂一起運動,直到想要的位置,最後導出運動動畫。

❽ 如何用視頻識別工件

計算機在運行時,先從內存中取出第一條指令,通過控制器的解碼,按指令的要內求,從存貯器中取出數據進容行指定的運算和邏輯操作等加工,然後再按地址把結果送到內存中去。接下來,再取出第二條指令,在控制器的指揮下完成規定操作。依此進行下去,直至遇到停止指令

❾ 機械手怎樣去識別物體

紅外線光射出與反彈。
比如你眼前有黑,白兩物。
一道紅外線射過去。
黑色內物體吸光,所以反容彈的紅外光就少,判定為黑物體
白色物體吸光能力弱,反正反彈紅外就多,判定為白。
但是就現代科技來言,要機械手實現物體識別有很多手段。
比如視覺系統+互聯網 這是一種比較先進的。

❿ 生產線上機器人機械臂是怎麼實現精確定位的

最直接的方來法是採用非接觸位移測量自感測器,安裝到機械手上,測量距離被測物體的距離,從而精確定位控制機械手動作。
非接觸位移測量感測器有以下特點「
◆量程最小2mm,最大1250mm
◆量程起始距離最小10mm,最大260mm
◆頻率響應:2K、5K、8K、9.4K;
◆解析度最高0.01%,線性度最高0.1%
◆支持多個感測器同步採集
◆支持特殊量程
◆特殊應用(如路面平整度,高溫被測體,管道內徑,石油鑽桿內外螺紋測量等)
◆針對串口,提供了運行應用的DLL開發庫,方便用戶開發應用軟體
◆非接觸位移精密測量。

熱點內容
線切割怎麼導圖 發布:2021-03-15 14:26:06 瀏覽:709
1台皮秒機器多少錢 發布:2021-03-15 14:25:49 瀏覽:623
焊接法蘭如何根據口徑配螺栓 發布:2021-03-15 14:24:39 瀏覽:883
印章雕刻機小型多少錢 發布:2021-03-15 14:22:33 瀏覽:395
切割機三五零木工貝片多少錢 發布:2021-03-15 14:22:30 瀏覽:432
加工盜磚片什麼櫸好 發布:2021-03-15 14:16:57 瀏覽:320
北洋機器局製造的銀元什麼樣 發布:2021-03-15 14:16:52 瀏覽:662
未來小七機器人怎麼更新 發布:2021-03-15 14:16:33 瀏覽:622
rexroth加工中心亂刀怎麼自動調整 發布:2021-03-15 14:15:05 瀏覽:450
機械鍵盤的鍵帽怎麼選 發布:2021-03-15 14:15:02 瀏覽:506