展會信息港展會大全

AI&機器人需要掌握哪些關(guān)鍵技術(shù)
來源:互聯(lián)網(wǎng)   發(fā)布日期:2020-12-14 13:26:56   瀏覽:16552次  

導(dǎo)讀:主要以機器人載體為例,分享涉及到的一些關(guān)鍵技術(shù)。 首先看一個最普通的機器人的問題:從A點導(dǎo)航到B點,模擬一個室外機器人或者室內(nèi)機器人運動的整個過程。 在運動過程中,就會涉及到幾方面的問題:這個機器人必須要知道我在哪?其次我要去哪?這過程我要怎...

主要以機器人載體為例,分享涉及到的一些關(guān)鍵技術(shù)。

首先看一個最普通的機器人的問題:從A點導(dǎo)航到B點,模擬一個室外機器人或者室內(nèi)機器人運動的整個過程。

在運動過程中,就會涉及到幾方面的問題:這個機器人必須要知道我在哪?其次我要去哪?這過程我要怎么去?

“我在哪?我要去哪兒? ” 這整個過程中涉及的技術(shù)就有感知、定位、建圖,機器人首先要感知外部的環(huán)境,來知道自己的位置,即感知定位,其次就是構(gòu)建一個環(huán)境的地圖。

例如:從A點到B點,要規(guī)劃出一條無障礙物、相對來說最優(yōu)的軌跡,讓機器人來執(zhí)行,具體怎么執(zhí)行,是整個的控制的過程。

這個控制過程,就涵蓋了整個機器人領(lǐng)域大部分的技術(shù)模塊。

首先最開始就是感知,如人一樣進入一個新的環(huán)境中,要用眼去感知,看到外面的世界,機器人也是一樣,通過身上的傳感器,比如激光雷達、攝像頭,用來感知外部的環(huán)境,識別一部分東西。

感知的一些信息會傳達至定位建圖的模塊,也就是SLAM模塊。不論是激光雷達還是攝像頭、紅外傳感器,根據(jù)這些傳感器信息,獲得機器人當前的一些位置,同時構(gòu)建一個環(huán)境地圖,或者是已知一個環(huán)境地圖,對這個環(huán)境地圖進行定位。

通過機器人的定位信息,規(guī)劃一個過程,比如說規(guī)劃一個導(dǎo)航,這個導(dǎo)航肯定要依賴于機器人定位的信息或激光雷達等信息,規(guī)劃出這條路徑以后,要執(zhí)行這條路徑,將路徑發(fā)至我們的控制模塊,控制模塊跟蹤這條路徑,從而達到最后的效果。

這就是機器人,特別是移動機器人涉及到的相關(guān)的技術(shù)。

對于一個臂式機器人或足式機器人,也是類似。但是對于臂式機器人,如機械臂,定位和建圖這塊可能是沒有的,但是需要感知。感知之后,將信息傳達給運動規(guī)劃,進而進行運動控制。

下面我就以以下幾個模塊及相應(yīng)的關(guān)鍵算法和技術(shù),做簡單的介紹。

感知模塊

感知模塊是干什么的?舉一個運用場景最多的、簡單的例子,無人駕駛汽車的感知是非常重要的。感知是一個載體,作為識別環(huán)境的第一步,若是沒有這一步,那么就沒法準確地去做規(guī)劃控制。

作為無人駕駛汽車,感知可以就分為檢測、分類、跟蹤、語義分割四塊。

檢測即分布路面的情況,如交通燈等,找出物體在環(huán)境中的位置;

然后進行分類,明確自己檢測的東西是什么,比如說警示牌、限速牌等等;

跟蹤,隨著實踐的推移,要觀察移動物體,要對前面或者說附近的車輛進行跟蹤,注意移動位置;

語義分割,感知圖像中有不同的元素,要知曉每個元素是做什么的,與語義類別進行匹配,如道路、汽車、天空等等。

一般通過什么來感知呢?就是攝像頭,雷達,如激動雷達,車上的倒車雷達等等。

每一個傳感器都有不同的作用。

若是想要執(zhí)行感知模塊的四大版塊,涉及什么樣的算法呢?

傳統(tǒng)算法,已有最近流行的深度學(xué)習(xí)算法,現(xiàn)在比較流行的,在無人駕駛領(lǐng)域等人工智能領(lǐng)域,常用的網(wǎng)絡(luò)結(jié)構(gòu)有R-CNN、YOLO、SSD等等,比如說舉例無人駕駛汽車感知模塊,經(jīng)過YOLO網(wǎng)絡(luò)進行物體的跟蹤,車道線探測等等。

這涉及很多深度學(xué)習(xí)算法,還有感知常用的、傳統(tǒng)的機器學(xué)習(xí)算法。

看一下另一個機器人機械臂。機械臂的感知模塊與無人駕駛汽車、機器人還有所不同,他的感知大致是相同的,比如說完成機械臂抓取的任務(wù)。

這是最常見的一個任務(wù),它的功能有以下幾塊:相機標定,物體識別、位姿估計。

為什么要進行相機標定呢?機械臂在抓取時,物體是在攝像頭下面的一個位姿,要完成抓取任務(wù),還要完成機坐標系等,它要通過一系列坐標系的轉(zhuǎn)化,來完成相機內(nèi)外參的標定。

還有與無人駕駛常用的類似,即物體識別,要識別這個物體,進行分割,然后完成物體的抓取任務(wù)。

最重要一個模塊,就是位姿估計,我要抓取物體,獲取物體在攝像頭之內(nèi)的位姿,就一定要探測出當前的一個位姿,講位姿提供給規(guī)劃模塊,才能在此基礎(chǔ)上進行抓齲

可以說一下這幾塊的任務(wù),比如說相機標定,在機械臂抓取過程中,也是非常關(guān)鍵的環(huán)節(jié)。

相機安裝的位置可能有兩種:一種是固定在機械臂的外部,或者是攝像頭固定在機械臂的手上,一個是眼在手外,一個是眼在手上。標定的方式是類似的,都是通過一系列坐標系的轉(zhuǎn)換,來確定相機的外參和內(nèi)參等等。

位姿估計在機械臂抓取過程中是非常重要的,目前常用的有2類算法。

一類是基于傳統(tǒng)的,首先將物體進行分割,分割后是一系列的點云信息,將分割出的點云信息進行ICP匹配,匹配獲得物體的位姿。

另一種是利用神經(jīng)網(wǎng)絡(luò),不經(jīng)過分割,直接進行位姿估計。

這里的位姿估計指的是6D的位姿估計,因為抓取需要獲得它的SYZ,姿態(tài)信息、平移的信息都要獲得。6D的位姿估計,在目前的3D視覺中,也是研究的熱點。

下面呢就是定位與建圖模塊,這就主要針對移動機器人和無人駕駛這一塊來說的,機械臂可能不涉及這一塊。

定位與建圖,做SLAM的同學(xué)可能會非常熟悉,這是定位與建圖整體的框架,主要分為前端、后端、回環(huán)、建圖。

前端和后端也分為很多的模塊,比如說使用的傳感器,是目前主要的分類方法,比如說以激光為主的SLAM和視覺為主的SLAM,這是一大類分類方法。

還有一種,類似后端,是采用濾波方式還是優(yōu)化方式,分為基于濾波的,或者是基于優(yōu)化的,現(xiàn)在大家主要說基于激光的,基于視覺的。

激光SLAM主要是以激光為主,肯定不是用一種傳感器,多傳感器融合進而獲得定位的信息,融合最常見的就是IMU、里程計、GPS,視覺SLAM以視覺為主,也是融合IMU、里程計、GPS等多種傳感器。

可以看一下激光SLAM涉及到的一些關(guān)鍵技術(shù),在SLAM領(lǐng)域研究比較熱,有很多經(jīng)典的天然框架,這些框架非常值得大家去學(xué)習(xí)。

激光SLAM中比較經(jīng)典的開源框架,Gampping是比較早的,主要是2D的建圖,這主要是基于濾波的。

基于粒子濾波的SLAM,現(xiàn)在在3D場景下比較常用的是LOAM系列,在室外的機器人或者無人駕駛汽車中,LOAM使用比較多。

LOAM系列目前延伸出很多,如F-LOAM、A-LOAM。

LOAM主要針對的是3D的點位信息,室外場景的激光SLAM框架。

還有一個非常經(jīng)典的就是Gartographer,這個如果做室內(nèi)機器人,包括做室外產(chǎn)品的,會都比較熟悉。

做激光的,這是谷歌開源的非常經(jīng)典的SLAM框架,有2D版本,也有3D版本。

就室內(nèi)的來說,Gartographer是目前性能比較好的框架,目前3D版本在室外的場景,算是還可以。

Gartographer的整個的回環(huán)、前、后端,都是比較全的,LOMO最原始的,只有一個前端,當然,在后來的工作中也添加了很多。

關(guān)于在激光SLAM中,前端和后端是干什么的呢?前端激光里程計,目前方法研究的也很多,比如有基于直接匹配的,這里有兩大類,ICP和NDT。

ICP就是兩頭點評之間進行匹配,求出兩頭點評之間的旋轉(zhuǎn)位姿,一個R、一個T。ICP又分很多種,一種是點到點的ICP匹配,這種的效率比較低一些。還有就是點到線、點到面的PLICP等等。

NDT系列整體性能要比ICP整體要好一些,把空間劃分為一個個的柵格,然后在柵格中求一個高斯分布,兩個點中求一個概率分布,求最大值來進行匹配。因為劃分為高斯分布,比點到點的效率要高,匹配的效果也要更好一些。

前端還有基于特征的,LOAM系列是基于特征的,會在點之中提取一些邊緣,提取一些面信息。會根據(jù)這些信息,求出一個函數(shù),進行點云和點云之間的匹配。

還有一些Cartographer是基于柵格的,Cartographer前端是做出了一個map的匹配,就會建立一系列的子圖,叫做Submap。

每一坨點云都會和Submap進行匹配,找到柵格的最大值,當前在Submap中當前的位姿,通過Submap的匹配獲得當前的位姿。當然,這里面也經(jīng)過了siris優(yōu)化。

還有一些,是比較前沿的,比如基于語義的里程計,這里不做詳細分析。

后端,剛才也說了,有基于濾波器的,也有基于非線性優(yōu)化的,目前主流算法都以基于優(yōu)化為主,因為優(yōu)化性能要強于濾波器的,現(xiàn)在也有一些因子圖優(yōu)化,這是用得比較多的。

還有就是回環(huán)檢測,有初始相對位姿,如在室外場景下有GPS,如何能夠精確導(dǎo)航,就可以基于這個位姿做一個回環(huán),這樣會比較簡單,直接拿當前的位姿和逆時針的點位進行ICP或者NDP的匹配,來獲得回環(huán)的約束。

如果無初始相對位姿,沒有一個很好的GPS來提供一個初始位姿,要找一個與歷史位姿相近的特征,有非學(xué)習(xí)的方法和基于學(xué)習(xí)的方法。非學(xué)習(xí)的方法,比如說scan context,有一款是可以獲得兩個點云之間的像素度,從而進行一個打分,當然,還有一個方法,比如說特征直方圖等。

下面是視覺SLAM經(jīng)典的開源框架

對于視覺,就研究的更多一些,它的經(jīng)典的天然框架只會更多,比如說經(jīng)典的ORB-SLAM、SVO、DSO,這都是純視覺。主要以demo為主,額外還有VIO系列。

視覺經(jīng)常會和IMU來融合,因為純視覺往往會受環(huán)境影響大,加上IMU,會得到融合得比較好的估計。

經(jīng)典得還有VINS系列、OKVIS等,這是通過IMU的微積分,來獲得幀與幀相關(guān)的約束,約束加入后端。

關(guān)于視覺的前端視覺里程計,主要有特征匹配和直接法。特征匹配可以直接提取特征信息,直接法就是基于光流,做視覺SLAM的同學(xué)應(yīng)該會比較熟悉,后端也是基于優(yōu)化的方法用得比較多。

對于視覺來說,它的回環(huán)激光就不太一樣,采集的圖像比較豐富,主要基于一個SLAM模型這一塊比較多一些,這是視覺SLAM。

之后就是定位與建圖中的建圖,我們定位的建圖有以下幾種:2D柵格地圖、2D拓撲地圖,3D點云地圖、3D網(wǎng)格地圖。

建圖主要是為了給后續(xù)的導(dǎo)航來使用,只要定位有了,建圖在SLAM中是非常簡單的事情,把相關(guān)的景觀特征組成一個地圖。

對機器人來說,比較重要的是Planning規(guī)劃模塊。從框架來看,大致也可以劃分為前端和后端,前端就是做一個globe blame全局的規(guī)劃,這個全局主要是搜索一個初始的路徑,這會遇到一些路徑搜索的算法。

后端是干嘛的呢?對著路徑進行再處理,得到一個可以下發(fā)給控制模塊的指令,也可以劃分為全局和局部,當然,現(xiàn)在也有一些基于端和端的規(guī)劃模塊,但在使用中,這種全局和局部的方式,用得會更多一些,這是一個規(guī)劃模塊的框架。

規(guī)劃模塊涉及的算法,比如說基于搜索的規(guī)劃算法,這是一大類,這種基于搜索的算法有很多,比較經(jīng)典的就是Dijkstra、Astar,Dijkstra擴展的效率可以了解要比A*低很多,因為它是無目的性的拓展,而Astar加入了啟發(fā)函數(shù),因此說,Astar是目前比較主流的一種搜索算法。

當然,Astar也會延伸出很多其他的,基于Astar系列的改進,如Dstar是基于動態(tài)障礙物,來進行局部的規(guī)劃。

最近幾年,還提出了JPS的算法,即是跳點搜索。它的效率要比Astar要更高一些,因為Astar在擴展的時候,擴展出很多無用的商品,JPS對擴展的柵格進行一系列的優(yōu)化。

全局規(guī)劃算法,除了基于搜索,還有基于采樣的規(guī)劃算法,其中包括兩大類:PRM(概率路線圖)和RRT(快速搜索隨機數(shù))系列。

下面這張圖就是RRT快速搜索的過程,它是建立一個隨機數(shù),在空間中隨機采樣,來找到最終的目標。

基于RRT,有一系列的改進。比如說Bi-RRT和RRT-connect,會從兩端進行搜索,再一個就是考慮RRT的最優(yōu)性,會有一個RRT*、InformedRRT*,這都是衍生出來的,對RRT的改進算法。

再進一步說,全局還有考慮運動學(xué)約束的規(guī)劃算法。為什么要考慮運動學(xué)約束?A*規(guī)劃出的算法其實是一些拓展的柵格,是一些折線,不滿足機器人實際的運動學(xué)約束,在這個情況下就需要進一步的考慮,比如說混合A星,進行拓展的時候,會基于運動學(xué)的模型進行拓展,這樣就可以搜索出接近于可執(zhí)行的軌跡,給后面的局部優(yōu)化,帶來更小的壓力。

還有一些,StateLatticePlanner,也是基于考慮機器人運動學(xué),還有一個就是RRT、KinodynamiceRRT*,也是考慮RRT的相關(guān)算法。

對于局部規(guī)劃算法來說,局部更多的是進行內(nèi)部環(huán)境的優(yōu)化,對于全局不滿足各種約束的路徑,進行局部的優(yōu)化。優(yōu)化方法,這里會涉及到基于硬約束和軟約束。

常見的在ROS中經(jīng)?匆姷木植績(yōu)化算法,有DWA、TEB、MPC等,這些很多的思路都是基于優(yōu)化的思想,如TEB是對前端的軌跡進行拉伸,拉伸后使他出來滿足一個約束。

MPC也會做一個關(guān)于硬約束的優(yōu)化,來解決優(yōu)化問題,求出符合約束的路徑。

舉一個規(guī)劃算法的例子:ROS集成室內(nèi)移動機器人的導(dǎo)航框架。這里分為兩極,global planner \local planner ,全局的規(guī)劃和局部的規(guī)劃。

考慮到全局規(guī)劃用于global costmap,local planner用的是local costmap,當然這里還涉及輸入信息、定位信息和傳感器信息等等。當然,規(guī)劃失敗的時候,也會考慮recovery behaviors,這就是它的兩層結(jié)構(gòu)。

在global planner里可以用A* ,RRT等,在local planner里可以用基于優(yōu)化的算法。

對于機械臂來說,它的規(guī)劃算法,基本算法與A*、RRT等是類似的,它與移動機器人還是不同的。機械臂是在一個高維空間規(guī)劃,它的規(guī)劃顯得要更加得困難。它基于優(yōu)化得算法會用得更廣一些,比如說OMPL規(guī)劃庫,這個規(guī)劃庫主要集成得RRT為代表得算法,因為A* 在高維空間中,搜索得壓力會更大一些,RRT在這里得效率會更高一些。

還有一些常用得規(guī)劃算法,如CHOMP、STOMP等。這是在機械臂中常用得一些算法,它的思路與移動機器人的思路是相似的,都是基于優(yōu)化,從而求出一條可執(zhí)行的軌跡。

下面就是控制模塊,控制模塊是在規(guī)劃出來的軌跡中進行跟蹤,控制模塊涉及到機器人控制學(xué)的機器模型,比如說差速機器人運動學(xué)模型,是比較常用,也是比較簡單的。

在室外,就是使用的汽車運動學(xué)模型,因為前后有轉(zhuǎn)向,有轉(zhuǎn)向角,常用的一些控制算法有PID、LQR等。

在這里主要說一下LQR控制算法,也叫線性二次調(diào)節(jié)器,比如說這是對汽車紅色向的控制。它會建立出汽車這樣一個紅色向的模型,運動學(xué)或者是動力學(xué)模型,寫成一個線性形式,然后優(yōu)化代價,代價里有一個跟蹤的指標,還有一個控制的指,,最終求出一個反向控制率,來進行一個反饋的控制。

常用的MPC控制算法,MPC是一個滾動優(yōu)化的策略,基于一個機器人預(yù)測模型,會往前預(yù)測出這么一個N部,針對這個N部進行滾動優(yōu)化,每次優(yōu)化。

因為控制器求出這個N部,當然控制時域與預(yù)測時域不一定相等,這個U會第一步發(fā)給對象,來做一個反饋的控制,這個過程不停地去迭代,一直不停地去滾動優(yōu)化。

通過這個預(yù)測輸出,這種控制算法目前在移動機器人中用得比較多,特別是在在機械臂地滾動優(yōu)化部分。


贊助本站

相關(guān)內(nèi)容
AiLab云推薦
推薦內(nèi)容
展開

熱門欄目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能實驗室 版權(quán)所有    關(guān)于我們 | 聯(lián)系我們 | 廣告服務(wù) | 公司動態(tài) | 免責(zé)聲明 | 隱私條款 | 工作機會 | 展會港