概述
機器人導航中,激光雷達、攝像機、聲納、紅外線、碰撞開關等傳感器就如同人的器官一樣,激光雷達常用的一種。
激光雷達
激光雷達通常會有一部分“盲區(qū)”。使用激光雷達返回的數(shù)據(jù)通??梢悦枥L出一幅極坐標圖,極點位于雷達掃描中心,0-360°整周圓由掃描區(qū)域及盲區(qū)組成。在掃描區(qū)域中激光雷達在每個角度分辨率對應位置解析出的距離值會被依次連接起來,這樣,通過極坐標表示就能非常直觀地看到周圍物體的輪廓,激光雷達掃描范圍示意圖可以參見下圖。

image.png
激光雷達通常有四個性能衡量指標:測距分辨率、掃描頻率(有時也用掃描周期)、角度分辨率及可視范圍。測距分辨率衡量在一個給定的距離下測距的精確程度,通常與距離真實值相差在5-20mm;掃描頻率衡量激光雷達完成一次完整掃描的快慢,通常在10Hz及以上;角度分辨率直接決定激光雷達一次完整掃描能返回多少個樣本點;可視范圍指激光雷達完整掃描的廣角,可視范圍之外即為盲區(qū)。
ROS中使用
ROS中激光雷達消息為sensor_msgs/LaserScan
rosmsg show sensor_msgs/LaserScan顯示如下
std_msgs/Header header
uint32 seq
time stamp
string frame_id
float32 angle_min
float32 angle_max
float32 angle_increment
float32 time_increment
float32 scan_time
float32 range_min
float32 range_max
float32[] ranges
float32[] intensities
- seq是消息的順序標識發(fā)布節(jié)點在發(fā)布消息時,會自動累加
- stamp 是消息中與數(shù)據(jù)相關聯(lián)的時間戳
- frame_id 是消息中與數(shù)據(jù)相關聯(lián)的參考系id
- angle_min 起始角度(rad)
- angle_max 結束角度(rad)
- angle_increment 角度分辨率(rad)
- time_increment 每個角度掃描時間
- scan_time 掃描間隔
- range_min 最小距離
- range_max 最大距離
- ranges 各個角度的距離
- intensities 各個角度的強度
rplidar參數(shù)分析
官方的鏈接rplidar驅動實現(xiàn)
<launch>
<node name="rplidarNode" pkg="rplidar_ros" type="rplidarNode" output="screen">
<param name="serial_port" type="string" value="/dev/ttyUSB0"/>
<param name="serial_baudrate" type="int" value="115200"/>
<param name="frame_id" type="string" value="laser"/>
<param name="inverted" type="bool" value="false"/>
<param name="angle_compensate" type="bool" value="true"/>
</node>
</launch>
- frame_id 參考系id (如果我們urdf的模型與安裝中的一致,就可以直接發(fā)布到laser_link,這也是我們?yōu)槭裁磳С鰈aser_link的原因)
- inverted 上下倒置安裝使用該標記
- angle_compensate 順時針逆時針標記