五月婷婷欧美视频_少女频道在线观看高清_欧美日韩视频一区二区三区_7777精品伊久久久大香线蕉语言

首頁 > 機器人資訊 > 如何設計一款基于ROS的移動機器人?

如何設計一款基于ROS的移動機器人?

日期:2018-03-29   人氣:  來源:互聯網
簡介:最近幾年各種移動機器人開始涌現出來,不論是輪式的還是履帶式的,如何讓移動機器人移動都是最核心的工作。要讓機器人實現環境感知、機械臂控制、導航規劃等一系列功能,就需要操作系統的支持,而ROS就是最重要的軟件平臺之一,它在科研領域已經有廣泛的應……

最近幾年各種移動機器人開始涌現出來,不論是輪式的還是履帶式的,如何讓移動機器人移動都是最核心的工作。要讓機器人實現環境感知、機械臂控制、導航規劃等一系列功能,就需要操作系統的支持,而ROS就是最重要的軟件平臺之一,它在科研領域已經有廣泛的應用。

不過有關ROS的書籍并不多,國內可供的學習社區就更少了。本期硬創公開課就帶大家了解一下如何利用ROS來設計移動機器人。

分享嘉賓李金榜:EAI科技創始人兼CEO,畢業于北京理工大學,碩士學位。曾在網易、雪球、騰訊技術部有多年linux底層技術研發經驗。2015年聯合創立EAI科技,負責SLAM算法研發及相關定位導航軟件產品開發。EAI科技,專注機器人移動,提供消費級高性能激光雷達、slam算法和機器人移動平臺。

移動機器人的三個部分

所謂的智能移動,是指機器人能根據周圍的環境變化,自主地規劃路線、避障,到達目標地。

機器人是模擬人的各種行為,想象一下,人走動需要哪些器官的配合?首先用眼睛觀察周圍環境,然后用腦去分析如何走才能到達目標地,接著用腿走過去,周而復始,直到到達目標地址為至。機器人如果要實現智能移動,也需要眼、腦和腿這三部分的緊密配合。

腿是機器人移動的基礎。機器人的腿不局限于類人或類動物的腿,也可以是輪子、履帶等,能讓機器人移動起來的部件,都可以籠統地稱為腿。

類人的腿式優點是:既可以在復雜路況(比如爬樓梯)下移動、也可以更形象地模仿人的動作(比如跳舞),缺點是:結構和控制單元比較復雜、造價高、移動慢等。

所以大部分移動的機器人都是輪式機器人,其優勢在于輪子設計簡單、成本低、移動快。而輪式的也分為多種:兩輪平衡車、三輪、四輪和多輪等等。目前最經濟實用的是兩個主動輪+一個萬向輪。

眼睛

機器人的眼睛其實就是一個傳感器。它的作用是觀察周圍的環境,適合做機器人眼睛的有激光雷達、視覺(深度相機、單雙相機)、輔助(超聲波測距、紅外測距)等。

機器人的大腦就負責接收眼睛傳輸的數據,實時計算出路線,指揮腿去移動。

其實就是要把看到的東西轉換為數據語言。針對如何描述數據,如何實現處理邏輯等一系列問題。ROS系統給我們提供一個很好的開發框架。

ROS簡介

ROS是建立在linux之上的操作系統。它的前身是斯坦福人工智能實驗室為了支持斯坦福智能機器人而建立項目,主要可以提供一些標準操作系統服務,例如硬件抽象,底層設備控制,常用功能實現,進程間消息以及數據包管理。

ROS是基于一種圖狀架構,從而不同節點的進程能接受、發布、聚合各種信息(例如傳感,控制,狀態,規劃等等)。目前ROS主要支持Ubuntu操作系統。

有人問ROS能否裝到虛擬機里,一般來說是可以的,但是我們建議裝個雙系統,用Ubuntu專門跑ROS。

實際上,ROS可以分成兩層,低層是上面描述的操作系統層,高層則是廣大用戶群貢獻的實現不同功能的各種軟件包,例如定位繪圖,行動規劃,感知,模擬等等。ROS(低層)使用BSD許可證,所有是開源軟件,并能免費用于研究和商業用途,而高層的用戶提供的包則使用很多種不同的許可證。

用ROS實現機器人的移動

對于二維空間,使用線速度+角速度可以實現輪式機器的隨意移動。

線速度:描述機器人前后移動的速度大小

角速度:描述機器人轉動的角速度大小

所以控制機器人移動主要是要把線速度角速度轉換為左右輪的速度大小,然后,通過輪子直徑和輪間距,可以把線速度和角速度轉化為左輪和右輪的速度大小。

這里有一個關鍵問題就是編碼器的選擇和pid的調速。

編碼器的選擇:一般編碼器和輪子是在一個軸上,目前來說,速度在0.7m/s以下的話,編碼器選600鍵到1200鍵之間都ok。不過需要注意的是,編碼器最好用雙線的,A、B兩線輸出,A向和B向輸出相差90度,這樣可以防抖動。防抖動就是可以在之后里程計算時可以更準確。

左輪和右輪的速度大小的控制,通過輪子編碼器反饋,通過PID實時調整電機的PMW來實現。實時計算出小車的里程計(odom),得到小車移動位置的變化。

計算車的位置變化是通過編碼器來計算的,如果輪子打滑等情況,庫卡機器人,那么計算的變化和實際的變化可能不同。要解決這個問題,其實是看那個問題更嚴重。要走5米只走了4.9米重要,還是要走180度只走了179度重要。

其實角度的不精確對小車的影響更大。一般來說,小車的直線距離精確度可以控制在厘米范圍內,在角度方面可以控制精準度在1%~2%。因為角度是比較重要的參數,所以很多人就用陀螺儀來進行矯正。

所以有時候大家問小車精度有多高?其實現在這樣已經精度比較高了,難免打滑等問題,不可能做到百分之百的精準。

小車在距離和角度方面做到現在這樣對于自建地圖導航已經是可以接受的,要提高更高的精度可能就要其他設備輔助,比如激光雷達來進行輔助,激光雷達可以進行二次檢測進行糾正。

激光雷達數據的存儲格式,它首先會有一個大小范圍,如果超出范圍是無效的。還有就是有幾個采樣點,這樣就可以激光雷達可以告訴你隔多少度有一個采樣點。

另外最后那個Intensities是告訴大家數據的準確率,因為激光雷達也是取最高點的數據,是有一定的準確率的。上面的ppt其實就是用激光雷達掃了一個墻的形狀。

激光雷達掃出一個靜態形狀其實沒有意義,雷達建圖的意義其實在于建立房間的地圖。

如何繪制地圖?

第一步是收集眼睛數據:

針對激光雷達,ROS在sensor_msgs包中定義了專用了數據結構來存儲激光消息的相關信息,成為LaserScan。

它指定了激光的有效范圍、掃描點采樣的角度及每個角度的測量值。激光雷達360度實時掃描,能實時測出障礙物的距離、形狀和實時變化。

第二步就是把眼睛看到的數據轉化為地圖:

ROS的gmapping把激光雷達的/scan數據轉換為柵格map數據,其中黑色代表障礙物、白色代表空白區域,可以順利通行、灰色:未知領域。隨著機器人的移動,激光雷達可以在多個不同方位觀測同一個位置是否有障礙物,如果存在障礙物的閾值超過設置值是,庫卡機器人驅動器維修,就標定此處是存在障礙物;否則標定不存在障礙物。把障礙物、空白區域和未知領域的尺寸用不同灰度表示出來,就是柵格地圖。便于下一步定位和導航。

有時候會出現很直的墻,機器人卻無法直著行走,這時的問題可能就是機器人的輪子出現打滑等其他問題,而走歪了,這時繪制出的地圖也可能是歪的。這種情況可以通過加一個陀螺儀來避免這個情況。因為激光雷達的特性,有時候遇到黑色或鏡面會導致測距不準。

目前的解決方法就是不用激光雷達,或者用激光雷達和超聲波進行輔助處理。

ROS的地圖是分多層的,我可以在不同高度放多臺激光雷達來一起疊加,共同繪制一張地圖。地圖繪制結束之后,就可以進行定位和導航等工作。

如何定位和導航?

定位:其實是概率性的定位,而不是100%的精度。根據激光雷達掃描周圍障礙物的形狀,與地圖的形狀做匹配,判斷機器人所在位置的概率

免責聲明:本網部分文章和信息來源于互聯網,本網轉載出于傳遞更多信息和學習之目的。如轉載稿涉及版權等問題,請立即聯系網站所有人,我們會予以更改或刪除相關文章,保證您的權利。
主站蜘蛛池模板: 华阴市| 平湖市| 怀安县| 汪清县| 定远县| 固原市| 思茅市| 砚山县| 万年县| 万年县| 乌拉特中旗| 剑阁县| 隆化县| 龙泉市| 闻喜县| 资兴市| 洛阳市| 上饶县| 礼泉县| 达日县| 高要市| 贵南县| 贵南县| 湖北省| 通化市| 建始县| 怀化市| 龙州县| 文化| 彭州市| 莆田市| 伊通| 塔河县| 吴川市| 盐津县| 九龙坡区| 蛟河市| 辉南县| 高要市| 曲靖市| 商洛市|