1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 单线激光雷达(Lidar)学习一:使用单线lidar进行测距

单线激光雷达(Lidar)学习一:使用单线lidar进行测距

时间:2024-06-23 12:24:43

相关推荐

单线激光雷达(Lidar)学习一:使用单线lidar进行测距

单线雷达学习一:使用单线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()

五、 启动测距程序,得到测距信息

结语:

本人是一个正在学习的小菜鸟,这是我的第一篇博文,如果对您有所帮助,不要忘记点赞哦,谢谢。

仅供参考,如问题诸多,还望指正修改,多多包涵^_<&,

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。