Autoware.universe中激光雷达感知部分简述,一看就懂,不懂请打我

news2024/9/25 9:32:18

文章目录

    • 整体把握
    • 各部分阐述
      • 滤除多余的检测框
    • 总结

整体把握

Autoware.universe中激光雷达感知部分的主要流程为:

  1. 将原始点云数据输入地面滤波器和深度学习检测算法,分别得到地面滤波后的点云points_no_ground和Object检测框(该检测框内包含中心点、位姿、形状、类别)
  2. 将points_no_ground和Object检测框进行匹配。如果匹配成功,则输出Object检测框;如果匹配失败,则舍弃Object检测框
    • 匹配算法的示意图如下面第二幅图所示

整体流程

在这里插入图片描述

各部分阐述

Autoware.universe中激光雷达感知部分的代码相对简单,主要依赖于两部分算法性能,即(1)地面点云是否滤除干净;(2)深度学习算法是否能稳定检测出障碍物信息。这两部分网上有大量的阐述,这里不进行分析。

滤除多余的检测框

  • 产生多余检测框的原因

    • 为了使得深度学习算法能够检测出场景内所有的障碍物,往往在实际应用中调低认定为障碍物的置信度。虽然这种做法大幅提升了场景内障碍物被检出的概率,但也同样产生了大量多余的检测框。故要对多余的检测框进行滤除。
  • 滤除多余检测框的方法

    • 根据障碍物中心点滤除与车辆距离过远的检测框。获取障碍物的中心点,之后判断中心点(只考虑x、y方向)是否在某个取值范围内。Autoware.universe中,默认取 x ∈ [ 0 , 100 ] , y ∈ [ − 50 , 50 ] x\in[0,100],y\in[-50,50] x[0,100],y[50,50],即只考虑车前一定范围内的障碍物。核心程序代码如下,参考object_position_filter.cpp

      if (
          position.x > lower_bound_x_ && position.x < upper_bound_x_ && position.y > lower_bound_y_ &&
          position.y < upper_bound_y_) {
          output_object_msg.objects.emplace_back(object);
        }
      
    • 滤除与矢量地图中道路过远的检测框。分别从lantlet2地图和检测框中获取所有的道路信息和检测框的顶点信息,之后计算检测框与道路是否相交。如果相交,则保留该检测框;如果不相交,则去除该检测框。核心程序代码如下,参考object_lanelet_filter.cpp

      for (const auto & road_lanelet : road_lanelets) {
          if (boost::geometry::intersects(convex_hull, road_lanelet.polygon2d().basicPolygon())) {       
            intersected_lanelets.emplace_back(road_lanelet);
          }
        }
      
    • 这两种滤除方法保留下来的检测框为:车前,且距离车道线附近一定距离的障碍物,符合自动驾驶参考的依据

总结

  • 该部分想要输出最终的障碍物信息,必须points_no_ground和深度学习的检测框能够匹配
  • 存在两个要求:(1)地面点云滤波效果要好;(2)深度学习要尽可能的检测出场景内所有障碍物。换句话说,要想提升该部分感知性能,需要从这两方面入手。
    (2)深度学习要尽可能的检测出场景内所有障碍物。换句话说,要想提升该部分感知性能,需要从这两方面入手。
  • 深度学习的输入为原始点云,这就使得该类算法的推理时间大幅增加,所以如果想替换Autoware.universe中深度学习算法(centerPoint),还应该考虑算法耗时问题。推荐对要替换的深度学习算法进行tensorRT加速。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/657739.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

端午赠礼:软件测试万能面试脚本,一节课学会软件测试,欸嘿

​ 写在前面&#xff1a; 又到端午了&#xff0c;四舍五入接下来马上要过年了&#xff0c;新一波的跳槽旺季马上来临&#xff0c;不知道你是不是已经安于现状&#xff0c;还是蓄势待发呢&#xff1f;最近我和我的同事们一顿讨论&#xff0c;拟写了大家可能会遇到的面试情况&…

大数据基础平台实施及运维

一、大数据介绍 1、为什么使用大数据技术 数据量越来越大&#xff0c;数据分析的实时性越来越强&#xff0c;数据结果应用范围越来越广。&#xff08;从用户的访问量、量、访问时间、访问频率&#xff0c;市场可以得到很多信息&#xff09; 2、大数据的定义 数据收集、数据…

随机数发生器设计(五)

随机数发生器设计&#xff08;五&#xff09;- 重播种、输出、自测试 4 重播种函数5 输出函数6 自测试 4 重播种函数 重播种函数利用熵输入及额外输入更新种子&#xff0c;同时对内部状态进行更新。重播种操作函数如下&#xff1a; 函数定义&#xff1a;SM3_RNG_Reseed(workin…

【数据库原理与实践】记忆型章节作业汇总

填空题部分&#xff1a; Chp 8 安全性与完整性 part 1&#xff1a; 数据库的安全性是指保护数据库以防止不合法的使用所造成的&#xff08; 数据泄露、更改或破坏 &#xff09;。计算机系统有三类安全性问题&#xff0c;即&#xff08; 技术安全 &#xff09;、管理安全和…

【gitflow】 概念基本介绍

gitflow 简介 什么是gitflow&#xff1f; 我们大家都很会用git&#xff0c;但是我们很少去关心我们要怎么用branch和版本控制。 只知道master是第一个主分支&#xff0c;其他分支都是次要分支&#xff0c; 那你知道如下的问题如何回答吗&#xff1f; 如何保证主分支的稳定…

vue3+ts封装axios 配置BASE_URL拦截器 单个接口的拦截 全局拦截器

1. config.ts 书写BASE_URL &#xff08; service/request/config.ts&#xff09; BASE_URL书写的方式很多 1: 直接在axios.create里面写死 &#xff0c;在打包或者测试的时候手动进行修改BASE_URL 2:新建一个文件 在文件里面判断当前的环境 进行赋值BASE_URL 3:定义.env文件 …

线程间同步

线程间资源竞争 int count 0;void * add(void *arg){int val,i;for(i 0;i< 5000;i ){val count;printf("%p: %d\n",pthread_self(),val);count val 1;}return nullptr; }int main(){pthread_t tida,tidb;pthread_create(&tida,NULL,add,NULL);pthread_c…

python爬虫进行AES解密遇到的问题

1、TypeError: Object type <class ‘str’> cannot be passed to C code 报错如下&#xff1a; File "C:\Python311\Lib\site-packages\Crypto\Util\_raw_api.py", line 143, in c_uint8_ptrraise TypeError("Object type %s cannot be passed to C cod…

【改进算法】混合鲸鱼WOA和BAT算法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

0101B站学习视频发留言找小伙伴-实用小工具系列

文章目录 1 起因2 找方法3 bilibili_api4 实现5 知识点结语 1 起因 经常在B站看学习视频&#xff0c;但是一个人学习&#xff0c;偶尔在想&#xff0c;我学的怎么样&#xff1f;有没有用&#xff1f;有没有谁可以一起交流下&#xff1f;好在现在有互联网&#xff0c;可以极大的…

WiFi各协议理论速度

一、总览 二、11b到11g提升点 802.11g工作在2.4G频段下&#xff0c;能够支持OFDM和CCK两种调制方式&#xff0c;提供16-QAM、64-QAM、BPSK和QPSK四种编码方式&#xff0c;我们通常说的54Mbps速率就是在2.4G频段下&#xff0c;通过OFDM调制&#xff0c;采用64-QAM编码的情况下实…

表达式和语句

表达式 可以被求值的代码&#xff0c;并将其计算出一个结果 语句 一段可以执行的代码&#xff0c;是一个行为&#xff0c;例如分支语句和循环语句 三大流程控制语句 以前写的代码&#xff0c;写几句就从上往下执行 &#xff0c;---顺序结构 有时候要根据条件 选择执行代码…

Spring源码之PostProcessor解析

系列文章目录 文章目录 系列文章目录前言一、PostProcessor是什么二、PostProcessor的作用三、Spring框架中有哪些PostProcessor呢BeanPostProcessorBeanFactoryPostProcessorInstantiationAwareBeanPostProcessorDestructionAwareBeanPostProcessorMergedBeanDefinitionPostPr…

Pinia 和 Vuex ,理解这两个 Vue 状态管理模式

Pinia和Vuex一样都是是vue的全局状态管理器。其实Pinia就是Vuex5&#xff0c;只不过为了尊重原作者的贡献就沿用了这个看起来很甜的名字Pinia。 本文通过Vue3的形式对两者的不同实现方式进行对比&#xff0c;让你在以后工作中无论使用到Pinia还是Vuex的时候都能够游刃有余。 …

Linux下在日志中打印时间戳

1、背景介绍&#xff1a;在实验过程中需要记录任务运行情况&#xff0c;为此需要在日志中增加时间戳打印信息&#xff0c;方便事后查看。 2、实现方法 示例如下&#xff1a; #include <stdio.h> #include <time.h> #include<string.h>void print_debug_me…

如何在iPhone上用ChatGPT替换Siri

To use ChatGPT with Siri on an iPhone or iPad, get an OpenAI API key and download the ChatGPT Siri shortcut. Enter your API key in the shortcut setup and select the GPT model you want to use, then hit “Add Shortcut.” Trigger the shortcut manually first t…

FreeRTOS实时操作系统(二)系统文件代码学习

文章目录 前言系统配置任务创建任务创建删除实践 前言 接着学习正点原子的FreeRTOS教程&#xff0c;涉及到一些详细的系统内文件代码 系统配置 可以通过各种的宏定义来实现我们自己的RTOS配置&#xff08;在FreeRTOSconfig.h&#xff09; “INCLUDE”&#xff1a;配置API函数…

【Java】catch里面抛出了异常finally里面的事务会提交吗?

文章目录 背景目前的代码直接实战演示单元测试总结 背景 我们公司的系统中有一个业务场景&#xff0c;需要第三方的账户数据同步到我们系统。 同步账号的同时&#xff0c;会将所有同步数据和是否成功记录到一张同步日志表中&#xff0c;方便排查问题和记录。 好了&#xff0c;…

window11系统CUDA、cuDNN 安装以及环境变量配置

文章目录 一&#xff0c;说明二&#xff0c;cuda的下载以及安装1. 确定自己电脑设备哪个版本cudaa. 点击左下角b. 点击左下角c.接着点击 组件 2. cuda的下载3. cuda的安装1. 双击 点击 ok2. 同意即可3. 这个随意哪个都行4.选择安装位置 接着下一步 三&#xff0c;cuda环境变量设…

Oracle安装时先决条件检查失败和[INS-35180] 无法检查可用内存问题解决

Oracle安装时先决条件检查失败和[INS-35180] 无法检查可用内存问题解决 问题&#xff1a; [INS-13001] 此操作系统不支持 Oracle 数据库问题原因解决方案 问题2&#xff1a;[INS-35180] 无法检查可用内存问题原因解决方案 问题&#xff1a; [INS-13001] 此操作系统不支持 Oracl…