概述
机器人导航中,激光雷达、摄像机、声纳、红外线、碰撞开关等传感器就如同人的器官一样,激光雷达常用的一种。
激光雷达
激光雷达通常会有一部分“盲区”。使用激光雷达返回的数据通常可以描绘出一幅极坐标图,极点位于雷达扫描中心,0-360°整周圆由扫描区域及盲区组成。在扫描区域中激光雷达在每个角度分辨率对应位置解析出的距离值会被依次连接起来,这样,通过极坐标表示就能非常直观地看到周围物体的轮廓,激光雷达扫描范围示意图可以参见下图。
image.png激光雷达通常有四个性能衡量指标:测距分辨率、扫描频率(有时也用扫描周期)、角度分辨率及可视范围。测距分辨率衡量在一个给定的距离下测距的精确程度,通常与距离真实值相差在5-20mm;扫描频率衡量激光雷达完成一次完整扫描的快慢,通常在10Hz及以上;角度分辨率直接决定激光雷达一次完整扫描能返回多少个样本点;可视范围指激光雷达完整扫描的广角,可视范围之外即为盲区。
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是消息的顺序标识发布节点在发布消息时,会自动累加
- stamp 是消息中与数据相关联的时间戳
- frame_id 是消息中与数据相关联的参考系id
- angle_min 起始角度(rad)
- angle_max 结束角度(rad)
- angle_increment 角度分辨率(rad)
- time_increment 每个角度扫描时间
- scan_time 扫描间隔
- range_min 最小距离
- range_max 最大距离
- ranges 各个角度的距离
- intensities 各个角度的强度
rplidar参数分析
官方的链接rplidar驱动实现
<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的模型与安装中的一致,就可以直接发布到laser_link,这也是我们为什么导出laser_link的原因)
- inverted 上下倒置安装使用该标记
- angle_compensate 顺时针逆时针标记
网友评论