當前位置:首頁 » 操作系統 » 機器人迷宮演算法

機器人迷宮演算法

發布時間: 2022-07-28 21:12:16

① 機器人是如何走出迷宮的

首先,我們要了解,機器人領域的視覺(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. 與任務/運動規劃結合
這部分也是比較有意思的研究內容,由於機器視覺的目的是給機器人操作物體提供信息,所以,並不限於相機中的物體識別與定位,往往需要跟機器人的其他模塊相結合。
我們讓機器人從冰箱中拿一瓶『雪碧』,但是這個 『雪碧』 被『美年達』擋住了。我們人類的做法是這樣的:先把 『美年達』 移開,再去取 『雪碧』 。所以,對於機器人來說,它需要先通過視覺確定雪碧在『美年達』後面,同時,還需要確定『美年達』這個東西是可以移開的,而不是冰箱門之類固定不可拿開的物體。 當然,將視覺跟機器人結合後,會引出其他很多好玩的新東西。由於不是我自己的研究方向,所以也就不再班門弄斧了。

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

② 迷宮機器人是什麼

迷宮機器人是使用嵌入式微控制器、智能感測器、運動部件組成的智能行走裝置。但在比賽形式上與智能鼠有所不同,這項比賽增加了虛擬模擬競賽部分。比之前比的內容更全面了。

③ 我在世界智能大會看到個好玩的迷宮機器人,是用遙控器控制的嗎

這個不是用遙控器控制的,是把人工智慧演算法程序寫到智能機器人中,完成迷宮搜索和迷宮沖刺,這個也叫智能鼠走迷宮。

④ 學習迷宮機器人,將來就業有用嗎

迷宮機器人技術融合自適應運動控制演算法、多感測器融合、智能圖像識別、高速運動控制、虛擬模擬技術、物聯網通信等相關智能技術,全面對標現代智能科技產業發展,所以太有用了。

java機器人走迷宮的編程——急求!

深度優先的迷宮圖演算法。
N年前的老問題了。
10分不值得做。

⑥ 求走迷宮的演算法!(計算機的演算法)(編程也可以

我的思路:
按照人類走迷宮的方法,貼著左邊走,左邊有路就向左走,左邊沒路向前走,左邊前面都沒路向右走

機器人的應該是:1.判斷左邊是否有牆,無牆:機器人左轉,前進一步,繼續判斷左。。
2.左邊有牆,則判斷前方是否有牆,無則向前一步,跳回第一步
3.前方有牆(此時狀態是左有牆,前有牆),則向機器人右轉,跳回第一步
另外有個前提條件,機器人轉彎需要原地轉,有轉彎半徑的肯定不行。
還有個問題,就是機器人自己不知道自己已經從迷宮出來了,會一直走。。

⑦ 聲納機器人走迷宮的工作原理

簡單地說,就類似蝙蝠的超聲定位。機器人發出聲納,碰到牆反射回來,通過時間差,算出與牆距離,太近則轉彎,太遠就繼續。大概就是這么一回事。

⑧ 用java語言控制小機器人走迷宮的演算法

我昨天剛寫了個走迷宮的界面(一個初始小球,一個目標小球,隨機在界面種生成障礙(迷宮圖),然後初始小球移動到目標小球那),不知道是否跟你的想法一樣。用的是回溯法(目前我只知道這個演算法走迷宮),你可以查下。PS:我電腦沒聯網不能把代碼給你…QQ254774042。

⑨ 機器人走迷宮程序用stm32多久能學會

機器人走迷宮程序用stm32要想學會的話因人而異,但是一般來說快的話需要半個多月,慢的話則需要一兩年的時間。

這個情況主要因人而異,會還是精通是兩種感念,能用起來的話,我認為使用庫函數標准固件庫大約一周就行。要是hal庫加上cube的話大約3天,但我覺得hal庫比較個人不推薦,個人推薦,學懂一款單片機最好就先學會使用寄存器直接操作,這種操作方式效率高,但對新手不友好,大約需要小半年吧。

之所以要這么長時間以及十分不確定性是因為機器人在矩陣范圍內可以向上下左右走,終點[2, 3]可以由[2,1]或[1, 3]走來。

可在起點到點[2,1]的距離、起點到[1, 3]的距離中取最小值,再加1格子之間距離為1即可,這就需要復雜的程序編程式控制制。

對於演算法初學者,自然想到遞歸,當然,遞歸肯定可以解決問題,但是必須要不能找下去再遞歸回來,太慢了;時間復雜度,半徑是最短距離。能擴散到終點即可,不必求出終點四周的點,再取min值,演算法效率最高,時間復雜度也很高,所以一般來說需要一年的時間。

熱點內容
辦公oa系統源碼 發布:2025-01-18 21:19:51 瀏覽:223
beatsflex如何連接安卓手機 發布:2025-01-18 21:19:07 瀏覽:359
天翼光貓如何配置單線復用 發布:2025-01-18 21:19:06 瀏覽:835
ftp製作網站 發布:2025-01-18 21:18:12 瀏覽:338
android使用at命令 發布:2025-01-18 20:54:51 瀏覽:216
phptiny 發布:2025-01-18 20:54:03 瀏覽:987
怎麼給漢字加密 發布:2025-01-18 20:49:44 瀏覽:865
遍歷javamap 發布:2025-01-18 20:39:05 瀏覽:624
我的世界租伺服器哪裡最便宜 發布:2025-01-18 20:38:50 瀏覽:564
dhcp伺服器地址租期時間怎麼調整 發布:2025-01-18 20:28:02 瀏覽:267