前言
隨著科技得越來(lái)越發(fā)達(dá),人工智能,自動(dòng)駕駛導(dǎo)航等字眼頻頻出現(xiàn)在我們得眼前。但是目前來(lái)說自動(dòng)駕駛并沒有得到很全面得普及,還在進(jìn)行不斷的開發(fā)和測(cè)試當(dāng)中。從小就愛好車的我,對(duì)這項(xiàng)技術(shù)也很是感興趣。
偶然間在上網(wǎng)的時(shí)候買了一臺(tái)SLAM小車,能夠利用2D激光雷達(dá)進(jìn)行建圖,自動(dòng)導(dǎo)航,動(dòng)態(tài)規(guī)避等功能。今天我將我在使用這臺(tái)SLAM小車進(jìn)行動(dòng)態(tài)避障功能的實(shí)現(xiàn)記錄下來(lái)。在進(jìn)行動(dòng)態(tài)避障用到的算法是DWA和TEB算法。
簡(jiǎn)單介紹一下我用到的機(jī)器
myAGV SLAM小車
myAGV 是 Elephant Robotics 的一款自動(dòng)導(dǎo)航智能車輛。 它采用了競(jìng)賽級(jí)別的麥克納姆車輪和帶有金屬框架的全包裹設(shè)計(jì)。 內(nèi)置了一些SLAM算法來(lái)滿足建圖和導(dǎo)航方向的學(xué)習(xí)。
myAGV是以樹莓派4B為微型控制板,以u(píng)buntu為開發(fā)系統(tǒng),這也是為什么選擇它的原因,樹莓派有世界上最大的活躍社區(qū),擁有許多全世界各地的用戶案例提供借鑒。
建圖/Mapping
首先我得搭建一個(gè)場(chǎng)景,讓myAGV在我搭建的場(chǎng)景里進(jìn)行建圖,自動(dòng)導(dǎo)航,動(dòng)態(tài)避障。
這是我簡(jiǎn)易搭建的一個(gè)場(chǎng)景,一些障礙物以及一些遮擋的物品。
現(xiàn)在開始我的建圖。沒有地圖怎么進(jìn)行導(dǎo)航呢,平時(shí)開車導(dǎo)航地圖都是已經(jīng)存在的,所以我要給場(chǎng)景進(jìn)行建圖,用到的gmapping算法。
Gmapping:
gmapping是一種用于在機(jī)器人上建立環(huán)境地圖的算法。它是一種基于激光雷達(dá)數(shù)據(jù)的SLAM(Simultaneous Localization and Mapping)算法,可以在機(jī)器人運(yùn)動(dòng)時(shí)實(shí)時(shí)地構(gòu)建環(huán)境地圖,并同時(shí)確定機(jī)器人的位置。gmapping算法是ROS(Robot Operating System)機(jī)器人操作系統(tǒng)中的一個(gè)軟件包,可以通過ROS的命令行工具或者編程接口來(lái)調(diào)用和使用它。
這里跟隨Elephant Robotics 的Gitbook(有詳細(xì)的操作方式)來(lái)進(jìn)行操作。
利用激光雷達(dá)等傳感器收集周圍環(huán)境信息,然后通過計(jì)算機(jī)算法將這些信息組合成一幅環(huán)境地圖。之后我就可以在這張地圖上進(jìn)行導(dǎo)航和動(dòng)態(tài)避障等功能了。
PS:gmapping完成之后記得保存建好的地圖。
我在這調(diào)用了myagv的一種控制方法,用鍵盤進(jìn)行控制myAGV去執(zhí)行建圖。
自動(dòng)導(dǎo)航
AMCL 定位
這里要介紹一個(gè)算法ACML算法,AMCL算法是一種概率機(jī)器人定位算法,它基于蒙特卡羅方法(Monte Carlo Method)和貝葉斯濾波(Bayesian Filtering)理論,通過對(duì)機(jī)器人搭載的傳感器數(shù)據(jù)進(jìn)行處理,實(shí)時(shí)估計(jì)機(jī)器人在環(huán)境中的位置,并不斷更新機(jī)器人位置的概率分布。
AMCL算法通過以下步驟實(shí)現(xiàn)機(jī)器人的自適應(yīng)定位:
- 初始化粒子集合:首先,在機(jī)器人初始位置周圍生成一組粒子,代表機(jī)器人可能的位置。
- 運(yùn)動(dòng)模型更新:根據(jù)機(jī)器人的運(yùn)動(dòng)狀態(tài)和控制信息,更新粒子集合中每個(gè)粒子的位置和狀態(tài)信息。
- 測(cè)量模型更新:根據(jù)機(jī)器人搭載的傳感器數(shù)據(jù),計(jì)算每個(gè)粒子的權(quán)重(即代表機(jī)器人在該粒子位置時(shí)傳感器數(shù)據(jù)與實(shí)際數(shù)據(jù)的匹配程度),并通過歸一化處理,將權(quán)重轉(zhuǎn)化為概率分布。
- 重采樣:根據(jù)粒子的權(quán)重,對(duì)粒子集合進(jìn)行重采樣,從而提高定位精度并減少計(jì)算復(fù)雜度。
- 機(jī)器人定位:根據(jù)粒子集合的概率分布,確定機(jī)器人在環(huán)境中的位置,并更新機(jī)器人狀態(tài)估計(jì)信息。
通過以上步驟的循環(huán)迭代,AMCL算法可以實(shí)時(shí)地估計(jì)機(jī)器人在環(huán)境中的位置,并不斷更新機(jī)器人位置的概率分布。
navigation提供了一套框架,可以讓我們靈活的選擇global_planner、local_planner來(lái)提供路徑規(guī)劃功能,其中g(shù)lobal_planner是全局規(guī)劃器,而local_planner是局部路徑規(guī)劃器,它們之間的有些消息,例如:全局規(guī)劃的軌跡,就是在框架內(nèi)部傳遞,沒有topic可以跟蹤。總的說,ROS的導(dǎo)航模塊提供了一套機(jī)制,通過選擇不同的規(guī)劃器,可以實(shí)現(xiàn)機(jī)器人的自主導(dǎo)航。
可以看到除了規(guī)劃器,導(dǎo)航模塊還包括 cost_map ,也就是柵格地圖,并且也包括了靜態(tài)障礙物的信息,也就是說哪些區(qū)域可以通過哪些不可以通過。同時(shí)動(dòng)態(tài)障礙物信息是通過sensor topics來(lái)發(fā)布,然后實(shí)時(shí)更新cost_map來(lái)實(shí)現(xiàn)動(dòng)態(tài)避障。除了地圖,導(dǎo)航模塊還需要定位信息,是由amcl模塊來(lái)提供定位信息,如果想采用其它的定位模塊替代,只需要發(fā)布相同的topic即可。同時(shí)還要提供tf信息,也就是說不同傳感器之間的轉(zhuǎn)換關(guān)系,這在機(jī)器人中非常常見。機(jī)器人的位姿信息則由odometry來(lái)提供,包括機(jī)器人的速度、角度等,提供給局部規(guī)劃器來(lái)規(guī)劃路徑。
如果不太了解,這邊推薦去查閱ROS官方文檔。
我們來(lái)一起看看自動(dòng)導(dǎo)航的效果如何
這是實(shí)現(xiàn)了靜態(tài)的避障,能夠簡(jiǎn)單的實(shí)現(xiàn)。但是很多場(chǎng)景都有不確定的因素,比如說突然走出來(lái)一個(gè)人,這個(gè)時(shí)候站在面前,如果只依靠靜態(tài)避障的話,那么它就會(huì)直接撞上去,這個(gè)時(shí)候就需要用到另一種功能,動(dòng)態(tài)避障。
動(dòng)態(tài)避障是指機(jī)器人在移動(dòng)過程中,根據(jù)環(huán)境變化實(shí)時(shí)調(diào)整路徑,避開障礙物的能力。與靜態(tài)環(huán)境下的避障不同,動(dòng)態(tài)避障需要機(jī)器人能夠?qū)崟r(shí)感知周圍環(huán)境的變化,并做出相應(yīng)的調(diào)整,以保證機(jī)器人的安全移動(dòng),從而提高生產(chǎn)效率和安全性。動(dòng)態(tài)避障我這邊主要用到的是DWA和TEB算法。
總結(jié)
動(dòng)態(tài)避障的算法需要涉及的知識(shí)較多,本篇的文章就記錄到這里,后續(xù)我會(huì)將DWA和TEB算法寫在另一篇文章中,如果你覺得我寫的還不錯(cuò),或者有啥需要改進(jìn)的地方請(qǐng)?jiān)谙路搅粞浴?/p>
這里在寫一下對(duì)myAGV的使用下來(lái)的感受,首先呢它的外觀是很好的,它能夠搭載機(jī)械臂作為一個(gè)復(fù)合機(jī)器人去實(shí)現(xiàn)很多任務(wù)。我買他的初衷主要是為了學(xué)習(xí)SLAM小車的一些知識(shí),實(shí)現(xiàn)自主導(dǎo)航等依靠雷達(dá)的功能,它搭載這樹莓派4B全球最大的硬件開發(fā)社區(qū),有很多的資源提供,這也是選擇它的理由。
除此之外,它也不是完美的,它的電池消耗的很快,最長(zhǎng)待機(jī)時(shí)間是2小時(shí),如果使用的頻率較高的話,一小時(shí)左右就快沒電了。這是使用下來(lái)我覺得需要提升的地方,后續(xù)也繼續(xù)更新使用myAGV的感受。
審核編輯:湯梓紅
-
機(jī)器人
+關(guān)注
關(guān)注
213文章
29463瀏覽量
211476 -
人工智能
+關(guān)注
關(guān)注
1804文章
48677瀏覽量
246314 -
SLAM
+關(guān)注
關(guān)注
24文章
435瀏覽量
32308 -
AGV
+關(guān)注
關(guān)注
27文章
1430瀏覽量
41975 -
自動(dòng)導(dǎo)航
+關(guān)注
關(guān)注
0文章
7瀏覽量
2028 -
大象機(jī)器人
+關(guān)注
關(guān)注
0文章
85瀏覽量
67
發(fā)布評(píng)論請(qǐng)先 登錄
紅外避障是數(shù)碼管停止動(dòng)態(tài)顯示怎么解決
循跡避障小車
有感FOC算法學(xué)習(xí)與實(shí)現(xiàn)總結(jié)
基于SLAM的移動(dòng)機(jī)器人設(shè)計(jì)
樹莓派ROS stm32 slam Freertos VFH+A避障路徑如何規(guī)劃?
移動(dòng)機(jī)器人動(dòng)態(tài)避障算法
紅外避障小車設(shè)計(jì)論文
如何解決機(jī)器人“避障”的問題
智能尋跡避障小車避障系統(tǒng)設(shè)計(jì)的資料說明

myAgv的slam算法學(xué)習(xí)以及動(dòng)態(tài)避障下篇

Jetson Nano集成探索大象機(jī)器人myAGV上的 SLAM 算法!

評(píng)論