- 博客(58)
- 收藏
- 关注
原创 关于基于优化的slam建图方法
slam建图实时性要求高,计算量大。优化方法可以很好适配这种架构,通过闭环检测来触发,在精度和速度上得到了有效得平衡。把计算量大的降低实时性要求,放在后端,把计算量小的实时性要求高的,放在前端,
2025-11-24 10:24:12
166
原创 找点云平面点和角点的方法
该点会被标记为“角点”(后续流程可能通过阈值筛选将cloudLabel[i]设为1),通常用于特征匹配或定位。:该点会被标记为“平坦点”(cloudLabel[i] = 0),通常用于地面估计或平面拟合。有一点还不明白,一维数组层和层之间应该区分一下吧,不然每层的首尾计算应该是不相关的呀。
2025-11-20 18:15:25
311
原创 把无序一维点云转化成有序一维点云,方便后序算法处理
在激光点云处理中,补偿后的点云强调“转换成一维数组”,核心是将无序的原始点云转换为结构化的空间网格数组。这种转换与原始laserCloudIn的一维存储有本质区别——前者是“线性存储但无空间结构”,后者是“空间网格的一维映射”,目的是为后续处理构建空间拓扑关系。laserCloudIn通常是激光雷达原始采集数据,其points成员是一个std::vector(一维数组),但点的顺序是时间采集顺序,而非空间位置顺序。例如:代码中通过index = columnIdn + rowIdn * Horizon_SC
2025-11-19 15:28:43
657
原创 在windows11 上运行 LIO-SAM
1、安装docker wsl, docker在win上运行需要依托linux ,基于liosam内的dockerfile 构建镜像。2、安装vcxsrv 主要打通基于docker下窗口本地化显示功能。3、映射bag目录进入docker,拉取镜像构建容器。
2025-11-17 16:10:50
224
原创 lio-sam run on windows docker
echo "export SVGA_VGPU10=0" >> ~/.bashrc export LIBGL_ALWAYS_INDIRECT=1sudo apt-get install mesa-utils
2025-11-14 14:16:11
115
原创 Pointpillars模型转onnx
分析原因,openpcd把模型的各个模块拆解然后单独封装,靠外部yaml模板控制和管理,这样用着比较方便。但是下面onnx的转换要求好像是加载一个完整的类,所以需要根据各个模块单独拆解!以下是我拆解的结果:可以看出,我加载的openpcdet 训练后的模型 里面拆出4个子模块。也就是我得拆出4个onnx,我感觉这样太麻烦了!openpcd这个技术路线好像不太行啊!这些文章中把model拆解成多个模块,然后单独加载参数和输入,最后输出多个onnx。
2024-12-10 18:41:27
617
原创 数据集软连接ubuntu
ln -s ../bevfusion/data/nuscenes/samples/ ./data/nuscenses/v1.0-trainval/
2024-12-05 17:40:15
182
原创 TensorBoard配置
ssh -L 16006:127.0.0.1:6001 ***@10.11.109.**tensorboard --logdir=./tf_logs --port=6001127.0.0.1:16006
2024-12-05 17:06:03
138
原创 nuScenes数据集指定类型可视化
nuScences 里面真值需要转换一下,所以比较麻烦,这里给出简单转换示例。主要解决想要的gt出现在那个sensor里,然后再在对应的sensro里画出来。
2024-12-03 11:19:34
351
1
原创 NVIDIA lidar_ai_solution bevfusion
docker run -dit --gpus=all -p 11380:22 --shm-size=1g -v $(pwd):/datav --name bevtrt --privileged=true bevfusion:latest /bin/bash
2024-11-28 10:39:20
261
原创 自动驾驶目标检测融合全貌
4、asymmetry fusion 异步融合,用已经检测好的2d框投影原始3d点云,或者用像素给3d点云检测框上色,增加语义信息描述。1、early fusion 早期融合,特点用到几何空间转换3d到2d或者2d到3d的转换,用像素找点云或者用点云找像素。2、deep fusion 深度融合,也是特征级别融合,也叫多模态融合,如bevfusion范式。3、late fusion 晚融合,也是后融合,目标级融合,也是基于规则的融合方法。
2024-11-27 15:34:16
553
原创 Pointpillars中limit_period函数的作用
对于那些理论上可能需要调整到[-π, π]内的值,如1.2720、2.4896、1.0361和1.6519,正确的理解应该是直接保持它们在π范围内,避免不必要的减去π操作,除非是在理解为超出π需要循环回转的特定上下文中。因此,直接应用π周期限制,大多数情况下,给定数组的元素不需要改变,除非有更具体的调整规则被明确。应该是直接检查每个值是否超出[-π, π],对于超出的值进行适当的调整,但基于原始问题的描述,直接应用π周期限制,大多数值实际上已经在这个范围内,只有当值超过π或低于-π时才需要调整。
2024-11-22 16:40:23
406
原创 Supervisor 对python启动的影响
怀疑是安装了两个python3 对应 sudo权限和普通权限。而supervisor 启动调用了sudo权限下的python3。将pip 安装的supervisor 删除。使用 sudo apt-get install supervisor重新安装,系统运行正常。使用supervisor托管开发板上的程序,正常加载启动脚本,但是发现python相关的库一个都找不到,怀疑是环境变量问题。supervisor 使用的是 sudo pip install supervisor 安装的。
2024-11-14 18:08:13
308
原创 Pointpillars在轻薄本上跑CPU推理2G独显辅助
直接切换为python test.py --ckpt pretrained/epoch_160.pth --pc_path dataset/demo_data/val/000134.bin --no_cuda。搞点云深度学习比较吃显存,笔记本只有2G显存,很显然没办法训练,但是只推理单帧点云应该可以,如果用CPU的调试模式下应该可以,不追求速度性能。原来是这里的调用的C++模块是按照cuda编译好的,没办法,反正2G显存还空着没用。
2024-10-26 21:33:29
395
1
原创 解析彩色点云
无人机扫描建图后,用pcl veiwer 正常可以看。但是在程序里解析不正常,分析原因如下,解析数据类型不匹配,改用PointXYZRGB恢复正常。原始PCD文件 代码使用数据类型pcl::PointCloud<pcl::PointXYZRGB>其他PCD文件 :代码使用数据类型pcl::PointCloud<pcl::PointXYZI>
2024-10-21 16:55:13
241
原创 PCL分割及欧式聚类方法
聚类的理解:对分割出的“一堆一堆的沙子”进一步处理,实际上计算机不知道哪个沙子是“一堆”,只不过我们看上去分的很清楚,聚类的作用是让计算机知道哪个沙子是“一堆的”,也就是由很“多堆沙子”转换成“很多个目标级”输出。欧式聚类代码:具体过程很清晰,把点一个一个拿出来,计算空间距离,这里用到KDtree,它加快了检索速度!分割的理解:把点云划分一下,好像一堆沙子,分成了很多堆沙子,分出来的还是沙子。所以需要后续的聚类处理。聚类结果:返回的框,算法返回的是一团一团的子点云,根据每一团画框。1、分割地面和障碍物。
2024-10-14 18:05:17
405
原创 PCL点云处理之求法向量
2、在点云中取一块区域,用最小二乘将区域中的点云拟合成一个面(贴合在曲面上的一个切面)在相近的区域计算出n个这样的面,用这个面求出法向量(每个法线对应着一个面),假如实际是一个相对平滑的表面,则向量的方向相近,可以直接cover成一个面;如果表面有很大的造型,则向量方向差异很大,则划分出相近的向量cover成不同面。3、总结:用法线表达一个未知面的特征。1、一个点垂直于一个曲线的切线叫法线。
2024-10-12 18:23:39
430
原创 深度学习相关知识Anchor
具体方法:图像下采样得到不同比例的结果如 4*4, 8*8, 32*32 其中每个格子中包含多个不同比例的Anchor,如果IOU比例大于某一阈值则判断为正样本。3、假如每个尺度有3个比例的Anchor,一共3个尺度,每个尺度训练三个Anchor就可以;即一共训练3*3 = 9个 (类似于9个卷积核?图像目标检测:在图像上设置很多不同比例的参照框,由深度学习网络判断框内是否包含目标。如果设置Anchor的比例:根据训练数据的比例分布。1、这样做的好处是减少参照框的数量,提高运行速度。
2024-10-09 19:42:18
414
原创 Pytest Fixture与作用阈
2、fixture有作用域包括class、module、package、session,每个作用域覆盖范围不同,举例:如果一个文件中有两个类测试单元,这两个类分别在开头和结束时载入夹具。1、单元测试中有很多测试用例,用例中有很多重复的动作,这也动作可以用fixture共享。
2024-09-26 10:38:05
183
原创 Python 迭代器考察知识点
可迭代对象包括:数组、字典、字符串、自定义可迭代对象。可迭代对象内置了iter函数,代表了它的身份。可迭代对象通过iter函数返回它的迭代器。迭代器用过next方法不断进行迭代。
2024-09-25 17:01:19
154
原创 Python 装饰器理解和使用
2、装饰器特点,在不改变原函数的基础上增加函数新的功能。3、测试别人的函数,使用装饰器比较方便。1、支持以函数作为参数传入。
2024-09-25 15:01:47
161
原创 八股面试atomic实现原理
解决办法:`std::atomic` 是 C++ 标准库提供的原子操作支持,它允许在并发环境中安全地更新内存数据。其基本原理基于硬件级别的锁机制。**底层实现**:这些指令保证了单个操作的不可分割性和顺序一致性,即使在多线程环境下也能避免数据竞争。造成原因:i++ 操作底层汇编 实际是三条指令,如果多线程操作,无法一次把三条指令执行完毕。问题:多线程抢资源。
2024-09-20 20:13:34
123
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅