ros系統利用kinect避障的原理是什麼?

ros系統中利用kinect的深度圖避障的原理是什麼? 能否推薦一下相關的雙目或者單目實現避障的論文和演算法或者開源代碼,謝謝


謝邀,知乎首答,拋磚引玉

以下是在移動機器人框架下的一點思路,如果是無人機避障的話,才疏學淺,愛莫能助

只了解利用kinect深度圖信息的避障,2D的主要例子就是ROS turtlebot tutorial 5.3.2 Autonomous Navigation of a Known Map with TurtleBot,我記得包括動態避障。其實就是將kinect的深度圖轉成laserscan類型的信息,跑amcl+gmapping的演算法。

利用3D信息的話,需要得到kinect的相機參數(需要對kinect做標定),這部分我沒仔細做,ROS應該有現成的包可以調用。如640*480大小的深度圖經過如下公式可以轉化為點雲,從像素橫軸、縱軸、深度空間(u,v,z)變化到世界坐標系下的(x,y,z)

x=frac{z*(u-c_{x} )}{f_{x}}

y=frac{z*(v-c_{y} )}{f_{y}}

參考這篇opencv文檔。Camera Calibration and 3D Reconstruction。當然個人認為點雲更多意義上要包含色彩信息,這塊涉及到深度圖和RGB圖的association問題,按下不表。

得到點雲後,最樸素的避障就是根據你移動機器人放置的kinect位置,設置高度閾值y、橫軸視界閾值x和深度閾值z,然後對裁剪後的點雲有效部分在水平方向上做平均,如果大於0則障礙物偏右,向左轉,小於0則障礙物偏左,向右轉。我在實驗室環境下跑能達到60~70%的正確率。見過好幾個小項目、小論文都是這個做法。

我本科畢設參考過這篇,很簡單的做法:Obstacle Detection and Avoidance Using TurtleBot
Platform and XBox Kinect https://www.cs.cmu.edu/~sboucher/turtlebot.pdf

還有一個印度人的小項目也用了這個方法:https://joelmoniz.com/2014/08/11/building-a-slam-bot-with-a-kinect/

2016.05.20

挖個坑,以後補上利用點雲進行3D避障、路徑規劃的方法。

2017.01.18

以下避障、運動規劃的內容均不涉及動態避障,我沒有做過

現在對Kinect能做的東西了解多了一些,還是按照上面的思路,分兩大流派:

直接利用Kinect的3D點雲做避障、路徑規劃:sbpl - ROS Wiki

3d_navigation - ROS Wiki

把Kinect點雲降維生成線激光,本質上是當成2D激光雷達,在平坦地面環境用。那就是gmapping、hector SLAM、cartographer等手段建圖,而局部路徑規劃用動態窗演算法或者Time Elastic Band(TEB)演算法都可以。

終於把坑埋上了……


你好,我最近也在做Kinect用來輔助避障的問題。能向你請教一下坐標轉換的問題嗎?給個QQ 、郵箱或者微信嗎?

2017-02-17

研究了好長一段時間的機器人避障,真的是個坑啊!很不幸,我入坑了,更不幸的是,讀這個帖子的你們也入坑了。

目前來說,有避障模塊的機器人有很多,但是沒有一家能站出來說:「我的機器人避障能力賊好」!沒有人敢這樣說。為什麼?因為機器人避障很複雜!

這裡的複雜,主要是指避障的環境很複雜。

從障礙物來區分,有動態障礙物和靜態障礙物。那麼動態靜態怎麼區分?動態障礙物裡面,又要區分,哪些是不容照成傷害的(譬如說人),哪些是不同傷害機器人的(其他機器人小車)。

從機器人路徑規劃來說,有二維圖和三維圖之分。不同維度的地圖,路徑如何生成?路徑規劃坑很多,可以參考這篇帖子知乎專欄。

從感測器來說,有超聲波,紅外,激光雷達,視覺設備(單目,雙目,RGBD等)。不同感測器,對周圍環境的感知結果不同,該如何融合避障?什麼情況下,哪種感測器的數據主要用來避障處理?

先這樣吧,有空再來繼續填坑。


推薦閱讀:

CNN那麼多的網路有什麼區別嗎?如何對CNN網路進行修改?
深度學習 ( Deep Learning ) 的 Python 包哪家強?
如何看待顧險峰《看穿機器學習(W-GAN模型)的黑箱》這篇文章?
分散式深度學習系統與傳統的分散式系統的區別?
求台大林軒田的learning from data (yaser)這本書後面的problem的答案?

TAG:機器人 | 圖像處理 | 計算機視覺 | 深度學習DeepLearning | 機器人操作平台ROS |