SLAM在機器人中的應用


SLAM在機器人中的應用​

伴隨着人工智能、機器人、無人駕駛等技術的蓬勃發展,越來越多的相關智能產品出現在了我們的日常生活中,作為底層技術基石之一的SLAM也逐漸被大家所熟知。下面通過“機器人對於人類的意義”、“機器人為什么需要SLAM技術”和“搭載SLAM算法的機器人有哪些用途”這樣三個問題,來探討SLAM在機器人中的應用。

溫馨提示

本篇文章已經收錄在我最新出版的書籍《機器人SLAM導航核心技術與實戰》,感興趣的讀者可以購買紙質書籍來進行更加深入和系統性的學習,購買鏈接如下:

一、機器人對於人類的意義

從某種意義上說,人類的軀體延展了人類的智能。互聯網技術和人工智能技術則是對人類智能的又一次延展,而機器人又對人工智能技術進行了延展,如圖1所示。這種延展性,是機器人對於人類的重要意義。

 

1  人類軀體和智能的不斷延展

人類學會使用工具,可以看成是人類軀體的第一次延展。試想一下在不會使用工具的遠古時代,人類祖先只能靠采摘樹上的水果維持生計,就連那些美味的堅果由於無法被牙齒咬開而十分遺憾地遠離了人類的食譜。當人類學會了使用簡單的工具(比如石斧、長矛、弓箭等),就可以用這些工具劈開堅硬的食物外殼、捕殺野獸以及保衛家園,這極大促進了人類的進步。再到后來學會制造和使用青銅器、鐵器、汽車、輪船、飛機等一系列更先進的工具,這大大突破了人類軀體自身所能觸及大自然的極限。

機器人的出現,可以看成是人類軀體的第二次延展。機器人相比於以往的單純工具顯然具有更高的自由度,能解決更復雜的問題。通常可以將人類的社會活動歸結為人適應自然環境並改造自然環境的過程,站在技術的角度講就是人的社會活動是人與自然環境時時刻刻發生的交互行為的總和。機器人作為人類與自然環境發生交互行為的重要工具,機器人的行為當然也就要圍繞與自然環境的交互而展開。機器人通過搭載的傳感器對環境進行感知,即傳感器是機器人系統的輸入端;機器人通過搭載的執行機構與環境進行交互,即執行機構是機器人系統的輸出端;決策作為機器人的中樞系統連接輸入端和輸出端,決策由低智能的認知層和高智能的邏輯推理層構成,常見的人臉識別、語音識別、機器人定位、機器人避障等都屬於低智能的認知層,而復雜的邏輯推理目前在機器人中還比較難實現。

而互聯網技術的普及是對人類智能的又一次延展,我們可以借助互聯網巨大的信息存儲以及檢索能力來管理我們的知識(以前靠人腦維護這些知識則需要消耗掉我們很大一部分的心智),同時互聯網提供的便捷交流渠道加速了人類認識並改造自然的進程。伴隨着互聯網技術而興起的人工智能技術則是對人類智能的進一步延展,如果將傳統互聯網技術看成是信息存儲、檢索和傳播的載體,那么人工智能技術則可以看成是對載體上的信息進行挖掘並應用新信息的一種工具。簡單點說就是傳統互聯網技術本身並不生產信息而只是起到信息傳播的作用,信息仍然由使用它的人產生;而人工智能技術則可以從人產生的信息中生成新信息,即機器能發掘出人不知道的一些知識經驗。

如果人工智能技術僅僅停留在虛擬的網絡和數據之中,那么其挖掘並利用新知識的能力很難擴展開來。可以說機器人是人工智能技術應用能力的有效延展,特別是能自主移動的機器人極大地擴展了人工智能技術的應用范圍,而基於SLAM的自主導航技術正是當下實現機器人自主移動的熱門研究領域。

二、機器人為什么需要SLAM技術

雖然我們還沒有徹底搞清楚人類智能的本質以及生命存在的意義這個終極哲學問題,但就目前取得的進展而言,人工智能技術和機器人無疑極大地增加了人與自然環境交互的可能性。讓機器人成為人的第二軀體,能極大地延展人與自然環境交互的范圍和速度。當從量變發展為質變時,就有可能讓人類擺脫自身軀體的局限而取得跨越式的發展。而這樣的機器人應該具備高度的自主性,讓機器人實現完全自主化也就成了人類一直以來的夢想。所謂完全自主化,就是在沒有外界指令的干預下,機器人能通過傳感器和執行機構與環境自動發生交互,並完成特定的任務。比如,自主與人類發生語言和情感交流,自主識別、抓取和操控物體,自主移動等。完成這些特定任務的每一種底層技術都可以認為是機器人時代的一種基礎設施,比如由語音識別、語音合成、自然語言理解等技術組成的語音交互基礎設施,由目標識別、運動規划、行為決策等技術組成的物體抓取基礎設施,由建圖、定位、路徑規划等組成的自主移動基礎設施等。

  • 自主移動 ---> SLAM導航
  • 自主抓取
  • 自主交互
  •  ……

由於我們生活在一個三維空間環境中,在環境空間中移動是機器人與環境發生交互最基本的形式之一,因此自主移動也被譽為機器人自主化的“聖杯”。換句話說,要實現機器人的完全自主化,就必須先實現機器人的自主移動。試想一下如果人類擁有一個非常聰明的腦瓜子但卻被限制在固定的地方不能移動,那么人與人之間的交流將很大程度地被阻斷,人類的分工協作、社會生產、認識並改造自然的能力也將不復存在。既然自由移動對於人類這么重要,那么作為人類第二軀體的機器人,其自主移動的重要性也就不言而喻了。

1.什么是自主移動

自主移動實質上就是解決從地點A到地點B的問題,這個問題看似簡單,實則非常復雜。當向機器人下達移動到地點B的命令后,機器人不免會問出3個頗具哲學性的問題,即“我在哪”、“我將到何處去”和“我該如何去”如圖2所示。

 

2  自主導航的本質

經過近幾十年來的研究,形成了一套有效解決機器人自主移動的方案,即SLAM導航方案。SLAM導航方案由建圖(mapping)、定位(localization)和路徑規划(path planning3大基本問題組成,這3大問題互相重疊和嵌套又組成新的問題,也就是SLAM問題、導航問題、探索問題等如圖3所示

 

3  SLAM導航方案

2.什么是SLAM

SLAM用於解決定位和建圖兩個問題,也就是常說的同時定位與建圖。要搞清楚SLAM是怎么來的,就要先了解單獨的定位和建圖這兩個子問題。

對於單獨的定位問題來說,是在已知全局地圖的條件下,通過機器人傳感器測量環境,利用測量信息與地圖之間存在的關系求解機器人在地圖中的位姿。定位問題的關鍵點是必須事先給定環境地圖,比如分揀倉庫中貨架上粘貼的二維碼路標,就是人為提供給機器人的環境地圖路標信息,機器人只需要識別二維碼並進行簡單推算就能求解出當前所處的位姿,如圖4所示

4  基於已知全局地圖的定位問題

而對於單獨的建圖問題來說,是在已知機器人全局位姿的條件下,通過機器人傳感器測量環境,利用測量地圖路標時刻的機器人位姿和測量距離與方位信息,很容易求解出觀測到的地圖路標點坐標值。建圖問題的關鍵點是必須事先給定機器人觀測時刻的全局位姿,比如裝載了GPS定位的街景繪制汽車,汽車GPS提供全局定位信息,測量設備基於GPS定位信息完成對街道建築物的測繪,如圖5所示

 

5  基於已知全局位姿的建圖問題

很顯然,這種建立在環境先驗基礎之上的定位和建圖具有很大的局限性。將機器人放置到未知環境(比如火星探測車、地下岩洞作業等場景),前面這種上帝視角般的先驗信息將不再存在,機器人將陷入一種進退兩難的局面,即所謂的“先有雞還是先有蛋”的問題。

 

6  未知環境是先建圖還是先定位

如果沒有全局地圖信息,機器人位姿將無法求解;沒有機器人位姿,地圖又將如何求解呢?於是將機器人位姿量與地圖路標點作為統一的估計量進行整體狀態估計,這是SLAM問題研究的起源。簡單點理解的話,SLAM的建圖與定位過程如圖7所示。

 

7  SLAM的建圖與定位過程

當機器人來到一個完全陌生的環境之中,機器人通過傳感器(比如激光雷達)對該位置上能觀測到的環境物體進行掃描,這樣就獲得了一個很小的局部初始地圖。接着機器人就可以在移動的過程中利用這個局部初始地圖進行定位,這樣就能獲得下一個時刻機器人的位置。當然在移動的過程中,機器人會掃描到環境中新的物體。這樣往復,機器人就可以不斷利用以往的地圖進行定位,同時在定位的基礎上對以往地圖進行更新。當然,SLAM算法的實際實現過程要比這個復雜得多,涉及到概率論、狀態估計、優化理論、感知融合等,這里就不具體展開了。

3.什么是SLAM導航

其實機器人的自主導航,就是在回答“我在哪”、“我將到何處去”和“我該如何去”這樣三個問題。僅僅依靠SLAM技術所提供的建圖和定位功能還無法實現機器人的自主移動,還需要將SLAM與導航算法以及人工規則等相結合,這種結合也就是所謂的SLAM導航。SLAM一方面為導航算法中的路徑規划提供機器人定位信息,另一方面為導航算法提供可動態更新的全局地圖。而導航算法主要解決序貫決策問題,包括障礙物度量、路徑規划、運動控制等研究課題。

 

8  SLAM導航

由於SLAM和導航是兩個相對獨立的系統,通常SLAM在導航應用中有兩種模式。第一種模式,SLAM先運行建圖模式構建好環境地圖后將地圖保存,接着載入已保存的全局地圖並啟動SLAM重定位模式提供定位信息。第二種模式,SLAM直接運行在線建圖模式,建圖過程中直接提供地圖和定位信息。后一種模式下的SLAM導航也稱為環境探索,利用已有地圖進行導航,然后導航控制機器人移動的過程又反過來更新了地圖。

三、搭載SLAM算法的機器人有哪些用途

目前以SLAM導航技術為支撐的自主移動應用領域已經十分廣泛了,涵蓋航天、軍事、特種作業、工業生產、智慧交通、消費娛樂等眾多領域。航天領域的典型應用要屬火星探測車,在遙遠的星球上自主移動無疑是一項必備的技能。軍事上借助自主移動的坦克、機器人士兵、飛機等,可以打一場無人化戰爭。在特種作業場合的自主移動機器人將發揮無可替代的作用,比如管道清洗、礦井作業、搶險救援、排爆、安防巡檢、深海勘探等。農業上的應用,比如自主栽培、自主除草、自主施肥、自主采摘等。還有自動駕駛汽車、機器人終端物流配送、全自動化工廠、機器人智慧養老、機器人餐廳、家庭服務機器人等。總之,就是用機器人去替代人類各種體力活的場合都用得到SLAM。下面結合更詳細的案例,來說明這些用途的廣泛性。

 

9  SLAM在機器人中的應用

1.導覽機器人

如果一台平板電腦被賦予了自動行走的能力,將具備巨大的應用潛力。這里將要介紹的機器人講解員、迎賓機器人、引導機器人等案例就是其中的一些典型應用,這些機器人通過SLAM技術實現自主移動,並通過搭載的可觸摸平板電腦終端以及語音交互技術與用戶進行交互。

像博物館、展覽館、陳列室這類以講解游覽為主的應用場景,機器人講解員能很好地替代人類講解員高度機械重復的工作。在博物館的入口,游客可以挑選一台空閑的機器人講解員,然后從機器人屏幕推薦的游覽路線中選擇出一條感興趣的路線,接着就可以在機器人的帶領下游覽路線中的各個展台並聽取機器人在對應展台的講解。

 

10  機器人講解員

當然在機器人講解員的基礎上添加專門的知識庫以及語音交互技術的支持,這樣的機器人就可以充當迎賓機器人。機場問詢服務、醫院導診、銀行大堂接待、公司前台等應用場景,迎賓機器人都可以充當一名辛勤的工作人員耐心提供咨詢服務以及相應引導。

 

11  迎賓機器人

如果將地圖以及貨架商品等信息錄入機器人,那么機器人就可以提供更加詳細以及貼切的查詢指引服務。比如在大型商超,顧客可以通過機器人的指引從成千上萬件商品中找到需要商品的擺放位置。如果是在圖書館的話,可以用類似的方法找到想要查閱書籍的擺放位置。引導機器人除了可以為顧客提供查詢引導服務外,還可以充當自主移動的購物車,並且是一塊具有移動屬性的天然廣告牌。

 

12  引導機器人

2.安防機器人

對於變電站、計算機機房、廠房等環境嚴酷惡劣的場景,日常的設備巡檢就可以交由機器人來完成,工作人員只需在遠程進行分析判斷即可。利用SLAM自主移動技術、高清攝像頭、機械手臂、無線通信等,就可以搭建起一台巡檢機器人。

 

13  巡檢機器人

上面提到的巡檢機器人都是與機器設備打交道,而下面這種安保機器人則主要是與人打交道。在巡檢機器人的基礎上,增加以人工智能技術為依托的各種物體識別、行為識別、輿情監測等算法,就可以讓機器人在機場、游樂園、大型活動現場等場景提供日常安保服務。安保機器人上搭載的各種傳感器(紅外夜視、氣體傳感器、火焰傳感器、金屬探測器等)以及人工智能算法,可以對各種違禁品(比如打火機、酒精、管制刀具等)、可疑包裹、異常行為等進行識別並預警。

 

14  安保機器人

由於近年來疫情在全世界的大流行,防疫機器人也越來越受重視。體溫檢測、戴口罩識別、紫外線消殺、霧化消毒、空氣凈化等防疫工作,也越來越多的由防疫機器人來分擔完成。

其實將安保機器人稍加改裝,搖身一變就成了一台防疫機器人。

 

15  防疫機器人

3.清掃機器人

相信大家一定已經對家用掃地機器人不陌生了,最早的掃地機器人僅依靠紅外線傳感器和碰撞傳感器進行亂撞式的導航,也就是走到哪撞到哪,撞到障礙物后就換一個方向繼續前進。這種早期的掃地機器人顯然非常不智能且工作效率極低,后來的一種改進方案是掃地機器人主動向天花板投射散色的紅外線,如果掃地機器人能收到反射回來的紅外光就說明掃地機器人鑽進了桌子或椅子底下,這種方式能在一定程度上保證掃地機器人不被陷入導航困境,但是還是顯得比較“智障”。那么要如何讓掃地機器人顯得不那么“智障”呢?目前主流的掃地機器人基本都采用SLAM技術進行導航,主要是激光SLAM方案和視覺SLAM方案。激光雷達一般采用低成本的單線激光雷達,視覺傳感器則包括單目、雙目和RGB-D相機。目前搭載單線激光雷達的激光SLAM導航基本是掃地機器人的標配,一些稍微高端點的掃地機器人還會在搭載單線激光雷達的基礎上搭載額外的雙目或RGB-D相機之類的進行更智能的避障輔助。

 

16  家用掃地機器人

隨着SLAM以及無人駕駛技術的逐步成熟,掃地機器人也越來越多的應用於環衛、公共場所、大型空間的清掃。環衛清掃機器人典型應用場景包括機場、火車站、大型商超、工地廠房、游樂園、公園等,傳統的環衛車需要人來駕駛,而在傳統環衛車上加裝激光雷達以及SLAM導航算法就能變成一台無人駕駛環衛車,這樣能大大節省人力提高效率。

 

17  無人駕駛環衛車

4.配送機器人

上面提到的幾種機器人大都是提供某種服務或者完成某種作業任務,這里將介紹自動運載貨物的機器人應用。用SLAM導航技術給機器人賦能后,機器人或無人車便能完成貨物的運輸和投遞任務。比較常見的應用包括送餐機器人、送快遞機器人、酒店配送機器人等。

 

18  送餐機器人、送快遞機器人、酒店配送機器人

其實,除了送餐、送快遞、送酒店物品外,具備自主導航能力的機器人還可以配送很多其他東西。比如在智能泊車停車場,泊車機器人可以將汽車自動運送到指定車位。在港口,貨運機器人可以將輪船上卸載的集裝箱運送到碼頭對應的存放區域。在工廠,AGV自主導航小車可以在各個產線之間幫忙運送各種生產原料以及成品。在養殖場,自主導航機器人可以完成飼料投喂以及農副產品收撿。

19  智能泊車機器人

 

20  港口集裝箱貨運機器人

 

21  工廠AGV自主導航小車

 

22  養殖場自動投喂機器人

當然生活中需要配送貨物的場景絕不僅以上列舉的這些,也就是說具備SLAM導航能力的配送機器人具有非常廣闊的應用范圍。

5.家庭服務機器人

所謂家庭服務機器人,簡單點理解就是“機器人保姆”。端茶遞水、掃地做飯、照看小孩、陪伴老人等,可以說服務機器人是機器人發展的終極目標之一。

23  家庭服務機器人

當然這些功能非常炫酷的家庭服務機器人目前還比較少見,而更多是以智能玩具的角色出現。比如智能逗貓機器人、游戲對戰機器人、教育陪伴機器人等。

24  智能逗貓機器人

 

25  大疆第一人稱游戲對戰機器人

 

26  教育陪伴機器人

6.農業機器人

雖然人類已經踏進了工業化的時代,但農業依然還沒有實現完全自動化。機器人(特別是搭載SLAM導航技術的自主移動機器人)在農業領域的應用,有望實現農業生產的完全自動化。比如農業采摘機器人、農葯噴灑機器人、自動割草機器人等。

 

27  農業采摘機器人

 

28  農葯噴灑機器人

29  自動割草機器人

7.無人駕駛

有很多非技術的朋友會認為無人駕駛汽車只需要依靠事先人為制作的高精地圖(比如谷歌地圖、高德地圖、百度地圖等),然后利用GPSIMU進行慣性導航,同時利用激光雷達、毫米波雷達、超聲波雷達等進行避障就能實現無人駕駛了。其實仔細研究,顯然沒有這么簡單。

如果無人駕駛汽車完全行駛在道路場景完全不變化的封閉理想環境下,也就是道路兩旁的花草樹木永遠保持原樣、馬路永遠不發生維修和擴建、馬路兩旁的建築物永遠保持原樣不隨時間更迭、馬路上最好沒有其他車輛。這樣只需要給無人駕駛汽車導入事先人為制作好的高精地圖,基於這個不變的高精地圖無人駕駛汽車就可以實現高精度定位,並基於這個高精度定位以及避障傳感器實現自主導航與避障。

但是上面這種理想的一成不變的道路場景在實際生活中是不存在的,只有在游戲世界中能保證。前幾年國內一些巨頭宣傳自己的無人駕駛汽車能在實際道路上行駛,其實都是選在場景單一不確定性極小的封閉高速公路中測試的。這些公司其實也知道,以目前的技術水平無人駕駛汽車大概還只能在封閉理想環境下運行,以規避道路上的各種不確定性。但不管怎么說,無人駕駛是未來的趨勢,這種趨勢將勢不可擋。

所以簡單點說,就是因為無人駕駛汽車所工作的道路場景具有極大的不確定性,所以無人駕駛汽車離不開SLAM技術。因為SLAM解決了“先有雞還是先有蛋”的問題,即可以應對多變復雜的路況,並實時更新環境地圖和實時定位。其實SLAM是一種解決問題的思想,並不僅僅指代某種算法。SLAM的全稱是同時定位與建圖,也就是解決未知多變環境內的定位與環境建模問題。SLAM的具體實現非常之多,經典的激光SLAM、視覺SLAM、多傳感器融合SLAM、以及各種AI技術與SLAM相結合的方案,可以說SLAM是一個非常開放的研究話題。

值得慶幸的是,目前在一些環境相對穩定的場景內無人駕駛已經得到了廣泛的應用,比如校園通勤無人駕駛巴士、景區無人駕駛觀光車、無人貨運卡車、無人駕駛公交車等。

 

30  校園通勤無人駕駛巴士

 

31  景區無人駕駛觀光車

32  無人貨運卡車

 

33  無人駕駛公交車

8.特種作業機器人

曾經有這樣一種說法,人類對地球海洋的了解可能比外太空還要少,足以見得對地球海洋的探索將具有極大的意義。由於深海是一個極具未知性、生存環境異常惡劣、人類通信技術很難訖及的地方,因此海底探索基本上要依賴水下機器人。水下機器人的自主導航與陸地機器人的自主導航既有許多相似性也有很多不同,比如SLAM導航技術在水下機器人中就不是基於激光雷達或視覺了,水下探測傳感器主要依靠超聲波傳感器(也就是常說的聲吶)。

34  水下機器人

當前還有其他許多在特殊場合應用的機器人,這里統稱為特種作業機器人。比如城市下水道檢修機器人、核廢物清理機器人、消防機器人、岩洞勘測機器人、垃圾回收機器人等。

35  城市下水道檢修機器人

 

36  福島核電站核廢物清理機器人

37  消防機器人

38  岩洞勘測機器人

 

39  垃圾回收機器人

9.軍工機器人

很多先進的科技成果都是源於軍工科技並且最早也是應用於軍工,機器人其實也不例外。根據相關資料,很多年前美國發射的火星探測車上就已經應用了SLAM技術進行自主導航和環境探索。在遙遠的外太空星球上,探測車在陌生環境的作業任務基本離不開SLAM技術。另外,還包括軍事補給運輸機器人、機器人士兵等。

40  火星探測車

 

41  軍事補給運輸機器人

 

42  機器人士兵

10.其他

上面列舉了大量SLAM在機器人中的應用案例,其實SLAM技術還在其他很多方面有廣泛的應用,比如三維建模、國土測繪、AR/VR等。

對於一個房產經紀人,可以利用手持的SLAM建圖特別快速掃描現場的房屋以得到三維戶型信息,這樣就可以快速將信息錄入系統。房屋的三維戶型信息不僅對房產經紀人有用,對裝修公司、住戶都有非常大的用處。

43  手持SLAM建圖儀

雖然借助於遙感衛星能對大致的地形地貌進行測繪,但更精細的測繪還是要借助於無人機之類的近距離測繪。通常會在無人機上搭載超遠距離多線激光雷達進行SLAM建圖,以完成對農田、湖泊、山丘等的精細測繪。

44  測繪無人機

當然AR/VR就更少不了SLAM技術的支持了,可以說SLAM技術已經在慢慢滲透到生活的方方面面。

 

45  SLAM技術在AR/VR中的應用

參考文獻

[1] 張虎,機器人SLAM導航核心技術與實戰[M]. 機械工業出版社,2022.

 

 

 

前言
編程基礎篇
第1章 ROS入門必備知識
1.1 ROS簡介 2
1.1.1 ROS的性能特色 2
1.1.2 ROS的發行版本 3
1.1.3 ROS的學習方法 3
1.2 ROS開發環境的搭建 3
1.2.1 ROS的安裝 4
1.2.2 ROS文件的組織方式 4
1.2.3 ROS網絡通信配置 5
1.2.4 集成開發工具 5
1.3 ROS系統架構 5
1.3.1 從計算圖視角理解ROS架構 6
1.3.2 從文件系統視角理解ROS架構 7
1.3.3 從開源社區視角理解ROS架構 8
1.4 ROS調試工具 8
1.4.1 命令行工具 9
1.4.2 可視化工具 9
1.5 ROS節點通信 10
1.5.1 話題通信方式 12
1.5.2 服務通信方式 15
1.5.3 動作通信方式 19
1.6 ROS的其他重要概念 25
1.7 ROS 2.0展望 28
1.8 本章小結 28
第2章 C++編程范式
2.1 C++工程的組織結構 29
2.1.1 C++工程的一般組織結構 29
2.1.2 C++工程在機器人中的組織結構 29
2.2 C++代碼的編譯方法 30
2.2.1 使用g++編譯代碼 31
2.2.2 使用make編譯代碼 32
2.2.3 使用CMake編譯代碼 32
2.3 C++編程風格指南 33
2.4 本章小結 34
第3章 OpenCV圖像處理
3.1 認識圖像數據 35
3.1.1 獲取圖像數據 35
3.1.2 訪問圖像數據 36
3.2 圖像濾波 37
3.2.1 線性濾波 37
3.2.2 非線性濾波 38
3.2.3 形態學濾波 39
3.3 圖像變換 40
3.3.1 射影變換 40
3.3.2 霍夫變換 42
3.3.3 邊緣檢測 42
3.3.4 直方圖均衡 43
3.4 圖像特征點提取 44
3.4.1 SIFT特征點 44
3.4.2 SURF特征點 50
3.4.3 ORB特征點 52
3.5 本章小結 54
硬件基礎篇
第4章 機器人傳感器
4.1 慣性測量單元 56
4.1.1 工作原理 56
4.1.2 原始數據采集 60
4.1.3 參數標定 65
4.1.4 數據濾波 73
4.1.5 姿態融合 75
4.2 激光雷達 91
4.2.1 工作原理 92
4.2.2 性能參數 94
4.2.3 數據處理 96
4.3 相機 100
4.3.1 單目相機 101
4.3.2 雙目相機 107
4.3.3 RGB-D相機 109
4.4 帶編碼器的減速電機 111
4.4.1 電機 111
4.4.2 電機驅動電路 112
4.4.3 電機控制主板 113
4.4.4 輪式里程計 117
4.5 本章小結 118
第5章 機器人主機
5.1 X86與ARM主機對比 119
5.2 ARM主機樹莓派3B+ 120
5.2.1 安裝Ubuntu MATE 18.04 120
5.2.2 安裝ROS melodic 122
5.2.3 裝機軟件與系統設置 122
5.3 ARM主機RK3399 127
5.4 ARM主機Jetson-tx2 128
5.5 分布式架構主機 129
5.5.1 ROS網絡通信 130
5.5.2 機器人程序的遠程開發 130
5.6 本章小結 131
第6章 機器人底盤
6.1 底盤運動學模型 132
6.1.1 兩輪差速模型 132
6.1.2 四輪差速模型 136
6.1.3 阿克曼模型 140
6.1.4 全向模型 144
6.1.5 其他模型 148
6.2 底盤性能指標 148
6.2.1 載重能力 148
6.2.2 動力性能 148
6.2.3 控制精度 150
6.2.4 里程計精度 150
6.3 典型機器人底盤搭建 151
6.3.1 底盤運動學模型選擇 152
6.3.2 傳感器選擇 152
6.3.3 主機選擇 153
6.4 本章小結 155
SLAM篇
第7章 SLAM中的數學基礎
7.1 SLAM發展簡史 158
7.1.1 數據關聯、收斂和一致性 160
7.1.2 SLAM的基本理論 161
7.2 SLAM中的概率理論 163
7.2.1 狀態估計問題 164
7.2.2 概率運動模型 166
7.2.3 概率觀測模型 171
7.2.4 概率圖模型 173
7.3 估計理論 182
7.3.1 估計量的性質 182
7.3.2 估計量的構建 183
7.3.3 各估計量對比 190
7.4 基於貝葉斯網絡的狀態估計 193
7.4.1 貝葉斯估計 194
7.4.2 參數化實現 196
7.4.3 非參數化實現 202
7.5 基於因子圖的狀態估計 206
7.5.1 非線性最小二乘估計 206
7.5.2 直接求解方法 206
7.5.3 優化方法 208
7.5.4 各優化方法對比 218
7.5.5 常用優化工具 219
7.6 典型SLAM算法 221
7.7 本章小結 221
第8章 激光SLAM系統
8.1 Gmapping算法 223
8.1.1 原理分析 223
8.1.2 源碼解讀 228
8.1.3 安裝與運行 233
8.2 Cartographer算法 240
8.2.1 原理分析 240
8.2.2 源碼解讀 247
8.2.3 安裝與運行 258
8.3 LOAM算法 266
8.3.1 原理分析 266
8.3.2 源碼解讀 267
8.3.3 安裝與運行 270
8.4 本章小結 270
第9章 視覺SLAM系統
9.1 ORB-SLAM2算法 274
9.1.1 原理分析 274
9.1.2 源碼解讀 310
9.1.3 安裝與運行 319
9.1.4 拓展 327
9.2 LSD-SLAM算法 329
9.2.1 原理分析 329
9.2.2 源碼解讀 334
9.2.3 安裝與運行 337
9.3 SVO算法 338
9.3.1 原理分析 338
9.3.2 源碼解讀 341
9.4 本章小結 341
第10章 其他SLAM系統
10.1 RTABMAP算法 344
10.1.1 原理分析 344
10.1.2 源碼解讀 351
10.1.3 安裝與運行 357
10.2 VINS算法 362
10.2.1 原理分析 364
10.2.2 源碼解讀 373
10.2.3 安裝與運行 376
10.3 機器學習與SLAM 379
10.3.1 機器學習 379
10.3.2 CNN-SLAM算法 411
10.3.3 DeepVO算法 413
10.4 本章小結 414
自主導航篇
第11章 自主導航中的數學基礎
11.1 自主導航 418
11.2 環境感知 420
11.2.1 實時定位 420
11.2.2 環境建模 421
11.2.3 語義理解 422
11.3 路徑規划 422
11.3.1 常見的路徑規划算法 423
11.3.2 帶約束的路徑規划算法 430
11.3.3 覆蓋的路徑規划算法 434
11.4 運動控制 435
11.4.1 基於PID的運動控制 437
11.4.2 基於MPC的運動控制 438
11.4.3 基於強化學習的運動控制 441
11.5 強化學習與自主導航 442
11.5.1 強化學習 443
11.5.2 基於強化學習的自主導航 465
11.6 本章小結 467
第12章 典型自主導航系統
12.1 ros-navigation導航系統 470
12.1.1 原理分析 470
12.1.2 源碼解讀 475
12.1.3 安裝與運行 479
12.1.4 路徑規划改進 492
12.1.5 環境探索 496
12.2 riskrrt導航系統 498
12.3 autoware導航系統 499
12.4 導航系統面臨的一些挑戰 500
12.5 本章小結 500
第13章 機器人SLAM導航綜合實戰
13.1 運行機器人上的傳感器 502
13.1.1 運行底盤的ROS驅動 503
13.1.2 運行激光雷達的ROS驅動 503
13.1.3 運行IMU的ROS驅動 504
13.1.4 運行相機的ROS驅動 504
13.1.5 運行底盤的urdf模型 505
13.1.6 傳感器一鍵啟動 506
13.2 運行SLAM建圖功能 506
13.2.1 運行激光SLAM建圖功能 507
13.2.2 運行視覺SLAM建圖功能 508
13.2.3 運行激光與視覺聯合建圖功能 508
13.3 運行自主導航 509
13.4 基於自主導航的應用 510
13.5 本章小結 511
附錄A Linux與SLAM性能優化的探討
附錄B 習題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM