当前位置: 首页 > news >正文

基于Matlab使用激光雷达检测分类跟踪车辆仿真(附源码)

此示例演示如何使用安装在 ego 车辆上的激光雷达传感器捕获的激光雷达点云数据来检测、分类和跟踪车辆。此示例中使用的激光雷达数据是从高速公路驾驶方案中记录的。在此示例中,对点云数据进行分段,以确定使用网络的对象类别。具有交互式多模型滤波器的联合概率数据关联(JPDA)跟踪器用于跟踪检测到的车辆。

一、概述

感知模块在实现具有ADAS系统的车辆的完全自主性方面发挥着重要作用。激光雷达和摄像头是感知工作流程中必不可少的传感器。激光雷达擅长提取物体的精确深度信息,而相机则产生丰富而详细的环境信息,这对于物体分类非常有用。

此示例主要包括以下部分:

  • 接地层分割

  • 语义分割

  • 定向边界框拟合

  • 面向跟踪的边界框

流程图概述了整个系统。

二、加载数据 

激光雷达传感器以有组织格式或无组织格式生成点云数据。此示例中使用的数据是使用 Os1 激光雷达传感器收集的。此激光雷达生成具有 64 条水平扫描线的有组织的点云。点云数据由三个通道组成,表示点的 xy 和 z 坐标。每个通道的大小为 64 x 1024。

三、接地层分割

此示例采用混合方法,该方法使用段“来自”地面“LidarData(计算机视觉工具箱)和 pcfitplane(计算机视觉工具箱)函数。首先,使用函数估计接地平面参数。估计的接地平面沿着车辆方向划分为条带,以便使用每个条带上的功能来适应平面。这种混合方法以分段方式稳健地适合地平面,并处理点云中的变化。

 四、语义分割

示例使用预训练的网络模型。 是一个端到端的实时语义分割网络,针对汽车、卡车和背景等对象类进行了训练。网络的输出是一个屏蔽的图像,每个像素都根据其类进行标记。此遮罩用于过滤点云中不同类型的对象。网络的输入是五通道图像,即 x、y、z、强度和范围。有关网络或如何训练网络的详细信息,请参阅使用 PointSeg 深度学习网络(激光雷达工具箱)的激光雷达点云语义分割示例。

准备输入数据:该函数从加载的点云数据生成五通道数据。

 在加载的预训练网络的一个帧上运行前向推理。

使用生成的语义掩码过滤包含卡车的点云。同样,为其他类过滤点云。 

 五、簇状和边界框管接头

提取不同对象类的点云后,通过使用 pcsegdist(计算机视觉工具箱)函数应用欧几里得聚类来对对象进行聚类。为了对属于单个聚类的所有点进行分组,将获得的作为聚类的点云用作非地面点中增长区域的种子点。使用 findNearestNeighbors(计算机视觉工具箱)函数遍历所有点以扩大该区域。提取的聚类将使用 pcfitcuboid(激光雷达工具箱)功能拟合到 L 形边界框中。从自上而下的角度来看,这些车辆簇类似于字母L的形状。此功能有助于估计车辆的方向。定向边界框拟合有助于估计对象的航向角,这在路径规划和交通机动等应用中非常有用。

也可以通过查找每个方向上的最小和最大空间范围来计算聚类的长方体边界。但是,此方法无法估计检测到的车辆的方向。这两种方法之间的区别如图所示。

 

 六、可视化设置

使用该类在一个窗口中可视化完整的工作流。可视化窗口的布局分为以下几个部分:

  1. 激光雷达范围图像:2-D 中的点云图像作为范围图像

  2. 分割图像:从语义分割网络生成的检测到的标签,该网络与强度图像或数据的第四通道叠加在一起

  3. 定向边界框检测:具有定向边界框的 3-D 点云

  4. 顶视图:具有定向边界框的点云的俯视图

循环访问数据

该类是一个包装器,其中包含上述各节中提到的所有分段、聚类和边界框拟合步骤。使用该函数提取检测到的对象。

 跟踪定向边界框

将使用联合概率数据关联 (JPDA) 跟踪器。时间步长设置为 0.1 秒,因为数据集是在 10 Hz 下捕获的。跟踪器中使用的状态空间模型基于具有参数的长方体模型,dt[x, y, z, φ, l, w, h].有关如何追踪激光雷达数据中边界框的更多详细信息,请参阅使用激光雷达追踪车辆:从点云到追踪列表示例。在此示例中,类信息是使用 的属性提供的。创建新轨道时,使用帮助程序函数定义的筛选器初始化函数将使用检测的类来设置对象的初始维度。这有助于跟踪器使用轨道的适当尺寸调整边界框测量模型。

七、总结

此示例显示了如何在激光雷达数据上检测和分类装有定向边界框的车辆。还学习了如何使用 IMM 筛选器跟踪具有多个类信息的对象。通过添加更多训练数据,可以进一步改进语义分割结果。

八、程序

使用Matlab R2021a版本,点击打开。

 打开下面的“DetectClassify...Example.mlx”文件,点击运行,就可以看到上述效果。

 关注下面公众号,后台回复关键词:使用激光雷达检测分类跟踪车辆仿真,发送源码链接。

相关文章:

  • 火狐浏览器 优化教程
  • 计算机的发展史,让你想到了什么?
  • 记一次SQL注入的收获
  • 大数据必学Java基础(八十):网络编程的深入了解
  • 建议收藏丨你想了解的动捕内容全在这儿!
  • 基于蚂蚁-遗传优化算法的路径规划问题(Matlab代码实现)
  • 【数据结构】-----二叉树(递归、层次实现二叉树的遍历)
  • Spring MVC 请求处理过程。你这样回答保证通过面试!
  • 两台电脑mysql数据迁移,各版本mysql迁移(亲测)
  • MD5退出历史舞台你知道吗?
  • 使用nw.js将web项目打包为exe软件(xp版本)
  • 我,在日本开密室逃脱,钱还没赚,人进“橘子”了……
  • “池化技术” - 深度剖释底层内存管理细节,明晰“池化技术”内存管理技术
  • 【网站架构】Tomcat长时间运行崩溃?Tomcat调优、集群
  • Android Studio中Touch监听器的使用
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • java8-模拟hadoop
  • Objective-C 中关联引用的概念
  • PermissionScope Swift4 兼容问题
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • React系列之 Redux 架构模式
  • 百度小程序遇到的问题
  • 初识 webpack
  • 初识MongoDB分片
  • 大快搜索数据爬虫技术实例安装教学篇
  • 如何学习JavaEE,项目又该如何做?
  • 什么是Javascript函数节流?
  • 实战|智能家居行业移动应用性能分析
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 微服务核心架构梳理
  • 问题之ssh中Host key verification failed的解决
  • 终端用户监控:真实用户监控还是模拟监控?
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #php的pecl工具#
  • #Spring-boot高级
  • #stm32整理(一)flash读写
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (003)SlickEdit Unity的补全
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (六)vue-router+UI组件库
  • (三)elasticsearch 源码之启动流程分析
  • (详细文档!)javaswing图书管理系统+mysql数据库
  • ***检测工具之RKHunter AIDE
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .net MySql
  • .NET 项目中发送电子邮件异步处理和错误机制的解决方案
  • .NET面试题(二)
  • .Net中wcf服务生成及调用
  • .Net中的设计模式——Factory Method模式
  • :中兴通讯为何成功
  • @RequestMapping 和 @GetMapping等子注解的区别及其用法