![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 69
Dr. Qing
主要从事 激光雷达的 三维重建,语义分割与识别 等自动驾驶相关领域的课题研究
展开
-
Livox Lidar 特征提取方式总结
传统的 旋转式雷达,激光固定在雷达的旋转部件上, 依靠转子的转动而获得360的旋转视野,由于旋转部件的存在,为了获得更加精准的数据,需要跟多的人工校准和更复杂的设计,也因此推高了其价格。 不过因为很直观的数据方式,所以 edge 特征和 plane 特征也比较直观。Livox 雷达推出的特有的非重复扫描方式,使得特征提取变得不那么直观,而且LIvox 推出的自由的数据结构方式,加上ROS原有的 Pointcloud2 使得很多开源的SLAM 算法只支持一种数据格式, 导致很多辛辛苦苦采集的数据不能直接使用原创 2021-11-16 18:39:09 · 4458 阅读 · 3 评论 -
C++ thread 中join 和 detach 的区别
// g++ test.cpp -std=gnu++11 -lpthread#include<iostream>#include<thread>#include<unistd.h>void fun1(int n){ for(int i=0; i<10; i++){ std::cout<< "Func1" <...原创 2019-04-15 10:21:40 · 762 阅读 · 0 评论 -
cmake、make、make install
如果经常在Linux系统下面与C、C++文件打交道的话,一定经常遇到四/五步走:mkdir buildcd buildcmake ..make// 如果是安装依赖库的时候会用到make install前两步并不难理解,就是想把对应项目的编译文件放在build目录下,这样便于管理。如果要传送源文件,可以直接删除build文件夹。编写程序的主要步骤Edit: 使用编辑器编写源代码...转载 2018-09-21 11:41:01 · 479 阅读 · 0 评论 -
C++ Yaml文件解析安装及使用 yaml-cpp
C++ Yaml文件解析安装及使用安装 yaml-cpp克隆官方库编译 yaml-cpp示例代码robot.cpprobot.yaml编译 robot.cpp运行结果难点分析与总结什么是 .a 与 .so 文件静态链接库(.a) 与动态链接库(.so)静态链接库动态链接库g++(gcc)编译选项参考文章安装 yaml-cpp克隆官方库git clone https://github.co...原创 2018-09-21 11:34:41 · 19895 阅读 · 5 评论 -
Linux 下共享内存实例(shmget shmat shmdt)
c程序实现写内存读内存运行结果总结c程序实现写内存/* * rShareM.c * * Created on: 2011-11-20 * Author: snape */#include &lt;stdio.h&gt;#include &lt;sys/shm.h&gt;#include &lt;unistd.h&gt;#inc...原创 2018-09-14 11:47:26 · 1528 阅读 · 0 评论 -
Linux 下 openMP 效率并未提升的解决方案
OpenMP 正确观察计算时间在使用 openmp的过程中, 使用了简单的 #pragma omp parallel 但是观察计算时间并未得到优化// 使用 openmp 优化的代码#include &amp;amp;amp;lt;stdio.h&amp;amp;amp;gt;#include &amp;amp;amp;lt;omp.h&amp;amp;amp;gt; #include &amp;amp;amp;l原创 2018-09-03 18:01:30 · 5297 阅读 · 2 评论 -
c++ 下传递字符串的两种方式
char* 传递void OutputRecodingDataToCSV(char* info, int id);void ThreadDataRecording::OutputRecodingDataToCSV(char* info, int id) { std::ofstream outFile; outFile.open("/home/moi/SlamKart...原创 2018-08-30 10:30:15 · 9958 阅读 · 0 评论 -
Ubuntu 下 openMP 多核编程学习 的八个实例
openMP会从主线程当中 fork() 出若干个线程,这些线程能够分配给不同的处理器并行执行,提升效率。每一个线程都会赋予一个id,可以通过omp_get_thread_num() 命令查看当前线程的id号。 id 是一个整形的常数,主线程的id是0,各个子线程结束后主线程会返回主线程原创 2018-08-29 16:53:27 · 5317 阅读 · 4 评论 -
C++ 菜鸟之路 (四) boost::thread 多线程全解析
boost::thread 的一般用法boost::thread的几个函数lock() 函数boost::thread 的一般用法/*thread.cpp*/#include &amp;amp;amp;lt;boost/thread/thread.hpp&amp;amp;amp;gt; #include &amp;amp;amp;lt;iostream&amp;amp;amp;gt; #include &原创 2018-08-24 18:43:26 · 13703 阅读 · 0 评论 -
C++智能指针 auto_ptr shared_ptr weak_ptr
auto_ptrauto_ptr是C++标准库中()为了解决资源泄漏的问题提供的一个智能指针类模板(注意:这只是一种简单的智能指针)auto_ptr的实现原理其实就是RAII,在构造的时候获取资源,在析构的时候释放资源,并进行相关指针操作的重载,使用起来就像普通的指针。对于编译器来说,智能指针实质是一个栈对象,而并非指针类型。智能指针通过构造函数获取堆内存的管理所有权,而在其生命期...原创 2018-08-30 19:41:12 · 287 阅读 · 0 评论 -
C++ 命名空间 namespace的 嵌套
#include &lt;stdlib.h&gt;#include &lt;iostream&gt;namespace detail // 定义一个namespace{const int i=99;}namespace ant // namespace 嵌套{ namespace blas { const int i=0; }//end ...原创 2018-08-30 17:40:59 · 9806 阅读 · 0 评论 -
C++ 菜鸟之路 (三) Vector 的使用 与 csv文件读写
Vector 的基本用法Vector 的相关算法使用reverse将元素翻转sort排序升序排列降序排列vector &amp;lt; vector &amp;lt; string&amp;gt; &amp;gt; 双层vector使用文件处理与Vector应用Vector 的基本用法在c++中,vector 是一个十分有用的容器, 相比一般的数组可一方便的进行插入和删除, 可以方便的查...原创 2018-08-16 16:38:51 · 5145 阅读 · 1 评论 -
C++ 菜鸟之路 (二) const 的多样应用
总结const 修饰普通变量和指针const修饰变量const修饰指针const修饰函数参数const 修饰函数返回值const修饰成员变量const修饰成员函数const常量与define宏定义的区别总结 使用类型 使用样式 效果 const修饰变量 const TYPE value const修饰的类型为TYPE的变...原创 2018-08-15 15:00:22 · 291 阅读 · 0 评论 -
C++ 菜鸟之路 (一) 宏定义整理
宏定义 #define常用宏定义命令不带参宏定义带参的宏定义宏函数#pragma宏定义 #define宏定义能够在代码中直接替换相关的内容,恰当地使用可以提高程序的执行效率,提高程序的清晰度和可读性,提供了一种复用方式(否则都得用函数编写),省去了分配和释放栈帧、传参、传返回值等一系列工作, 但是大量使用也会造成代码可读性下降。常用宏定义命令 命令...原创 2018-08-15 13:17:02 · 1044 阅读 · 0 评论