- GPU&CPU版本passthrough的时间统计
每一帧有2万个点的情况下:
这么看还是CPU快,因为哪怕是cuda一个维度的filter都要3ms,3个维度怎么也大于CPU的5ms.
后面的GPU版本的lidar处理的比较快,是因为打印了 none of input points.return directly.
CPU版本的处理了点云。
- 统计激光雷达过程中的时间
lidar_process_->Process 总共56ms
roi_filter_->Filter 16ms
segmentation_->Segment 48.5-16.3=32ms
object_builder_->Build 52.2-48.5=4ms
tracker 54.9-52.2 =3ms
可以看到耗时时间最长的是 segmentation.用的时间是 52.8791-16.15 = 32ms
把这一部分再弄出来看看时间:7000个点
VoxelGrid 1ms
project #cloud into XY-space 0.5ms
RadiusOutlierRemoval 10ms
Region 20ms 主要的耗时在这里
总共是32ms基本符合
Segmentation 一共有32ms
总结一下,
- 现在库版本的cuda耗时太大,哪怕是不进行内存操作,耗时也比较大,CUDA在这块不适合加入。
- 目前耗时最严重的是region的处理,这里占用了激光雷达时间(50ms)处理2/5。另外半径滤波那里也占用了1/5。
- 体素滤波加入,参数设置大一些,会大幅降低计算。我认为主要是region的计算。
- Parmater 和 getparmater 的区别
Parmater:需要默认参数 :(参数名字(launch文件中的),值,默认值),如果是两个的话(参数名字(launch文件中的),默认值),就是默认值。
Getparmater:直接获取参数(参数名字(launch文件中的),值)
- std::chrono’ has not been declared
加入头文件,
#include <chrono>