
C++
ywfwyht
这个作者很懒,什么都没留下…
展开
-
CUDA中的原子操作
CUDA中的原子操作主要包括原子加(atomicAdd)、原子减(atomicSub)、原子与(atomicAnd)、原子或(atomicOr)、原子异或(atomicXor)、原子最小值(atomicMin)和原子最大值(atomicMax)等。在CUDA中,原子操作是一种同步方法,用于在多个线程之间共享数据。原子操作具有原子性、独占性和排他性,可以确保多个线程对共享资源的并发访问不会同步出错。原子操作用于对共享内存中的数据进行原子性读写操作,以避免多个线程同时访问同一个内存地址造成的数据竞争问题。原创 2023-12-05 21:23:21 · 2728 阅读 · 1 评论 -
ONNX模型及自定义plugin的动态链接库转TensorRT模型推理
ONNX是一种用于表示机器学习模型的格式,而TensorRT是一个高性能的推理引擎,用于在NVIDIA GPU上进行推理。自定义plugin则是指在TensorRT中自定义一些操作(如卷积、ReLU等),以提高模型推理效率。首先,需要定义一个继承自ITensorRT接口的plugin类,实现其对应的虚函数,例如前向计算函数和反向传播函数等。在实现以上步骤时,需要注意TensorRT的版本和系统配置。使用TensorRT的Python API或C++ API,将ONNX模型转换为TensorRT引擎。原创 2023-06-03 16:58:59 · 1134 阅读 · 2 评论 -
UKF跟踪算法原理及C++代码实现
其原理是通过对观测到的状态信息进行加权处理来计算系统的实际状态值。在上面的代码中,我们首先定义了状态变量和观测变量的维度,以及sigma点的个数和权重。利用系统状态的均值和协方差矩阵来构造一组sigma点,包括系统状态及其方差范围内的其他可能状态。根据预测状态的sigma点和权重,计算预测状态的均值和协方差矩阵。利用预测状态的均值和协方差矩阵,通过观测方程来计算观测值的sigma点。根据观测值的sigma点和权重,计算观测值的均值和协方差矩阵。根据预测状态的协方差矩阵和观测值的协方差矩阵,计算卡尔曼增益。原创 2023-05-28 15:29:19 · 2211 阅读 · 0 评论 -
基于C++的UKF代码示例,跟踪三次多项式曲线
这是一个简单的示例代码,可以根据需要进行修改和扩展。原创 2023-05-28 15:21:17 · 1627 阅读 · 0 评论 -
RANSAC原理及二次/三次多项式曲线拟合
RANSAC(RANdom SAmple Consensus)是一种经典的模型拟合算法,用于从一组杂乱的数据中找出最佳的模型。它的基本思想是随机选取一定数量的数据点,使用这些数据点来拟合模型,然后将所有数据点带入模型中,统计符合模型的数据点数量,如果符合数量超过阈值,则认为这些数据点符合这个模型,即它们是局内点(inlier)。重复以上过程,多次迭代之后,找到的最佳模型是拟合最优的模型,符合该模型的数据点就是局内点。RANSAC算法通常用于处理含有噪声或者异常数据的拟合问题,例如点云配准、图像匹配等问题。原创 2023-05-27 12:49:50 · 6635 阅读 · 5 评论 -
C ++中实现ResNet34代码
ResNet是一个深度残差神经网络,其基础结构是由多个残差块(Residual block)堆叠而成的。每个残差块包含两个卷积层和一个跳跃连接(shortcut connection),跳跃连接负责绕过这两个卷积层,直接连接两个卷积层的输入和输出,从而允许信息在深度网络中跳过某些层。请注意,这只是一个示例,实际上,ResNet34模型包含更多的层,每个层都需要设计相应的卷积核和步长。您可能需要花费更多的时间来实现一个完整的模型。实现ResNet34需要实现一些基本的模块,如卷积层、残差块等。原创 2023-05-26 21:25:53 · 917 阅读 · 1 评论 -
C++智能指针的介绍和代码示例
unique_ptr是一种独占式智能指针,它管理的是一个对象的唯一拥有权,同一时间只能有一个unique_ptr指向它。weak_ptr是一种弱引用智能指针,它指向一个由shared_ptr管理的对象,但是并不增加该对象的引用计数。shared_ptr是一种共享式智能指针,它可以有多个指针指向同一个对象。C++智能指针是一种特殊的指针类型,它能够自动管理动态创建的对象的内存。C++标准库提供了三种类型的智能指针:unique_ptr、shared_ptr和weak_ptr。原创 2023-05-26 21:02:05 · 182 阅读 · 0 评论 -
PyTorch C++ API 实现ResNet34 网络
这是一个基于 PyTorch C++ API 实现的简单示例,欢迎参考。原创 2023-05-26 20:57:39 · 450 阅读 · 0 评论 -
C++中虚函数、纯虚函数和多态的关系
它们都重写了该函数以实现多态,然后在。在这个代码示例中,我们创建了一个。对象的地址,然后分别调用它们的。函数,从而实现多态性。基类,它有一个虚函数。类型的指针,用于存储。原创 2023-05-26 20:55:09 · 139 阅读 · 0 评论 -
C++继承多态函数重载
在上面的示例代码中,子类 Dog 继承了父类 Animal 的成员函数 eat,并且重写了这个函数。在上面的示例代码中,我们定义了三个名称相同的函数 print,它们分别接受 int、double 和 const char* 类型的参数,这就是函数重载的体现。在继承中,子类可以继承父类的成员变量和成员函数,并且可以在子类中重写父类的成员函数。函数重载是 C++ 中的一个重要概念,它允许我们定义多个函数,它们在名称相同的情况下可以接受不同数量或类型的参数。函数进行了重载,分别定义了。在上面的代码中,我们对。原创 2023-05-26 20:50:46 · 2009 阅读 · 0 评论 -
C/C++读取txt文件中的float数据并用指针存储
在上面的代码中,我们使用了fopen()函数来打开example.txt文件,并将其存储在fp指针中。如果文件打开成功,则使用fgets()函数从文件中读取每行数据,并将其存储在缓冲区buffer中,最后将其输出到控制台。读取完所有数据后,我们使用fclose()函数关闭文件并释放资源。请注意,如果文件不存在或无法打开,fopen()函数将返回NULL。在这种情况下,我们使用条件语句来输出错误信息并退出程序。原创 2023-05-26 20:36:54 · 2925 阅读 · 0 评论 -
PCL:自定义点云PointT数据类型及字段信息
【代码】PCL:自定义点云数据类型及字段信息。原创 2022-12-22 15:47:49 · 801 阅读 · 0 评论 -
免费学习编程(python、C++...)的网址
geeksforgeeksrunoob.com廖雪峰C语言中文网原创 2022-12-13 11:10:24 · 203 阅读 · 0 评论 -
C++:激光点云bev预处理代码实现
【代码】C++:激光点云bev预处理代码实现。原创 2022-11-25 16:45:37 · 713 阅读 · 0 评论 -
点云BEV预处理的cuda代码实现
【代码】点云BEV预处理的cuda代码实现。原创 2022-11-25 16:41:24 · 696 阅读 · 1 评论 -
C++:RANSAC采样一致性算法拟合一元二次曲线
C++:RANSAC采样一致性算法拟合一元二次曲线原创 2022-11-11 17:54:45 · 1672 阅读 · 2 评论 -
PCL:激光点云车道线检测及最小二乘法拟合
PCL:激光点云车道线检测及最小二乘法拟合原创 2021-12-22 15:35:04 · 2370 阅读 · 3 评论 -
C++:读取二进制格式点云(读bin文件点云)
【代码】C++:读取二进制格式点云(读bin文件点云)原创 2022-11-03 19:37:07 · 1532 阅读 · 0 评论 -
3D激光点云霍夫变换拟合直线
可以看到笛卡尔坐标系下的点A、B、M映射到参数空间中实际上是线,而笛卡尔坐标系中的直线AB、直线BM映射到参数空间中实际上是点E、F。但由于垂直于X轴的直线,其斜率k无穷大、不存在,所以会导致点M、Z在参数空间中对应的线是平行的,没有交点,即该参数空间下无法描述k不存在的直线。可以看到笛卡尔坐标系下的点A、B、M映射到极坐标系下的参数空间中实际上是线,而笛卡尔坐标系中的直线ABM映射到极坐标系下的参数空间中实际上是点F。且对于平行于X或Y轴的直线也可以很好映射到参数空间下,保证其有交点。原创 2022-08-20 14:32:12 · 1282 阅读 · 0 评论 -
ubuntu:常用命令记录
在工作中经常会遇到计算两个向量间夹角问题,由于水平有限,知识面浅,不知道有什么好用的函数可以直接调用,因此,总结以下两个计算夹角的代码,记录于此。原创 2022-07-28 14:05:13 · 786 阅读 · 0 评论 -
C++:求两个二维向量或三维空间向量之间的夹角
求两向量间夹角二维向量三维向量二维向量template <typename DataType>double getDegAngle2d(const DataType v1, const DataType v2){ double theta = atan2(v2.y, v2.x) - atan2(v1.y, v1.x); //弧度 if (theta > M_PI) { theta -= 2*M_PI; } if (theta < -M_PI) { thet原创 2022-04-25 20:08:29 · 6245 阅读 · 0 评论 -
C++:Ubuntu遍历多级目录下文件
【代码】C++:Ubuntu遍历多级目录下文件。原创 2022-04-13 16:38:50 · 1345 阅读 · 0 评论 -
C++:用system创建及拷贝文件夹
【代码】C++:用system创建及拷贝文件夹。原创 2022-04-13 15:51:18 · 1945 阅读 · 0 评论 -
C++:利用PCL实现点云的水平校准
利用PCL实现点云的水平校准由于激光雷达在安装过程中,会出现安装误差,造成点云倾斜,这里假设激光点云只有俯仰的倾斜角度,所以我们需要通过水平校准来求得俯仰角,并将点云进行转换。过程1:对地面点云求地面拟合方程的法向量。过程2:根据地面的法向量及水平面的法向量(0,0,1)求夹角,即为激光雷达的安装俯仰角。过程3:跟据求得夹角,得到点云绕y轴的旋转矩阵(不考虑平移)。过程4:知道旋转矩阵,就可以对点云进行转换校准。1. RANSAC求地面拟合方程选取一帧地面比较平的点云pcd,然后用PCL封原创 2022-03-21 14:31:51 · 5362 阅读 · 7 评论 -
C++:利用boost::split 字符串分割
利用boost::split 字符串分割:在python中很多时候需要将字符串进行分离,利用os.path.split很容易实现, 但在C++ 中想要实现同样的效果该怎么做呢?在简单的尝试后,发现利用boost库可以很方便实现,下面给出示例代码#include <boost/algorithm/string.hpp>string path;vector<string> vec_out;boost::split(vec_out, path, boost::is_any_原创 2022-03-10 10:36:15 · 2902 阅读 · 0 评论 -
C++:基于激光雷达点云的ransac车道线多条拟合
如何通过ransac 多条曲线?原创 2022-02-16 11:13:42 · 3312 阅读 · 13 评论 -
激光雷达点云检测路沿/路边界探索
目前公开的检测算法多是基于机械式lidar,即可以获取lidar的ring信息,借助这个ring再去检测路沿。但我拿到的是lidar是速腾聚创的M1,这是一款半固态的激光雷达,在点云处理上有区别于机械雷达。经过多方尝试,目前用曲率的方法可以求得路沿点。...原创 2022-02-16 11:01:34 · 3712 阅读 · 0 评论 -
libsqlite3.so: error adding symbols: File in wrong format
***/anaconda3/lib/libsqlite3.so: error adding symbols: File in wrong formatcollect2: error: ld returned 1 exit statusspace_ground/CMakeFiles/space_ground.dir/build.make:338: recipe for target '/home/yht/CLionProjects/ground_ws/devel/lib/space_ground/spa.原创 2021-03-25 14:27:56 · 3476 阅读 · 0 评论 -
C++实现利用PCL旋转pcd点云数据
C++:利用PCL实现点云的水平校准_ywfwyht的博客-优快云博客利用PCL实现点云的水平校准由于激光雷达在安装过程中,会出现安装误差,造成点云倾斜,这里假设激光点云只有俯仰的倾斜角度,所以我们需要通过水平校准来求得俯仰角,并将点云进行转换。过程1:对地面点云求地面拟合方程的法向量。过程2:根据地面的法向量及水平面的法向量(0,0,1)求夹角,即为激光雷达的安装俯仰角。过程3:跟据求得夹角,得到点云绕y轴的旋转矩阵(不考虑平移)。过程4:知道旋转矩阵,就可以对点云进行转换校准。1. RANSAC求地面原创 2021-02-19 13:45:33 · 1123 阅读 · 0 评论