天天看點

Ubuntu16.04 ROS 深度學習_ROS機器人裡程計模型

Ubuntu16.04 ROS 深度學習_ROS機器人裡程計模型

3.5 移動機器人系統模型

相信大家的機器人平台STM32端底層控制和機器人urdf模組化都已經順利完成了,在正式開始ros端編寫機器人啟動功能包之前,我們還不得不學習一些必要的理論知識。别擔心數學不好,這裡基本都是高中數學。下面我們開始,Are you ready? 沒準備好也開始了。

3.5.1 常用坐标系系統模型

在移動機器人技術研究中,最為常用的坐标系統是笛卡爾坐标系統。而在SLAM算法研究中,有如下幾個比較常見的笛卡爾坐标系統,它們分别為

機器人坐标系XR YR OR

傳感器坐标系XS YS OS

世界坐标系XW YW OW

。顧名思義,世界坐标系是描述機器人全局資訊的坐标系;機器人坐标系是描述機器人自身資訊的坐标系;傳感器坐标系是描述傳感器資訊的坐标系。他們之間的關系如下圖所示:

Ubuntu16.04 ROS 深度學習_ROS機器人裡程計模型

從圖中我們可以知道,首先世界坐标系是固定不變的,機器人坐标系和傳感器坐标系是在世界坐标系下描述的。這裡我們看到的是俯視圖,機器人坐标系和傳感器坐标系原點重合但是存在一定的角度,不同的機器人坐标系關系是不同的。當我們使用傳感器資料時,這些坐标系間的關系就是我們變換矩陣的參數,因為傳感器的資料必定是要變換到機器人坐标系或者世界坐标系中使用的。

3.5.2 移動機器人位姿模型

移動機器人的位姿模型就是機器人在世界坐标系下的狀态。

常用随機變量Xt =(xt ,yt ,θt )來描述t時刻的機器人在世界坐标系下的狀态,簡稱位姿

。其中(xt ,yt )表示的在t時刻機器人在世界坐标系下的位置,θt 表示機器人的方向。

預設世界坐标系的X正半軸為正方向,逆時針旋轉為旋轉正方向,初始時刻機器人坐标系和世界坐标系重合

。某時刻t機器人的位姿描述如下圖所示:

Ubuntu16.04 ROS 深度學習_ROS機器人裡程計模型

3.5.3 移動機器人裡程計模型

簡單的說,

移動機器人的裡程計就是機器人每時每刻在世界坐标系下位姿狀态

常用的雷射SLAM和導航算法通常都需要移動機器人的裡程計作為控制輸入

。這也是我們對本章理論内容講解的必要性。

不同底盤的裡程計模型有所不同,本文以兩輪差分輪式機器人為例介紹裡程計模型以及如何計算裡程計。在介紹裡程計模型之前,要先介紹差分輪式機器人的運動學模型,這樣可以先了解一下機器人的實體特性。

首先明确差分模型的機器人始終做的是以R為半徑的圓弧運動

。如下圖所示,機器人的線速度V、角速度ω,左右輪速用VL和VR表示,用D表示輪間距,D=2d,右輪到旋轉中心的距離為L。

Ubuntu16.04 ROS 深度學習_ROS機器人裡程計模型

ROS端給機器人底盤(STM32端)發送的是機器人要達到的線速度V和角速度ω,而我們底盤控制闆需要的是左右輪速VL和VR來進行速度控制。是以,我們通過高中知識可以得到他們之間的關系:

Ubuntu16.04 ROS 深度學習_ROS機器人裡程計模型

上面的公式是由角速度和線速度的關系得來,如果不知道這個關系,那就自行百度吧,我相信你一定知道。

從這些公式我們是不是發現了什麼,機器人的輪間距影響着我們向左右輪分發速度以及合成角速度,是以這是個我們需要注意的參數,不同的機器人結構,該參數就不同。

有了上面坐标系系統模型、位姿模型的基礎,裡程計就非常簡單了。

裡程計的計算是指以機器人上電時刻為世界坐标系的起點(機器人的航向角是世界坐标系X正方向)開始累積計算任意時刻機器人在世界坐标系下的位姿

。通常計算裡程計方法是

速度積分推算

==通過左右電機的編碼器測得機器人的左右輪的速度VL和VR,在一個短的時刻△t内,認為機器人是勻速運動,并且根據上一時刻機器人的航向角計算得出機器人在該時刻内世界坐标系上X和Y軸的增量,然後将增量進行累加處理,關于航向角θ采用的IMU的yaw值。然後根據以上描述即可得到機器人的裡程計==

。具體計算如下圖所示:

Ubuntu16.04 ROS 深度學習_ROS機器人裡程計模型

至此,裡程計模型原理及計算就結束了。

3.5.4 2D雷射雷觀測模型

我們做移動機器人平台少不了使用2D雷射雷達,是以了解雷射雷達的觀測模型也是有必要的。

雷射雷達通常由精準控制的旋轉電機、紅外雷射發射器、紅外接收視覺系統和主要組成。

雷射雷達的測距原理分為兩種,一種是基于三角測距,另一個是基于TOF(飛行時間)。基于三角測距的雷射雷達表現出的特點,價格便宜、中近距離測距較準确、遠距離精度差。基于TOF的雷射雷達表現出來的特點,價格昂貴、測距精度高、測距範圍廣、掃描頻率高。

本文采用市面上比較便宜的基于三角測距的低成本雷射雷達RPLIDAR A1。該雷射雷達在每次測距過程中,發射器發射紅外雷射信号,視覺采集系統接收雷射反射信号。在經過主要實時解算後,将雷射雷達幾何中心到被測物體的距離值以及當時的角度值,通過主要的通信接口發出。RPLIDAR A1 工作原理如圖所示。

Ubuntu16.04 ROS 深度學習_ROS機器人裡程計模型

雷射雷達在整個SLAM和導航中起着不可替代的作用。

第一,通過雷射雷達觀測資料與地圖進行比對,估計出機器人的位姿

;第

二,當機器人估計出較準确的位姿時,通過雷射雷達的觀測資料建立環境地圖

第三,在機器人導航過程中,檢測地圖中的未知障礙物

。本文主要使用的觀測傳感器是2D雷射雷達RPLIDAR A1如下圖所示:

Ubuntu16.04 ROS 深度學習_ROS機器人裡程計模型
RPLIDAR A1是一款360度雷射雷達,角度分辨率≤1,輸出的每一個雷射點的資料都是使用極坐标的方式描述,一個距離值以及一個對應的角度值。

3.5.5 總結

其實關于差分輪式機器人搭建的數學知識就這些。當然這裡隻是說的搭建,而不是以後的算法。

好好了解這些内容吧,下一節,我們就開始ROS小車的啟動檔案編寫了,我們要通過C++代碼,完成一個機器人啟動功能包。在ROS中啟動該功能包,我們就可以通過ROS的鍵盤功能包或者ROS app控制我們的機器人了。

同時,我們也會啟動傳感器擷取導航和建圖需要的深度資訊,釋出裡程計odom,釋出tf維護base_link到odom的tf變換。完成下一章我們ros端的第一大步就結束了,也就是說大家基本的ROS機器人平台搭建完畢了,之後可以根據ROS學習自行發揮了,不過還是可以繼續看我的文章滴。

==以往連結,點選通路。== 上一篇

:用xacro給自己的ROS小車編寫模型

系列文章

:從零搭建ROS機器人

如果你感覺,我的文章比較适合你,關注我,給你不一樣的驚喜。
Ubuntu16.04 ROS 深度學習_ROS機器人裡程計模型
Ubuntu16.04 ROS 深度學習_ROS機器人裡程計模型

繼續閱讀