當前位置:編程學習大全網 - 編程語言 - 機器人是如何走出迷宮的

機器人是如何走出迷宮的

首先,我們要了解,機器人領域的視覺(Machine Vision)跟計算機領域(Computer Vision)的視覺有壹些不同:機器視覺的目的是給機器人提供操作物體的信息。所以,機器視覺的研究大概有這幾塊:?

物體識別(Object Recognition):在圖像中檢測到物體類型等,這跟 CV 的研究有很大壹部分交叉;?

位姿估計(Pose Estimation):計算出物體在攝像機坐標系下的位置和姿態,對於機器人而言,需要抓取東西,不僅要知道這是什麽,也需要知道它具體在哪裏;?

相機標定(Camera Calibration):因為上面做的只是計算了物體在相機坐標系下的坐標,我們還需要確定相機跟機器人的相對位置和姿態,這樣才可以將物體位姿轉換到機器人位姿。

當然,我這裏主要是講物體定位領域的機器視覺;SLAM 等其他領域的就先不講了。 ?算法肯定也是有的。?

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

1. 相機標定??

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

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

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

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

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

2 平面物體檢測?

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

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

3. 有紋理的物體?

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

幸好有壹位叫做 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 問題,就可以計算出物體在當前相機坐標系下的位姿。 ?

4. 無紋理的物體?

好了,有問題的物體容易解決,那麽生活中或者工業裏還有很多物體是沒有紋理的

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

這裏,我介紹壹個我們實驗室之前使用和重現過的算法 LineMod:?Hinterstoisser, Stefan, et al. "Multimodal templates for real-time detection of texture-less objects in heavily cluttered scenes." Computer Vision (ICCV), 2011 IEEE International Conference on. IEEE, 2011.

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

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

5. 深度學習?

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

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

當然,直接用神經網絡做位姿估計的工作也是有的,如這篇:?Doumanoglou, Andreas, et al. "Recovering 6d object pose and predicting next-best-view in the crowd." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016.

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

6. 與任務/運動規劃結合?

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

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

更詳細的圖文解析可以到機器人家上去看,我這邊就不貼出來了,希望對妳有用

  • 上一篇:ISO18000-6C電子標簽的數據存儲
  • 下一篇:撿到壹個象U盤壹樣的東西,插上電腦說發現USB人體學輸入設備,上面還有壹個LED燈,插上電腦燈就會亮,誰能告
  • copyright 2024編程學習大全網