单线激光雷达(Lidar)学习三:使用雷达数据/scan转/PointCloud后生成鸟瞰图

前言:

雷达广泛应用于自动驾驶中,作用非常重要,是自动驾驶无人车中的作为“眼睛“的一环。雷达运行时会产生许多数据,可用于各种各样的计算后使用。下面就使用雷达驱动发布的/scan中的数据进行生成鸟瞰图。(附加代码)

一、 启动雷达节点(以镭神单线雷达ls01b_v2为例进行)

$roslaunch ls01b_v2 ls01b_v2.launch

二、 创建节点订阅/scan并转化为点云信息/PointCloud

详情请参考上一篇博文
https://blog.csdn.net/wxhy666/article/details/113674317

三、 启动数据转化节点

$rosrun lswj_pkg data_conversion
(注:lswj_pkg改为自己现用的功能包)

四、 创建节点订阅/PointCloud

#!/usr/bin/env python
import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
import cv2
sys.path.append('/opt/ros/kinetic/lib/python2.7/dist-packages')
from cv_bridge import CvBridge
import numpy as np
import rospy
from sensor_msgs.msg import PointCloud2,Image
import sensor_msgs.point_cloud2 as pc2
import osclass pt2brid_eye:def __init__(self):       #接收/scan发布/pointcloudself.image_pub = rospy.Publisher('/bird_eyes', Image, queue_size=1)self.pt_sub=rospy.Subscriber("/PointCloud", PointCloud2, self.callback)self.bridge = CvBridge()def callback(self,lidar):lidar = pc2.read_points(lidar)points = np.array(list(lidar))im = self.point_cloud_2_birdseye(points) self.image_pub.publish(self.bridge.cv2_to_imgmsg(im))print("convert!")def point_cloud_2_birdseye(self,points):       #鸟瞰图生成x_points = points[:, 0]y_points = points[:, 1]z_points = points[:, 2]f_filt = np.logical_and((x_points > -50), (x_points < 50))s_filt = np.logical_and((y_points > -50), (y_points < 50))filter = np.logical_and(f_filt, s_filt)indices = np.argwhere(filter)x_points = x_points[indices]y_points = y_points[indices]z_points = z_points[indices]x_img = (-y_points*80).astype(np.int32)+500y_img = (-x_points *80).astype(np.int32)+500      pixel_values = np.clip(z_points,-2,2)pixel_values = ((pixel_values +2) / 4.0) * 500im=np.zeros([1080,1080],dtype=np.uint8)im[y_img, x_img] = pixel_valuesreturn imif __name__ == '__main__':print("opencv: {}".format(cv2.__version__))pt2img=pt2brid_eye()rospy.init_node('pt_to_brid_eyeImage_node')rospy.spin()

五、 并运行生成鸟瞰图

$rosrun lsw_pkg bird_eye

出现convert则为成功,报错后出现convert则忽略错误即可

六、 开启rviz节点监视/PointCloud点云数据

$rosrun rviz rviz

开启rviz后选择add加入PointCloud2,选择正确的话题topic(PointCloud)
效果如下

七、 开启rqt_image_view查看鸟瞰图

$rosrun rqt_image_view rqt_image_view

话题选择/bird_eyes,效果如下

八、 附带代码

我创建了一个一将运行所有节点的launch文件也添加上去了,有需要可以参考一下

$roslaunch lswj_pkg bird_eye_view.launch

launch 文件内容如下

<launch><node name="ls01b_v2" pkg="ls01b_v2" type="ls01b_v2" output="screen"><param name="scan_topic" value="scan"/>         #设置激光数据topic名称<param name="frame_id" value="laser_link"/>     #激光坐标<param name="serial_port" value="/dev/ttyUSB0"/>  #雷达连接的串口<param name="baud_rate" value="460800" />        #雷达连接的串口波特率<param name="angle_resolution" value="0.25"/>     #雷达角度分辨率<param name="zero_as_max" value="false"/>        # 设置为true探测不到区域会变成最大值<param name="min_as_zero" value="false"/>        # true:探测不到区域为0,false:探测不到区域为inf<param name="rpm" value="600"/>                 # 雷达转速<param name="angle_compensate" value="true"/>                 # 角度补偿,非同轴<rosparam file="$(find ls01b_v2)/launch/includes/filter.yaml" command="load"/></node><node name="data_conversion" pkg="lswj_pkg" type="data_conversion" output="screen"/><node name="bird_eye" pkg="lswj_pkg" type="bird_eye" output="screen"/><node pkg="rviz" type="rviz" name="rviz"/><node pkg="rqt_image_view" type="rqt_image_view" name="rqt_image_view"/>
</launch>

结语:
本人是一个正在学习的小菜鸟,如果此博文对您有所帮助,请不要忘记点赞哦,谢谢。
仅供参考,如问题诸多,还望指正修改,多多包涵^_<&,

单线激光雷达(Lidar)学习三:使用雷达数据/scan转/PointCloud后生成鸟瞰图相关推荐

  1. 十五. 单线激光雷达和视觉信息融合

    单线激光雷达和视觉信息融合案例 很多智能应用场景涉及到激光雷达和相机视觉信息融合,一般都是指多线激光雷达,至少也得16线激光吧;但多线激光雷达动不动数万的价格,让很多技术人员无法尝试.我尝试使用微型机 ...

  2. 2022年全球市场单线激光雷达总体规模、主要生产商、主要地区、产品和应用细分研究报告

    本文研究全球市场.主要地区和主要国家单线激光雷达的销量.销售收入等,同时也重点分析全球范围内主要厂商(品牌)竞争态势,单线激光雷达销量.价格.收入和市场份额等.针对过去五年(2017-2021)年的历 ...

  3. 激光雷达lidar与点云数据

    激光雷达lidar与点云数据 DEM是分布和显示数字地形的首个广泛使用的机制. 点云是在空间中随机放置的3D点的集合.传感器发出能量脉冲并乘以其返回行程(TWTT,双向行程时间).知道了传感器的位置以 ...

  4. 激光雷达Lidar与毫米波雷达Radar:自动驾驶的利弊

    激光雷达Lidar与毫米波雷达Radar:自动驾驶的利弊 Lidar vs Radar: pros and cons for autonomous driving 新型无人驾驶汽车的数量在缓慢增加,各 ...

  5. STM32 Cube MX学习笔记——TOF 高速单线激光雷达 L10(usart)

    STM32 Cube MX学习笔记--TOF 高速单线激光雷达 L10_串口中断通信 1. TOF 高速单线激光雷达 L10 2. STM32 Cube MX配置 3.代码配置 4.编译 烧录 显示 ...

  6. oracle数据库开多线程,学习笔记:Oracle表数据导入 DBA常用单线程插入 多线程插入 sql loader三种表数据导入案例...

    天萃荷净 oracle之数据导入,汇总开发DBA在向表中导入大量数据的案例,如:单线程向数据库中插入数据,多线程向数据表中插入数据,使用sql loader数据表中导入数据案例 1.Oracle数据库 ...

  7. 大数据基础学习三:Ubuntu下安装VMware Tools超详细步骤及需要注意的问题(以ubuntu-18.04.3、Mware Workstation 15.1.0 Pro为例)

    大数据基础学习三:Ubuntu下安装VMware Tools超详细步骤及需要注意的问题 (以ubuntu-18.04.3.Mware Workstation 15.1.0 Pro for Window ...

  8. C1认证学习三(数据校验)

    C1认证学习三(数据校验) 文章目录 C1认证学习三(数据校验) 数据校验 任务背景 校验的方法 奇偶校验 数据校验 这是第三个笔记:数据的校验. 任务背景 在数据传输的过程中,会受到各种各样的干扰. ...

  9. 第三课 大数据技术之Fink1.13的实战学习-时间和窗口

    第三课 大数据技术之Fink1.13的实战学习-时间和窗口 文章目录 第三课 大数据技术之Fink1.13的实战学习-时间和窗口 第一节 时间定义 1.1 Flink中的时间语义 1.2 两种时间语义 ...

最新文章

  1. Java元数据区的概念_java之元数据(metadata)-Go语言中文社区
  2. 给一维数组输入6个整数,假设为5,7,4,8,9,1
  3. Python打包EXE神器 pyinstaller
  4. ntp服务器同步时间详细配置
  5. React学习资料+css进阶资料总结
  6. 3个阶段 项目征名_项目管理的3个关键动作:启动、推进、复盘
  7. 梁胜:做开源项目的贡献者没有意义 | 人物志
  8. 30分钟学会用scikit-learn的基本回归方法(线性、决策树、SVM、KNN)和集成方法(随机森林,Adaboost和GBRT)
  9. 服务器迁入虚拟主机的好处,服务器迁入虚拟主机的好处
  10. R语言泊松(Poisson)分布
  11. C# 正则计算中文,数字,英文字数统计方法
  12. css 动画 呼吸 呼吸灯 效果
  13. 美国买车维权,是怎样告别“按‘闹’分配”的?
  14. Java--Java语言基础
  15. 服务器怎么买,腾讯云服务器新手购买的流程方法步骤
  16. 12 结构:如何系统设计框架的整体目录?
  17. 转:女孩子必须做的138件事
  18. 在Unity中使用Font Awesome图标字体
  19. 总结:如何生成mulan软件的.arrf和.xml文件
  20. 数商云家电商城系统解决方案,优化电器商城采购供应链管理,减低库存提升资金利用率

热门文章

  1. RHEL 7安装的步骤
  2. 【PHP】保留两位小数并向上取整
  3. 抛出异常与栈展开(stack unwinding)
  4. [kafka]kafka术语白话
  5. 无线通信学习笔记(一)
  6. 再读德鲁克#2 如何提升生产率
  7. VTS 固态雷达 OCEANGARD
  8. ASP错误代码中文说明大全:
  9. [转]真核生物预测软件
  10. Codeforces Round #644 (Div. 3) H.Binary Median