2.ROS移動機器人的整體構造

2.1.硬體構造解析

圖2.1.1 一個典型的ROS移動機器人的硬體構造

一個典型的ROS移動機器人的硬體構造包括:帶編碼器的減速電機、電機驅動板、IMU模塊、激光雷達、ROS主機、麥克風、攝像頭、喇叭。帶編碼器的減速電機、電機驅動板、IMU模塊、激光雷達應該是SLAM導航避障的標配硬體,ROS主機是機器人的計算中心(運行SLAM導航演算法等),麥克風、攝像頭、喇叭是完成語音交互和圖像感知時需要的。

2.2.電機解析

(1)電機的種類

按照電機的電源類型分為直流電機、交流電機,按照電機的換相方式分為有刷電機、無刷電機,按照電機轉子的構造可以分為內轉子電機、外轉子電機。

圖2.2.1 電機的種類

(2)減速箱

電機在實際的使用中,往往配合減速箱一起使用,來提高輸出力矩和載重性能。減速箱有普通的減速箱和行星減速箱。行星減速箱的優勢是產生同等減速比條件下減速箱體積可以更小,一般一些對體積敏感的地方用的多吧。

(3)編碼器

編碼器起著對電機轉速測量反饋的重要部件,有霍爾編碼器、光電編碼器、碳刷編碼器等,編碼器通常採用正交編碼去形式進行信號輸出,也就是AB兩相信號正交輸出,有些還會有Z相信號對轉過一圈進行脈衝輸出。

(4)電調

電調產生電機需要的相位信號,並且通過PWM等方式對電機轉速進行調節。像一些小功率的直流有刷電機,電調其實就是一個H全橋電路,PWM信號控制H橋的四個臂起到控制電機轉速和轉向的目的。像一些大功率的直流無刷電機,電調的構造就比較複雜了,電調需要實現多相控制信號產生、電子換相、保護等。

圖2.2.2 電調

(5)移動機器人電機選型

電機是移動機器人的動力核心,所以選擇合適的電機對一個移動機器人還是很重要的。電機的選型不僅要考慮參數性能,比如轉速、力矩、載重、體積,還要考慮成本、安全、可實現性。如果是10KG載重級別的小型移動機器人,可以選擇DC 12V帶編碼直流有刷減速電機就可以了。如果載重在30KG及以上的移動機器人的話,就需要選擇功率和效率更高的無刷電機了,無刷電機的功率和減速箱參數可以根據實際機器人的載重和運動速度來選擇。

圖2.2.3 小型移動機器人電機選型參考
圖2.2.4 載重型移動機器人電機選型參考

2.3.電機驅動板解析

在瞭解過移動機器人的電機及選型,很自然就會想到接下來用什麼來控制電機動起來呢?電機控制需要有PID控制,所以電機驅動板主要是用來實現PID控制的,同時電機驅動板也負責和上位機通信實時解析上位機發過來的速度指令和反饋電機的速度信息給上位機。電機驅動板一般選用的是STM32或者Arduino單片機這樣的嵌入式MCU板子,有朋友可能會問既然都有上位機了(這裡的上位機通常是電腦或搭載了操作系統的ARM主機)為什麼不直接拿上位機來控制電機呢?首先,電機控制PID是實時性演算法,也就是嚴格的實時時鐘驅動的邏輯,一般的上位機系統不能滿足這種高實時性的需求;另外就是出於系統解耦合和模塊化設計的考慮,單獨用一個價格便宜的MCU來實現電機控制。

圖2.3.1 一個典型STM32電機控制板的程序框圖

電機驅動板的另一個重要功能是跟上位機通信,藉助上位機上的ROS驅動程序實現用ROS來操控電機並獲取電機編碼器反饋的里程計信息。也就是說,電機驅動板+電調+電機組成的一個整體的硬體可以當做是ROS機器人的一個感測器來使用,只需要在上位機上啟動相應的ROS驅動程序,就可以在ROS中直接操控電機和獲取里程計了。這樣的一個效果就是前面提到的系統解耦合與模塊化的設計思想,這樣的設計對很多不懂硬體的ROS開發工程師來說是非常友好的,畢竟不用考慮繁瑣的硬體問題了。

圖2.3.2 在ROS中驅動電機控制板

2.4.底盤驅動方式的解析

在瞭解了電機選型和電機控制板的作用後,底盤驅動方式是移動機器人另一個重要的考慮問題。底盤驅動方式,簡單點說就是輪子如何佈局和速度合成來讓機器人靈活的行走。按照每個輪子的速度輸出是否受約束,也就是一個輪子是否可以獨立的輸出速度而不考慮別的輪子輸出速度的約束。約束型的底盤驅動方式有:差分驅動、阿克曼驅動、同步驅動。非完整約束型的底盤驅動方式有:全向驅動、腿足驅動。

圖2.4.1 底盤驅動方式

差分驅動的底盤,是最常見的形式,像有名的turtlebot機器人、pioneer先鋒機器人、家庭掃地機器人都是用的這種驅動方式。差分驅動,其實就是左右兩個主動輪輸出動力,機器人依靠左右輪的速度差來轉彎,這也正是差分驅動名稱的由來吧,通過控制左右輪產生不同的差速,來讓機器人以不同的線速度和角速度移動。通常,差分驅動底盤還會安裝萬向從動輪來起到支撐作用。

阿克曼驅動的底盤,在汽車上是常見的形式,絕大部分的汽車底盤就屬於阿克曼驅動型。阿克曼車型的兩個後輪提供動力輸出,兩個後輪通過一個差速器來進行速度分配以產生不同轉彎半徑的差速,前方輪由方向盤控制負責轉彎。阿克曼車型的關鍵就在於後輪的差速器,在汽車上,差速器是一個特殊的齒輪組合結構,能夠根據車體實時的轉彎半徑將發動機的輸出速度自動的分配到兩個輪子上。而在機器人上,由於驅動輪一般直接連接電動機,所以這裡的差速器由電子調速器來替代了。

同步驅動的底盤,最常見的就是履帶車了,之所以叫同步驅動,就是同一邊的前輪和後輪速度是一模一樣的,實在上和差分驅動形式是一樣的。有一些沒有履帶的四輪底盤,也是同步驅動方式。同步驅動的底盤,由於四個輪子,所以載重可以更大也跟平穩。不過相對於差分驅動底盤來說,輪式里程計精度就沒那麼高了。因為同步驅動的底盤在平坦的路面轉彎時,車體會不同程度的顫動。所以同步驅動底盤是不擅長轉彎了,轉起彎來比較費勁。

全向驅動的底盤,底盤的運動是不受約束的,簡單點說就是既可以橫著走,又可以直著走,不需要轉動車身方向,就可以朝任意方向前進。全向輪為機器人的移動效率起到了很大的提升作用。尤其是像大型貨運倉庫,AGV自動物流搬運小車採用全向方式移動能大大節省時間。全向輪是關鍵部件,全向輪又叫麥克納姆輪,構造很精巧,不過就是價格昂貴,在非平坦的路面運行起來不那麼順暢了。

腿足機器人,結構複雜,就不在討論範圍了,有興趣的朋友可以自己上網瞭解。

2.5.IMU模塊解析

在移動機器人中,IMU模塊也是常用的感測器,IMU通常被用來和輪式里程計做融合,或者直接參與SLAM建圖。IMU是慣性測量單元的簡稱,用於測量物體的三軸姿態角(roll、pitch、yaw)、三軸加速度(acc_x、acc_y、acc_z)、三軸角速度(w_x、w_y、w_z)等。有六軸IMU、九軸IMU、十軸IMU等,其實就是IMU輸出的數據的種類來定義的。

圖2.5.1 六軸、九軸、十軸IMU模塊

IMU慣性測量單元在製造過程中,由於物理因素,導致IMU慣性測量單元實際的坐標軸與理想的坐標軸之間會有一定的偏差,同時三軸加速度、三軸角速度、三軸磁力計的原始值會與真實值有一個固定的偏差等。這就要求在使用IMU模塊的原始測量數據時需要對數據進行誤差校準,來消除軸偏差、固定零點偏差、尺度偏差等的影響。

圖2.5.2 IMU誤差校準的數學模型

校準過程,其實就是求解誤差校準數學模型等式右邊的各個校準係數。求解校準係數一般採用最小二次法或矩陣求逆來實現,具體的過程可以參考IMU校準方面的論文。

IMU數據校準完成後,還需要拿IMU各個軸的數據進行數據融合來得到三軸姿態角(roll、pitch、yaw)。姿態融合演算法有很多種,其中比較流行的有EKF姿態融合。

可想而知,要在移動機器人中使用IMU模塊的數據實現里程計融合或SLAM建圖,我們需要首先完成更底層的IMU誤差校準和姿態角融合兩個過程。遺憾的是,很多做上層演算法開發的小夥伴,對IMU模塊底層MCU級別的程序開發並不擅長,市面上售賣的IMU模塊大部分都不帶誤差校準和姿態角融合,有些內置了誤差校準和姿態角融合的IMU模塊價格又太過昂貴。期待不就的將來,能有帶誤差校準和姿態角融合的IMU模塊出現,而且價格又能被廣大機器人愛好者接受的好產品。

2.6.激光雷達解析

在移動機器人中,獲取機器人周圍障礙物和環境的輪廓形狀是非常重要的。使用激光雷達正是為了實現這個目的。利用掃描得到的障礙物信息,機器人就可以利用SLAM建立地圖、並進行避障和自主導航。激光雷達之所以流行,得益於它能夠精確的測距。主流的激光雷達基於兩種原理:一種是三角測距法,另一種是飛行時間(TOF)測距法。其實很好理解,就是利用了最基本的數學與物理知識。

圖2.6.1 三角測距法與飛行時間測距法

激光雷達有單線激光雷達和多線激光雷達,應用場合不一樣,價格也差距懸殊。室內移動機器人一般用的是單線激光雷達,價格從幾百塊到幾千塊的都有。國內比較早做單線激光雷達的有上海思嵐的rplidar雷達,後起之秀有深圳鐳神智能的LS系列雷達、大族激光的杉川系列雷達、深圳玩智科技的EAI雷達等等,國外的老牌子雷達就有日本的HOKUYO雷達、德國的SICK雷達都是很有名的。

室外的無人駕駛汽車一般都配備有多線激光雷達,多線激光雷達一般有16線、32線、64線、128線等等。當然線數越多掃描到的信息也就越多,價格自然也就越貴。Velodyne公司是美國知名的多線激光雷達製造商,其VL系列的多線激光雷達也是很有名,價格也是從幾萬塊到幾十萬不等。國內做多線激光雷達的有速騰、鐳神都有在做。

2.7.ROS主機解析

機器人的處理核心通常是一個運行ROS系統的計算機主機,有的複雜一點的機器人還會有好幾個計算機主機,比如一個用來搭載ROS系統運行各種機器人演算法,另一個用來搭載Android系統運行用戶交互界面。不過這裡僅討論搭載ROS系統的主機,有些朋友為了省錢直接用筆記本電腦作為ROS主機直接塞進機器人,這種情況除外。搭載在機器人上的ROS計算機主機,需要考慮編寫安裝問題和功耗問題,這裡就列舉一些常用的ROS主機供大家參考吧。

首先是中低端機器人中使用最廣泛的樹莓派,尤其是樹莓派3B這個最為流行的型號,當然最近也推出的3B+升級版本型號。樹莓派是極致性價比的板子了,200塊錢的板子,配置了cortex-A53的處理器和1GB內存,簡直就是最便宜的價格最頂配的性能了,並且官方有支持的ubuntu-mate系統也是超級給力,所以初學者選用這個板子是非常適合的。

然後中高端機器人可以選擇瑞星微RK3399這款國產晶元出的板子,螢火蟲和友善之臂都有出RK3399對應的板子。RK3399板子價格在1000塊錢左右,配置了雙核cortex-A72+四核cortex-A53的處理器,處理器絕對是給力的,配置的內存2GB/4GB可選。搭載裁剪版的Lubuntu或Xubuntu也是很不錯的。

如果是高端機器人可以選擇Nvidia家的jetson-tx2這個板子,這個板子號稱是可以搭載在覈彈上的板子,可想而知性能是非常牛的。板子售價4000塊錢左右,有點小貴。配置了四核cortex-A57的處理器,256個CUDA核心的英偉達自家的帕斯卡架構GPU,內存8GB。板子的亮點是GPU,非常適合用來做深度學習和計算機視覺方面的應用。

圖2.7.1 ROS主機

選擇好一款適合的ROS主機後,就可以在主機上安裝ubuntu系統了,然後再在ubuntu系統上安裝ROS系統,最後就可以下載各種開源SLAM演算法開始運行測試了,當然前提是你得有一個能移動的機器人並且各個感測器都是配備好了的。

2.8.攝像頭解析

機器人上搭載攝像頭,可以用來做視頻遠程監控、人臉識別和追蹤、視覺SLAM等等。可以選擇的攝像頭有單目(mono)、雙目(stereo)和深度(RGBD)攝像頭。如果是做視覺SLAM的朋友,需要對不同攝像頭的優缺點有個瞭解。單目攝像頭的優點是結構簡單、成本低,缺點是在單張圖片裏,無法確定一個物體的真實大小。它可能是一個很大但很遠的物體,也可能是一個很近很小的物體。通過相機的運動形成視差,可以測量物體相對深度。但是單目SLAM估計的軌跡和地圖將與真實的軌跡和地圖相差一個因子,也就是尺度(scale),單憑圖像無法確定這個真實尺度,所以稱尺度不確定性。雙目攝像頭的優點是基線距離越大,能夠測量的距離就越遠;並且可以運用到室內和室外。缺點是配置與標定較為複雜,深度量程和精度受到雙目基線與解析度限制,視差計算非常消耗計算資源,需要GPU/FPGA設備加速。深度攝像頭的優點是通過結構光或ToF(time of fly)的物理方法測量物體深度信息,典型代表Kinect/xtion pro/RealSense。缺點是測量範圍窄,雜訊大,視野小,易受日光幹擾,無法測量透射材質等問題,主要用在室內,室外很難應用。

圖2.8.1 攝像頭

2.9.麥克風解析

對於需要進行語音交互的機器人來說,麥克風是標配。麥克風可以分為陣列形麥克風和普通的麥克風。如果只是簡單的錄音和識別,選擇價格便宜的靈敏度高一點的普通麥克風就可以了。對於語音交互有較高要求,需要做聲源定位、回聲消除、命令詞喚醒這些的話,就必須選擇用陣列麥克風了。


推薦閱讀:
相關文章