单线雷达学习一:使用单线lidar进行测距
前言:
单线雷达就是由激光发射器与360度旋转扫描仪组成,其工作原理是向目标发射探测信号(激光束),然后将接收到的从目标反射回来的信号(目标回波)与发射信号进行比较,作适当处理后,就可获得目标的有关信息,如目标距离、方位、高度、速度、姿态、甚至形状等参数。
通过订阅话题/scan信息,提取所需数据,从而实现使用单线雷达进行测距。
一、 运行lidar_launch (以镭神雷达ls01b为例进行)
添加lidar运行功能包至工作空间的src下添加端口的权限$sudo chmod 777 /dev/ttyUSB*
运行雷达启动的launch文件
$roslaunch ls01b_v2 ls01b_v2.launch
二、 查看雷达发布的信息并分析
查看节点发布信息$rosnode inif /ls01b_v2
查看/scan发布的内容
$rostopic echo /scan
三、
订阅/scan发布信息并进行处理,从而获得所需数据
float32 angle_min # 开始扫描的角度(角度)float32 angle_max # 结束扫描的角度(角度)float32 angle_increment # 每一次扫描增加的角度(角度)float32 time_increment # 测量的时间间隔(s)float32 scan_time # 扫描的时间间隔(s)float32 range_min # 距离最小值(m)float32 range_max # 距离最大值(m)float32[] ranges # 距离数组(长度360)float32[] intensities # 与设备有关,强度数组(长度360)
四、编写测距程序,进行测距
#!/usr/bin/env pythonimport rospyfrom sensor_msgs.msg import LaserScanfrom geometry_msgs.msg import Twistclass Obstacle():def __init__(self):self.obstacle()def get_scan(self):msg = rospy.wait_for_message("scan", LaserScan) #订阅节点/scan信息self.scan_filter = []i= 0 *4#0为雷达正前方数据,如需其他角度,修改此参数即可self.scan_filter.append(msg.ranges[i]) #设置订阅节点所需提取数据。def obstacle(self):self.twist = Twist()while not rospy.is_shutdown():self.get_scan()rospy.loginfo('distance(m) : %f', min(self.scan_filter)) #将所需内容发送至终端def main():rospy.init_node('turtlebot_scan')try:obstacle = Obstacle()except rospy.ROSInterruptException:passif __name__ == '__main__':main()
五、 启动测距程序,得到测距信息
结语:
本人是一个正在学习的小菜鸟,这是我的第一篇博文,如果对您有所帮助,不要忘记点赞哦,谢谢。
仅供参考,如问题诸多,还望指正修改,多多包涵^_<&,