- 博客(183)
- 资源 (2)
- 收藏
- 关注
原创 激光雷达障碍物检测与追踪实战——cuda版欧式聚类
我实际测试过,cuda版本的欧式聚类耗时3ms左右,速度提升了10倍左右!直接看代码,注释很详细。
2022-07-15 17:10:22
1798
5
原创 apollo 7.0——工厂设计模式解析
代写!!!工厂方法是一种创建型设计模式,与简单工厂(Simple Factory)、抽象工厂(Abstract Factory)一并称为工厂模式,关于三者的区别可以概括为:应用:工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。在设计的初期,就考虑到产品在后期会进行扩展的情况下,可以使用工厂
2022-07-15 15:02:53
1199
原创 Apollo 7.0——percception:lidar源码剖析(万字长文)
本文先以感知模块为例,先讲解组建如何启动,后对模块代码进行剖析先看perception模块的目录结构组件启动 是核心的组件之一,但像所有的 C++ 程序一样,每个应用都有一个 main 函数入口,那么引出本文要探索的 2 个问题:将 模块时,很有必要先看看cyber 运行时框架(Apollo Cyber RT Framework) 是基于组件概念来构建的. 每个组件都是Cyber框架的一个构建块, 它包括一个特定的算法模块, 此算法模块处理一组输入数椐并产生一组输出数椐。ROS 应用于自动驾驶领域的不
2022-07-12 16:37:58
2081
原创 apollo 7.0——单例设计模式解析
三个要点:单例模式有两种实现方法:分别是懒汉和饿汉模式。懒汉模式,即非常懒,不用的时候不去初始化,所以在第一次被使用时才进行初始化;饿汉模式,即迫不及待,在程序运行时立即初始化。例模式(饿汉模式和懒汉模式),线程安全版本实现:私有化构造函数,以防止外界创建单例类的对象;使用类的私有静态指针变量指向类的唯一实例,并用一个公有的静态方法获取该实例。应用场景:资源共享的情况下,避免由于资源操作时导致的性能或损耗等,如日志文件,应用配置。在单例类定义时实例化,不需要用锁,就可以实现线程安全。优点:这种写法比较简单
2022-07-12 14:31:23
1372
原创 CUDA——内存管理
内存管理CUDA是C语言的扩展,内存方面基本集成了C语言的方式,由程序员控制CUDA内存,当然,这些内存的物理设备是在GPU上的,而且与CPU内存分配不同,CPU内存分配完就完事了,GPU还涉及到数据传输,主机和设备之间的传输。为达到最优性能,CUDA提供了在主机端准备设备内存的函数,并且显式地向设备传递数据,显式的从设备取回数据。统一内存Unified Memory统一内存是可从系统中的任何处理器访问的单个内存地址空间(参见上图)。 这种硬件/软件技术允许应用程序分配可以从 CPU 或 GPU 上
2022-05-23 16:49:27
3170
1
原创 kitti转bag(修改kitti2bag添加强度intensity信息)
文章目录Raw Data简介kitti2bag生成bag修改kitti2bagRaw Data简介Raw Data 数据地址:http://www.cvlibs.net/datasets/kitti/raw_data.php原始数据记录,按类别排序(城市、住宅、道路、校园、人、校准)数据集包含以下信息,以 10 Hz 的频率捕获和同步:原始(unsynced+unrectified)和处理(synced+rectified)灰度立体序列,由两个灰度相机cam0和cam1采集,对应文件夹imag
2022-05-04 02:07:42
1477
原创 OpenPCDet——环境配置和训练测试(升级系统、Nvidia驱动、cuda11.3、cudnn8.2)
文章目录NVIDIA 驱动升级CUDA安装笔记本显卡驱动NVIDIA 418,cuda9.0 比较旧,和工作的环境不兼容,导致tensorRT装版本也不一致,决定把GTX 1060显卡升级到最新的驱动NVIDIA 驱动升级sudo apt-get remove --purge nvidia*sudo sh NVIDIA-Linux-x86_64-418.56.run --uninstall禁用nouveausudo gedit /etc/modprobe.d/blacklist.conf在
2022-04-30 22:39:05
7674
36
原创 TensorRT8——ONNX转trt
CUDA安装首先需要确保正确安装CUDA,安装后通过nvcc -V验证是否安装。下载TensorRThttps://developer.nvidia.com/nvidia-tensorrt-8x-download
2022-04-28 23:08:25
5819
原创 ROS——一文读懂:tf_monitor、static_transform_publisher、tf_echo
虽然 tf 主要是一个用于 ROS 节点的代码库,但它带有大量命令行工具,可帮助调试和创建 tf 坐标系。 这些工具包括:view_frames:可视化坐标变换的完整树。tf_monitor:监控帧之间的转换。tf_echo:将指定的变换打印到屏幕上roswtf:使用 tfwtf 插件,帮助您追踪 tf 的问题。static_transform_publisher 是一个用于发送静态转换的命令行工具。您可能还希望使用 tf_remap 节点,它是用于重新映射坐标变换的实用
2022-04-28 20:10:05
1092
原创 C++ ——一文读懂:noexcept、override、final
noexcept在C++11中,我们可以通过noexcept来指定某个函数不会抛出异常。比如下面就是std::initializer_list的默认构造函数,其中使用了noexcept。constexpr initializer_list() noexcept : _M_array(0), _M_len(0) { }该关键字告诉编译器,函数中不会发生异常,这有利于编译器对程序做更多的优化。如果在运行时,noexecpt函数向外抛出了异常(如果函数内部捕捉了异常并完成处理,这种情况不算
2022-04-28 13:58:01
1506
原创 一文解决——linux和windows免费安装typora
重装了系统,装个typora看看,尽然收费了!!!下载链接: https://pan.baidu.com/s/1a7xIoVAhooGD3NGYVDJgbA 提取码: wew7安装tar xzvf Typora-linux-x64.tar.gz cd binsudo cp -ar Typora-linux-x64 /optcd /opt/Typora-linux-x64/#启动./Typora下面为了在任意位置启动,我们设置下环境变量sudo vim ~/.bashrc打开.ba
2022-04-10 00:29:14
20099
17
原创 激光雷达障碍物检测与追踪实战——基于同心区域的区域地面分割和地面似然估计
文章目录Patchwork原理问题定义同心区模型区域级地平面拟合地面似然估计代码解析提取ROI体素滤波patchwork地面过滤实践运行效果对于在地面移动平台上导航或邻近目标识别,地面分割是至关重要的。然而,地面并不平坦,存在陡峭的斜坡;崎岖不平的道路;或物体,例如路缘石、花坛等。为了解决该问题,下面学习一种最新的地面分割方法,它对于解决分割不足问题具有鲁棒性,并且工作频率超过 40 Hz。以下重点介绍了 Patchwork 每个模块背后的问题定义和推理。 Patchwork 主要由三部分组成:CZ
2022-04-07 02:35:32
6244
原创 大厂面试八股文——网络编程
什么是同步I/O,什么是异步I/O同步(阻塞)I/O:在一个线程中,CPU执行代码的速度极快,然而,一旦遇到IO操作,如读写文件、发送网络数据时,就需要等待IO操作完成,才能继续进行下一步操作。这种情况称为同步IO。异步(非阻塞)I/O:当代码需要执行一个耗时的IO操作时,它只发出IO指令,并不等待IO结果,然后就去执行其他代码了。一段时间后,当IO返回结果时,再通知CPU进行处理。事件处理模式reactor模式中,主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话立即通知工作
2022-04-05 18:56:01
672
原创 大厂面试八股文——海量数据处理
文章目录海量数据topK海量数据排序海量数据去重海量数据检测重复海量数据找中位数海量数据topK最大K使用最小堆,最小K使用最大堆,这里以最大K为例先将海量数据hash再取模m,分成m个小文件,hash(num)%m,也可以直接取模在每个小文件中维护K个数据的最小堆,堆顶是当前堆中的最小值遍历每个小文件中剩余的数据,与堆顶的数据进行比较,更新最小堆中的数据生成m * K个数据,然后对这些数据再进行排序,或者再次通过维护最小堆海量数据按照出现的次数或者频率排序,topK
2022-04-05 18:54:02
2185
原创 大厂面试八股文——数据库redis
文章目录最大缓存配置分布式和集群限流算法的几种实现集群限流Redis实现排行榜在分布式网络中如何保证数据一致性。paxos高可用理解高并发高可用---限流高并发的实践方案有哪些?高性能高可用高扩展分布式-CAP与ACID原则一个key的value较大时的情况如何保证缓存与数据库的一致性先删缓存,再更新数据库先更新数据库,再删除缓存其他解决方案redis数据结构简单动态字符串链表字典(哈希表)跳跃表整数集合压缩列表Redis值对象的类型和应用场景string(字符串):hashlist(列表)set(集合)z
2022-04-05 18:50:29
2917
原创 大厂面试八股文——数据库mysql
文章目录手撕mysql命令非关系型数据库和关系型数据库区别,优势比较?什么是临时表,临时表什么时候删除?什么是sql注入,怎么防止SQL注入mysql集群,集群出现延迟如何解决mysql几种日志数据库高并发的解决方案优化 sql 语句的一般步骤索引的底层实现sql 查询语句确定创建哪种类型的索引,如何优化查询B树与二叉树的对比MySQL B+Tree 索引和 Hash 索引的区别?Hash 索引B+Tree 索引为什么用B+树,为什么不用红黑树和B树B树和B+树的区别B+树一个节点有多大?一千万条数据,B+
2022-04-05 18:42:42
4844
1
原创 大厂面试八股文——STL
文章目录STL理解STL空间适配器sort1.vetcor2.list双向链表3.deque双向队列3.1.stack()堆3.2.queue队列4.红黑树RB-tree4.1 set、multiset4.2 map、multimap5 hashtablehashtable(哈希表)vector和list的区别unordered_map和map的区别算法equalSTL理解① 长久以来,软件界一直希望建立一种可重复利用的东西。② C++的面向对象和泛型编程思想,目的就是复用性的提升。③ 大多数情况下
2022-04-05 18:39:58
1893
原创 大厂面试八股文——数据结构
文章目录二叉树最大堆和最小堆二分查找二叉搜索树:平衡二叉树(AVL树):红黑树基于磁盘IO角度来看二叉树、B-tree树、B+树相关概念B-Tree与二叉查找树的对比B树B+树哈希表哈希表的实现构造哈希处理哈希冲突为什么哈希桶的长度和除留余数法的M为质数?跳表跳表的查找、插入和删除跳表和红黑树的对比树和图的区别二叉树二叉树定义n个结点的有限集合,该集合为空集,或者一个根节点和两棵互不相交的、分别称为根节点的左子树和右子树的二叉树组成满二叉树一棵二叉树中所有分支结点都存在左子树和右子树,并
2022-04-05 18:38:09
4240
原创 大厂面试八股文——排序算法
文章目录交换排序冒泡排序快速排序选择排序简单选择排序堆排序插入排序直接插入排序希尔排序归并排序基数排序稳定:冒泡,插入,归并交换排序冒泡排序依次比较相邻两元素,若前一元素大于后一元素则交换之,直至最后一个元素即为最大;然后重新从首元素开始重复同样的操作,直至倒数第二个元素即为次大元素;依次类推。如同水中的气泡,依次将最大或最小元素气泡浮出水面。#include <iostream>#include <algorithm>#include<vector>
2022-04-05 18:35:59
535
原创 大厂面试八股文——计算机网络
文章目录RESTfulREST的指导原则资源资源方法REST和HTTP不一样!!ip地址、子网掩码、单机服务器最大并发的TCP连接数到底是多少带外数据和TCP紧急指针linux主机同步文件两台主机输入同一个url地址出现页面不同可能的原因。为啥网络要分层设计数据传输速率DNS域名解析的工作过程和原理一个机器的端口号上限,端口超过限制怎么办?单条记录高并发访问的优化UDP如何实现可靠传输TCP(UDP,IP)等首部的认识(http请求报文构成)OSI七层协议及TCP/IP四层协议MAC地址和IP地址对路由协议
2022-04-05 18:29:01
6416
原创 大厂面试八股文——C++
文章目录可变参数-printf的实现原理编译语言和解释语言C++空指针调用成员函数std::move移动语义std::move的实现完美转换malloc函数底层实现被free回收的内存是立即返还给操作系统吗?定义和声明的区别调试程序的方法遇到coredump要怎么调试引用作为函数参数以及返回值的好处成员初始化列表的概念,为什么用成员初始化列表会快一些this指针,类对象调用普通的成员函数定义常量/处理返回值/拷贝赋值函数的形参只能引用编译底层内存区域的划分和分配内存分配方式LINUX进程区分段及存储数据被f
2022-04-05 18:17:16
4324
原创 Ubuntu——vscode设置C++代码格式化(Clang-Format)
文章目录安装插件:首选项设置生成.clang-format文件安装插件:首选项设置File --> Preference --> setting --> 搜索 clang_format1.勾选format on save 自动保存,如果不勾选的话,在文档中可以通过右键菜单或者快捷键:Ctrl + Shift + I来格式化On Windows Shift + Alt + fOn Mac Shift + Option + fOn Ubuntu
2022-04-01 23:42:10
5413
原创 VoxelNet:基于点云的端到端 3D 物体检测网络
文章目录网络结构特征学习网络Voxel PartitionGroupingRandom SampllingVoxel Feature Encoding,VFESparse Tensor Representation卷积中间层区域提出网络(RPN)损失函数网络结构VoxelNet 将点云划分为等间隔的3D体素(Voxel),并通过新引入的体素特征编码(VFE)层将每个体素内的一组点转换为单一特征表示。通过这种方式,点云被编码为具有描述性的体积表示,然后将其连接到 RPN 以生成检测结果。VoxelNet
2022-03-31 12:38:56
647
原创 模型部署——初识TorchScript
TorchScript是PyTorch模型(nn.Module的子类)的中间表示,可以在高性能环境(例如C ++)中运行。
2022-03-26 23:14:17
450
原创 手撕自动驾驶算法——多目标跟踪:数据关联
KF(或其变体)提供了提供对象轨迹的最佳估计的能力,但由于测量的不确定性,无法保证被跟踪对象实际上是相关对象。因此,对估计的轨迹进行后续分类和验证是非常必要的。数据关联(DA)是将检测结果关联到跟踪滤波器的过程, DA 滤波器有两类:确定性滤波器和概率滤波器。确定性 DA 滤波器的代表是最近邻域滤波器 (NNF) 算法,该算法使用相对状态的最近测量值更新每个对象。 NNF 根据测量和轨迹之间的最短欧几里德或马氏距离将对象与已知轨迹相关联。当多个测量值彼此靠近,可能导致单个测量值被错误地更新所有其他附
2022-03-26 17:06:27
2454
原创 手撕自动驾驶算法——多目标追踪:imm交互式多模型
IMM模型基本运作原理若只使用一种系统动态模型的卡尔曼滤波器去对一个系统动态模型处于变化之中的目标进行状态跟踪估测的话,会产生不准确性。那么一个很直观的想法就是,使用几种它可能处于的系统动态模型的卡尔曼滤波器模型去分别对它进行状态估测,然后将这些结果以一定的比例进行融合。基于这种思路开发出来的算法就是Interacting Multiple Model(IMM)模型。其中,它将基于目标有可能具备的系统状态模型的卡尔曼滤波模型,利用同一个测量值,来对不同的目标物的系统状态模型,进行状态估测,最后以一定的比
2022-03-13 00:35:05
5415
1
原创 手撕自动驾驶算法——贝叶斯角度推导卡尔曼滤波
什么是运动:考虑从k-1时刻到k时刻,位置x如何变化什么是观测:在k时刻xkx_kxk处探测一个路标yjy_jyj运动方程:xk=f(xk−1,uk,wk)x_k=f(x_{k-1},u_k,w_k)xk=f(xk−1,uk,wk)uku_kuk表示传感器的读数,wkw_kwk表示噪声观测方程:在xkx_kxk处看到某个路标点yjy_jyj,产生一个观测数据zk,jz_{k,j}zk,jzk,j=h(yj,xk,vk,j)z_{k,j}=h(y_j,x_k,v_{k,j}
2022-03-11 20:43:37
898
原创 手撕自动驾驶算法——主成分分析PCA
主成分分析PCA是一种最常用的降维方法,通常用于高维度数据集的探索与可视化,还可以用作数据压缩和预处理等。PCA可以把具有相关性的高维度变量合成为线性无关的低维变量,称为主成分。主成分能够尽可能保留原始数据的信息。涉及到的相关术语:方差:是各个样本和样本均值差的平方和的均值,用来度量一组数据的分散程度。S2=∑i=1n(xi−x)2n−1S^{2} = \frac{\sum_{i=1}^{n}(x_i-x)^2}{n-1}S2=n−1∑i=1n(xi−x)2协方差:用于度量两个变量之
2022-03-10 14:51:26
535
转载 激光雷达障碍物检测与追踪——聚类点云簇包围框的拟合方法
包围框定义什么是包围框?包围框是指一个简单的几何空间,在三维点云中,里面包含的是聚类后的一系列点集。为目标点集构建包围框能够提取出障碍物的几何属性给跟踪模块作为观测值;将零散的目标点云通过包围框转换成规则物体,会使决策模块更易规划运动轨迹。包围框分类有哪些包围框类型?点云包围框的类型主要包括轴对齐包围框、方向包围框、固定方向凸包等。在道路目标的障碍物检测中,由于障碍物通常在地面上,所以从简化计算的角度,包围框的拟合可以先在目标点集的Z方向检索最小值/最大值,再对点集做XY平面上求取包围框。
2022-03-10 13:07:15
2796
原创 Img2Col卷积与稀疏卷积
Img2Col卷积:https://blog.csdn.net/weixin_42405819/article/details/118416675。稀疏卷积:https://zhuanlan.zhihu.com/p/383299678。
2022-03-02 14:55:35
276
原创 激光类雷达障碍物检测与追踪——DON点云滤波
void differenceNormalsSegmentation(const pcl::PointCloud<pcl::PointXYZ>::Ptr in_cloud_ptr, pcl::PointCloud<pcl::PointXYZ>::Ptr out_cloud_ptr){ float small_scale = 0.5; float large_scale = 2.0; float ang
2022-02-26 15:05:37
3586
1
原创 C++ ——一文读懂:实现split函数
getline实现实现单分割符的split功能#include <iostream>#include <string>#include <sstream>using namespace std; int main() { stringstream input("45,65,45231,4646,4564"); string str; while (getline(input, str, ',')) { cout <
2022-02-25 12:44:05
1708
原创 Opencv——minAreaRect()计算最小外界矩形
minAreaRect()函数计算并返回指定点集的最小区域边界斜矩形RotatedRect minAreaRect(InputArray points)point:输入信息,可为包含点的容器vector或matRotatedRect:返回一个轮廓的外接矩形,包覆输入信息的最小斜矩形,是一个Box2D结构rect:(最小外接矩形的中心(x,y),(宽度,高度),旋转角度)。旋转角度θ是水平轴(x轴)逆时针旋转,与碰到的矩形的第一条边的夹角。并且这个边的边长是width,另一条边边长是h
2022-02-18 11:07:00
5189
原创 激光雷达障碍物检测与追踪实战——基于欧几里德聚类的激光雷达障碍物检测
激光雷达是实现无人驾驶环境感知的重要传感器,激光雷达以其稳定可靠、精度高并且能同时应用于定位和环境感知而被广泛采用现今,点云上的深度学习变得越来越流行,涌现许多基于深度神经网络的点云端到端检测算法,该方法依赖密集点云,通常采用高线的激光雷达,对于低速,简单场景下,低线激光雷达采用聚类方法也可以取得较好的障碍物感知效果。
2022-02-17 11:07:02
9642
44
原创 使用3DLiDAR传感器进行基于同心区域的区域地面分割和地面似然估计
论文:https://arxiv.org/pdf/2108.05560.pdfgithub:https://github.com/LimHyungTae/patchwork摘要对于在地面移动平台上导航或邻近目标识别,地面分割是至关重要的。然而,地面并不平坦,存在陡峭的斜坡;崎岖不平的道路;或物体,例如路缘石、花坛等。为了解决该问题,本文提出了一种创新的,称为 Patchwork 的地面分割方法,它对于解决分割不足问题具有鲁棒性,并且工作频率超过 40 Hz。本文中,点云以基于同心区域模型划分,在 bi
2022-02-16 10:39:17
3804
2
原创 Class-balanced Grouping and Sampling for Point Cloud 3D Object Detection
本文算法在CVPR 2019自动驾驶Workshop 3D目标检测挑战赛中赢得了冠军。作者利用稀疏3D卷积提取丰富的语义特征,并将其输入到一个类别平衡的多头网络中进行3D目标检测。为了解决自动驾驶场景中天然存在的严重类别不平衡问题,作者设计了一个类别平衡采样和增强策略以生成一个更加平衡的数据分布。此外,作者还提出了平衡分组网络头,提升了具有相似形状类别的分类性能。本文提出的算法在所有评估指标上大幅优于PointPillars,在nuScenes数据集上达到SOTA的检测性能。
2022-02-11 20:58:42
848
地面分割方法:基于同心区域的区域地面分割和地面似然估计
2022-04-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅