SLAM+語音機器人DIY系列:(三)感知與大腦——1.ydlidar-x4激光雷達


摘要                                              

在我的想象中機器人首先應該能自由的走來走去,然后應該能流利的與主人對話。朝着這個理想,我准備設計一個能自由行走,並且可以與人語音對話的機器人。實現的關鍵是讓機器人能通過傳感器感知周圍環境,並通過機器人大腦處理並輸出反饋和執行動作。本章節涉及到的傳感器有激光雷達、IMU、輪式里程計、麥克風、音響、攝像頭,和用於處理信息的嵌入式主板。關於傳感器的ROS驅動程序開發和在機器人上的使用在后面的章節會展開,本章節重點對機器人傳感器和嵌入式主板進行講解,主要內容:

1.ydlidar-x4激光雷達

2.帶自校准九軸數據融合IMU慣性傳感器

3.輪式里程計與運動控制

4.音響麥克風與攝像頭

5.機器人大腦嵌入式主板性能對比

6.做一個能走路和對話的機器人



1.ydlidar-x4激光雷達                  

在移動機器人中,獲取機器人周圍障礙物和環境的輪廓形狀是非常重要的。使用激光雷達正是為了實現這個目的。利用掃描得到的障礙物信息,機器人就可以利用SLAM建立地圖、並進行避障和自主導航。考慮到成本,推薦大家選用低成本的2D激光雷達,這里推薦的ydlidar-x4激光雷達正是一款極低成本的2D激光雷達,作為學習性能足夠用了。

1.1.硬件概述                  

(圖1ydlidar-x4激光雷達實物

雷達主體由激光測距模組和電機構成,雷達主體需要連接轉接板,用於實現外部供電和UARTUSB,如圖1

(圖2ydlidar-x4激光雷達性能參數

測距頻率是指每秒鍾測距的次數(即激光測距模組的采樣率),測距頻率默認為5KHz;掃描頻率是指電機每秒鍾轉過的圈數,掃描頻率默認為8Hz;測距范圍是指落在此距離范圍的障礙物才能被測量,測距范圍為0.12~10m;掃描角度為0~360度,也就是能夠360度全方位掃描;測距分辨率就是測距精度;角度分辨率就是兩個相鄰掃描點之間的夾角。ydlidar-x4激光雷達性能參數,如圖2

關於激光雷達的性能參數對SLAM建圖與避障導航的影響,這里做一個簡短的分析。

掃描頻率:

掃描頻率越高,電機轉動一圈的時間約短,掃描獲取1幀雷達數據的時間越短,這樣可以使SLAM建圖和避障導航實時性更好。簡單點說就是機器人運動速度很快時,掃描到的點雲數據連續性也比較好,這有利於SLAM算法建立穩定的地圖,有利於避障導航算法及時發現並避開障礙物。

測距范圍:

小於測距范圍最小值的區域就是雷達的測量盲區,處於盲區中的障礙物無法被探測,所以,盲區當然是越小越好以保證機器人不發生碰撞;大於測距范圍最大值的區域就是雷達超量程的區域,在超量程的區域的障礙物無法被探測或者可以探測但誤差很大,所以,在比較開闊的環境下應該采用遠距離量程的雷達。

掃描角度:

大部分雷達都是0~360度全方位掃描的,所以就沒什么太大的區別了,其實就是機器人不用轉動身體的情況下就能一次性掃描出四周的障礙物信息。

測距分辨率:

測距分辨率也就是測距精度,測距精度越高當然有利於SLAM建圖和避障導航,但是測距精度越越高的雷達成本當然也越高,現在國產低成本的雷達普遍為厘米級(cm)的精度,差一點的雷達5cm左右的精度,稍微好一點的雷達2cm左右的精度,如果要達到毫米級(mm)的精度成本就非常高了。

角度分辨率:

角度分辨率決定了兩個相鄰點雲之間的夾角,由於雷達是通過旋轉進行掃描的,隨着距離增加點雲會越來越稀疏。如果角度分辨率比較低,在掃描遠距離物理時只能得到非常稀疏的幾個點雲,這樣的點雲基本上沒有什么用處了。

角度分辨率 = 360 /(測距頻率 / 掃描頻率)  

從上面的角度分辨率計算公式來看,一般測距頻率為常數值(由激光模組特性決定),那么通過降低掃描頻率可以提升角度分辨率,但同時掃描頻率降低會影響雷達的實時性,所以這是一個權衡的過程,根據實際情況做選擇。

1.2.工作原理                 

激光雷達之所以流行,得益於它能夠精確的測距。主流的激光雷達基於兩種原理:一種是三角測距法,另一種是飛行時間(TOF)測距法。其實很好理解,就是利用了最基本的數學與物理知識。

(圖3)三角測距原理

三角測距原理如圖3,激光器發射一束激光,被物體A反射后,照射到圖像傳感器的A,這樣就形成了一個三角形,通過解算可以求出物體A到激光器的距離。激光束被不同距離的物體反射后,形成不同的三角形。我們不難發現隨物體距離不斷變遠,反射激光在圖像傳感器上的位置變化會越來越小,也就是越來越難以分辨。這正是三角測距的一大缺點,物體距離越遠,測距誤差越大。

(圖4TOF測距原理

飛行時間(TOF)測距原理如圖4,激光器發出激光時,計時器開始計時,接收器接收到反射回來的激光時,計時器停止計時,得到激光傳播的時間后,通過光速一定這個條件,很容易計算出激光器到障礙物的距離。由於光速傳播太快了,要獲取精確的傳播時間太難了。所以這種激光雷達自然而然成本也會高很多,但是測距精度很高。

1.3.在機器人中使用ydlidar-x4激光雷達  

5在機器人中使用ydlidar-x4激光雷達

ydlidar-x4激光雷達通過串口與機器人相連接,機器人中通過運行雷達ROS驅動,來實現讀取串口的雷達數據和將雷達數據發布到/scan這個主題,這樣機器人上的其它節點就可以通過訂閱/scan主題來獲取激光雷達數據了。關於雷達ROS驅動在機器人上的具體使用,將在后面的章節中具體講解。

后記                

------SLAM+語音機器人DIY系列【目錄】快速導覽------

第1章:Linux基礎

1.Linux簡介

2.安裝Linux發行版ubuntu系統

3.Linux命令行基礎操作

第2章:ROS入門

1.ROS是什么

2.ROS系統整體架構

3.在ubuntu16.04中安裝ROS kinetic

4.如何編寫ROS的第一個程序hello_world

5.編寫簡單的消息發布器和訂閱器

6.編寫簡單的service和client

7.理解tf的原理

8.理解roslaunch在大型項目中的作用

9.熟練使用rviz

10.在實際機器人上運行ROS高級功能預覽

第3章:感知與大腦

1.ydlidar-x4激光雷達

2.帶自校准九軸數據融合IMU慣性傳感器

3.輪式里程計與運動控制

4.音響麥克風與攝像頭

5.機器人大腦嵌入式主板性能對比

6.做一個能走路和對話的機器人

第4章:差分底盤設計

1.stm32主控硬件設計

2.stm32主控軟件設計

3.底盤通信協議

4.底盤ROS驅動開發

5.底盤PID控制參數整定

6.底盤里程計標

第5章:樹莓派3開發環境搭建

1.安裝系統ubuntu_mate_16.04

2.安裝ros-kinetic

3.裝機后一些實用軟件安裝和系統設置

4.PC端與robot端ROS網絡通信

5.Android手機端與robot端ROS網絡通信

6.樹莓派USB與tty串口號綁定

7.開機自啟動ROS節點

第6章:SLAM建圖與自主避障導航

1.在機器人上使用傳感器

2.google-cartographer機器人SLAM建圖

3.ros-navigation機器人自主避障導航

4.多目標點導航及任務調度

5.機器人巡航與現場監控

第7章:語音交互與自然語言處理

1.語音交互相關技術

2.機器人語音交互實現

3.自然語言處理雲計算引擎

第8章:高階拓展

1.miiboo機器人安卓手機APP開發

2.centos7下部署Django(nginx+uwsgi+django+python3)

----------------文章將持續更新,敬請關注-----------------

 

如果大家對博文的相關類容感興趣,或有什么技術疑問,歡迎加入下面的《SLAM+語音機器人DIY》QQ技術交流群,一起討論學習^_^

關於我們:

視頻教程:

 

https://www.bilibili.com/video/av61448040


免責聲明!

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



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