前言
隨著科技得越來越發(fā)達,人工智能,自動駕駛導航等字眼頻頻出現(xiàn)在我們得眼前。但是目前來說自動駕駛并沒有得到很全面得普及,還在進行不斷的開發(fā)和測試當中。從小就愛好車的我,對這項技術(shù)也很是感興趣。
偶然間在上網(wǎng)的時候買了一臺SLAM小車,能夠利用2D激光雷達進行建圖,自動導航,動態(tài)規(guī)避等功能。今天我將我在使用這臺SLAM小車進行動態(tài)避障功能的實現(xiàn)記錄下來。在進行動態(tài)避障用到的算法是DWA和TEB算法。
簡單介紹一下我用到的機器
myAGV SLAM小車
myAGV 是 Elephant Robotics 的一款自動導航智能車輛。 它采用了競賽級別的麥克納姆車輪和帶有金屬框架的全包裹設(shè)計。 內(nèi)置了一些SLAM算法來滿足建圖和導航方向的學習。

myAGV是以樹莓派4B為微型控制板,以ubuntu為開發(fā)系統(tǒng),這也是為什么選擇它的原因,樹莓派有世界上最大的活躍社區(qū),擁有許多全世界各地的用戶案例提供借鑒。
建圖/Mapping
首先我得搭建一個場景,讓myAGV在我搭建的場景里進行建圖,自動導航,動態(tài)避障。

這是我簡易搭建的一個場景,一些障礙物以及一些遮擋的物品。
現(xiàn)在開始我的建圖。沒有地圖怎么進行導航呢,平時開車導航地圖都是已經(jīng)存在的,所以我要給場景進行建圖,用到的gmapping算法。
Gmapping:
gmapping是一種用于在機器人上建立環(huán)境地圖的算法。它是一種基于激光雷達數(shù)據(jù)的SLAM(Simultaneous Localization and Mapping)算法,可以在機器人運動時實時地構(gòu)建環(huán)境地圖,并同時確定機器人的位置。gmapping算法是ROS(Robot Operating System)機器人操作系統(tǒng)中的一個軟件包,可以通過ROS的命令行工具或者編程接口來調(diào)用和使用它。

這里跟隨Elephant Robotics 的Gitbook(有詳細的操作方式)來進行操作。

利用激光雷達等傳感器收集周圍環(huán)境信息,然后通過計算機算法將這些信息組合成一幅環(huán)境地圖。之后我就可以在這張地圖上進行導航和動態(tài)避障等功能了。
PS:gmapping完成之后記得保存建好的地圖。

我在這調(diào)用了myagv的一種控制方法,用鍵盤進行控制myAGV去執(zhí)行建圖。

自動導航
AMCL 定位
這里要介紹一個算法ACML算法,AMCL算法是一種概率機器人定位算法,它基于蒙特卡羅方法(Monte Carlo Method)和貝葉斯濾波(Bayesian Filtering)理論,通過對機器人搭載的傳感器數(shù)據(jù)進行處理,實時估計機器人在環(huán)境中的位置,并不斷更新機器人位置的概率分布。
AMCL算法通過以下步驟實現(xiàn)機器人的自適應(yīng)定位:
- 初始化粒子集合:首先,在機器人初始位置周圍生成一組粒子,代表機器人可能的位置。
- 運動模型更新:根據(jù)機器人的運動狀態(tài)和控制信息,更新粒子集合中每個粒子的位置和狀態(tài)信息。
- 測量模型更新:根據(jù)機器人搭載的傳感器數(shù)據(jù),計算每個粒子的權(quán)重(即代表機器人在該粒子位置時傳感器數(shù)據(jù)與實際數(shù)據(jù)的匹配程度),并通過歸一化處理,將權(quán)重轉(zhuǎn)化為概率分布。
- 重采樣:根據(jù)粒子的權(quán)重,對粒子集合進行重采樣,從而提高定位精度并減少計算復(fù)雜度。
- 機器人定位:根據(jù)粒子集合的概率分布,確定機器人在環(huán)境中的位置,并更新機器人狀態(tài)估計信息。
通過以上步驟的循環(huán)迭代,AMCL算法可以實時地估計機器人在環(huán)境中的位置,并不斷更新機器人位置的概率分布。

navigation提供了一套框架,可以讓我們靈活的選擇global_planner、local_planner來提供路徑規(guī)劃功能,其中g(shù)lobal_planner是全局規(guī)劃器,而local_planner是局部路徑規(guī)劃器,它們之間的有些消息,例如:全局規(guī)劃的軌跡,就是在框架內(nèi)部傳遞,沒有topic可以跟蹤??偟恼f,ROS的導航模塊提供了一套機制,通過選擇不同的規(guī)劃器,可以實現(xiàn)機器人的自主導航。

可以看到除了規(guī)劃器,導航模塊還包括 cost_map ,也就是柵格地圖,并且也包括了靜態(tài)障礙物的信息,也就是說哪些區(qū)域可以通過哪些不可以通過。同時動態(tài)障礙物信息是通過sensor topics來發(fā)布,然后實時更新cost_map來實現(xiàn)動態(tài)避障。除了地圖,導航模塊還需要定位信息,是由amcl模塊來提供定位信息,如果想采用其它的定位模塊替代,只需要發(fā)布相同的topic即可。同時還要提供tf信息,也就是說不同傳感器之間的轉(zhuǎn)換關(guān)系,這在機器人中非常常見。機器人的位姿信息則由odometry來提供,包括機器人的速度、角度等,提供給局部規(guī)劃器來規(guī)劃路徑。
如果不太了解,這邊推薦去查閱ROS官方文檔。
我們來一起看看自動導航的效果如何

這是實現(xiàn)了靜態(tài)的避障,能夠簡單的實現(xiàn)。但是很多場景都有不確定的因素,比如說突然走出來一個人,這個時候站在面前,如果只依靠靜態(tài)避障的話,那么它就會直接撞上去,這個時候就需要用到另一種功能,動態(tài)避障。
動態(tài)避障是指機器人在移動過程中,根據(jù)環(huán)境變化實時調(diào)整路徑,避開障礙物的能力。與靜態(tài)環(huán)境下的避障不同,動態(tài)避障需要機器人能夠?qū)崟r感知周圍環(huán)境的變化,并做出相應(yīng)的調(diào)整,以保證機器人的安全移動,從而提高生產(chǎn)效率和安全性。動態(tài)避障我這邊主要用到的是DWA和TEB算法。
總結(jié)
動態(tài)避障的算法需要涉及的知識較多,本篇的文章就記錄到這里,后續(xù)我會將DWA和TEB算法寫在另一篇文章中,如果你覺得我寫的還不錯,或者有啥需要改進的地方請在下方留言。
這里在寫一下對myAGV的使用下來的感受,首先呢它的外觀是很好的,它能夠搭載機械臂作為一個復(fù)合機器人去實現(xiàn)很多任務(wù)。我買他的初衷主要是為了學習SLAM小車的一些知識,實現(xiàn)自主導航等依靠雷達的功能,它搭載這樹莓派4B全球最大的硬件開發(fā)社區(qū),有很多的資源提供,這也是選擇它的理由。
除此之外,它也不是完美的,它的電池消耗的很快,最長待機時間是2小時,如果使用的頻率較高的話,一小時左右就快沒電了。這是使用下來我覺得需要提升的地方,后續(xù)也繼續(xù)更新使用myAGV的感受。
審核編輯:湯梓紅
-
機器人
+關(guān)注
關(guān)注
213文章
31079瀏覽量
222271 -
人工智能
+關(guān)注
關(guān)注
1817文章
50098瀏覽量
265404 -
SLAM
+關(guān)注
關(guān)注
24文章
457瀏覽量
33329 -
AGV
+關(guān)注
關(guān)注
28文章
1554瀏覽量
43671 -
自動導航
+關(guān)注
關(guān)注
0文章
7瀏覽量
2094 -
大象機器人
+關(guān)注
關(guān)注
0文章
86瀏覽量
376
發(fā)布評論請先 登錄
有感FOC算法學習與實現(xiàn)總結(jié)
基于SLAM的移動機器人設(shè)計
樹莓派ROS stm32 slam Freertos VFH+A避障路徑如何規(guī)劃?
移動機器人動態(tài)避障算法
如何解決機器人“避障”的問題
智能尋跡避障小車避障系統(tǒng)設(shè)計的資料說明
myAgv的slam算法學習以及動態(tài)避障下篇
Jetson Nano集成探索大象機器人myAGV上的 SLAM 算法!
myAgv的slam算法學習以及動態(tài)避障
評論