自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 资源 (3)
  • 收藏
  • 关注

原创 适配多版本的eigen

有时不同的项目需要使用不同版本的eigen,但是安装eigen时,如果简单的cmake …make make install则会覆盖之前的版本安装到usr/local下面。因此无法多版本存在。比如我想单独安装一个3.3.4的版本使用。这样就把3.3.4版本安装到了指定的目录下面。

2023-06-21 15:43:00 281

转载 vector list deque區別

https://www.cnblogs.com/kingcat/p/2446186.html

2023-05-04 19:40:02 124 1

原创 使用lp slover的例子

【代码】使用lp slover的例子。

2023-03-29 14:38:27 135

原创 解决No CMAKE_CUDA_COMPILER could be found.No CMAKE_CUDA_COMPILER could be found.

解决bug

2022-11-08 15:04:17 2161 1

原创 不同三角化方法的表现

上面的代码是,分别构建1.Ax=0 用SelfAdjointEigenSolver和JacobiSVD求解 2.构建在New_A上面加了10-5的阻尼,用JacobiSVD 和QR求解。这是三角化后的点和优化后的点误差

2022-10-12 12:27:15 331

原创 g2o的hessian矩阵、b怎么存储

其中A1是第一条边对C1的雅克比,A2是第一条边对P1的雅克比,A3是第二条边对C2的雅克比,A4是第二条边对P1的雅克比。观测H矩阵可知,在对角线元素上,是误差边对对应顶点hessian的累积和,而非对角元素则是每条边对两个顶点的雅克比乘积。假设我们有两个相机位姿C1 C2 都看到一个顶点P1 ,即我们有两条边,则我们的J可以写成。因此,对于H的对角线元素,我们可以单独存放在顶点类里面,每个顶点对应的元素等于。而非对角线元素,必须存储在边的类里面,一条边对应一个元素(对称应该是两个)。

2022-09-20 20:28:33 293

原创 ORBslam3中想把ros的代码放在主工程里编译出现内存错误

oorbslam3

2022-08-03 17:36:41 676

原创 c++编译 重复定义的问题

https://www.cs.ubc.ca/research/image-matching-challenge/current/

2022-08-03 17:30:53 296

原创 c++编译 重复定义的问题

https://www.cs.ubc.ca/research/image-matching-challenge/current/

2022-07-08 10:48:59 499

原创 slam资料汇总

https://www.cs.ubc.ca/research/image-matching-challenge/current/

2022-07-07 20:29:26 63

原创 slam资料汇总

https://www.cs.ubc.ca/research/image-matching-challenge/current/

2022-06-30 12:01:28 115

原创 不同相机在不同高度拍的图片resize在同一尺度

假设有一个相机的focal length 为fx1 在z1高度拍照 图片宽为w1假设另一个相机的focal length 为fx2 在z2高度拍照 图片宽为w2如何把他们拍的图片resize到同一个尺度下面呢,根据小孔成像原理u=fx∗(x/z)u = f_x *(x / z)u=fx​∗(x/z)我们实际是想两张图片,1m对应的pixel相同$ 即希望fx1/z1=fx2/z2(pixel/m)fx1/z1 = fx2/z2 (pixel/m)fx1/z1=fx2/z2(p

2022-06-29 17:59:51 204

原创 qt去掉莫名其妙的semantic issue

在help里面打开about plugins ,关掉clangCodeModel配置即可

2022-06-27 15:28:02 1460

原创 Saladict沙拉查词简单设置在浏览器外部使用

在chrome浏览器安装Saladict插件,然后chrome://extensions/shortcuts里面设置这个的意思是在全局的里面去搜索cliboard内容。再在沙拉查词的options里面配置permissions里面允许read clipboard和write clipboard.之后在本地pdf使用时,先ctrl+c复制 再ctrl+q就可以了。...

2022-06-27 10:54:19 1081 1

原创 Pixel-Perfect Structure-from-Motion with Featuremetric Refinement

论文阅读

2022-06-04 18:39:02 576

原创 安装colmap问题

安装colmap遇到如下问题:/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/…/…/…/x86_64-linux-gnu/libfreeimage.so: undefined reference to `TIFFTileRowSize@LIBTIFF_4.0’是因为安装了anaconda,所以环境变量PATH里anaconda的搜索在/usr/lib/x86_64-linux-gnu之前,因此导致使用的是anaconda的QT5去掉anaconda即可在pa

2022-05-31 20:14:43 753

原创 ubuntu20.04安装搜狗拼音 切换中文输入法时提示software database is broken

这里的原因是我用了阿里云的源导致的,网上各种$sudo apt-get install -f thunderbird 都是没用的!!!!1.换回默认的源2.sudo apt-get install language-pack-zh-han*这时你在切换中文时还是会报几个错误,但是不用担心,正常切到中文,中文也无法排到第一个,但是继续安装sougou 是可以用的。...

2022-05-31 15:55:23 596

原创 12代酷睿安装18.04ubuntu无法识别硬盘

买的hp i9129000K这个型号12代酷睿的台式机,安装18.04 ubuntu一直识别不了硬盘,在BIOS里面也无法设置(据说11代酷睿配置一下raid即可)。想了各种办法都不行,最后安装了20.04 22.04都是可以的。如果你的windows里面设置了BitLocks,一定要关闭。...

2022-05-31 15:50:36 1759

原创 c++重载 重写 重定义

重载 在同一个类里面,同样的函数不同的参数列表重写 父类和子类,子类重写父类带virtual的虚函数,实现多态机制,函数名和函数列表都一样重定义 父类和子类 也是子类定义父类的函数,会隐藏父类函数,如果父类不是虚函数,子类实现则为重定义,如果父类是虚函数,子类实现函数列表不同,则也是重定义。重定义以后,父类不能在调用该方法。...

2022-03-14 14:03:19 1355

原创 vslam融合策略

我们在前端输出了多条轨迹。轨迹1:视觉+ imu+里程计融合出来的轨迹(vio) T1T_1T1​轨迹2:imu+里程计轨迹(imu用dcmq求解的姿态)T2T_2T2​在vio初始化没有稳定之前,使用轨迹2,稳定后拼接上轨迹1,如果vio挂掉,则拼接上轨迹2,vio稳定后再拼接轨迹1。故这样实则是让轨迹2补充vio不好的时候。值得注意的是拼接的方式,拼接vio是计算出当前轨迹和vio轨迹在yaw和xyz上面的delta值,在vio轨迹乘以这个delta值即可。我们没有用增量的方式去拼接,原因增量的

2022-03-03 20:49:51 693

原创 vins 跟踪部分改为提取特征点匹配结论

一直对vins跟踪部分用光流跟踪想要改为提取特征点匹配,原因有如下几点;光流跟踪时间长了,特征点会有一点点偏移,实际测试确实会这样,但这个偏移很小,无奈我们对回环有较高的精度要求(<15cm),回环是重新提取特征点去和这个光流跟踪得到的特征点匹配,光流跟踪得到的特征点有偏移显然会影响回环精度。这是主要原因。光流会有对速度有限制,太快效果不好。因此最近终于实现了想法,将光流跟踪部分改为了提取特征点,然后暴力匹配。发现能连续跟踪的点变少了好多。这是连续三帧跟踪(每隔0.4s)的情况,

2022-01-19 16:36:12 2838 3

原创 vins-fusion 融合rtk原理

vins-fusion融合rtk原理:使用优化的方式融合,假设融合后的位姿是fusion_T[n], vio输出的位姿是vio_T[n],rtk输出的位姿是rtk_T(只有最后一帧)那么fusion_T的初值是fusion_T[n] = fusion_T[n-1] * (vio_T[n-1].inverse()*vio_T[n])两个观测 一个是rtk:残差就是 fusion_T[n] - rtk_T一个是vio的残差是 fusion_T[i-1].inverse()*fusion_T[i] -

2021-12-14 16:54:25 697

原创 通过跟踪效果来看vins输出结果

下面是vins跑出来的结果,vio输出是绿线轨迹。线速度是0.28m/s,拐角的地方是我根据蓝线把vio轨迹掰正了。vio在初始阶段走的比较弯曲,后有一段笔直的轨迹,这里旋转非常慢,之后又走了一段很不错的直线,之后就跳变了几下,轨迹彻底偏了。我把每帧需要新提取的特征点个数打印出来(我们每帧必须有150个特征点,减去跟踪上的,就是需要新提取的),通过这个个数可以反应出跟踪的好不好,新提的特征点个数越多,则说明跟踪的越不好。n_max_cnt 0last_track_num150n_max_cnt

2021-11-30 20:29:31 707 1

原创 慎用cv::fitLine

cv::Point2f p1(-1,-1);cv::Point2f p2(-2,-2);vector<Point2f> vec;vec.push_back(p1);vec.push_back(p2);cv::Vec4f line1;cv::fitLine(vec,line1,CV_DIST_HUBER, 0, 0.01, 0.01);fitline是对点进行直线拟合,vec是输入的点,line1是输出,前两个是(vx,vy)即方向向量,后两个是(x0,y0)是线上的某一点。我们

2021-11-30 17:39:03 1018

原创 几款全局曝光相机的参数

ar0144ov92810v7251sc031GSvg5661 和SC132GS的对比

2021-11-29 14:26:04 1487

原创 Eigen学习(一)

第一章总结:1.关于使用fixed-size 和 dynamic-sizeMatrixXd相当于动态开辟一片内存,类似于 newMatrix3d 在编译时已经分配好内存原则>4的矩阵用dynamic-size <= 4用fixed-size2. transpose和adjoint会简单的返回一个代理对象并不对本省做转置。如果执行 b=a.transpose() ,a不变,转置结果被赋值给b。如果执行 a=a.transpose() Eigen在转置结束之前结果会开始写入a,所以a的最终

2021-11-26 19:47:05 1102

原创 EIGIN 对齐错误

my_program: path/to/eigen/Eigen/src/Core/DenseStorage.h:44:Eigen::internal::matrix_array<T, Size, MatrixOptions, Align>::internal::matrix_array()[with T = double, int Size = 2, int MatrixOptions = 2, bool Align = true]:Assertion `(reinterpret_cast

2021-11-26 16:39:52 191

原创 对齐rtk坐标和world坐标系的问题

在对齐rtk和world坐标系时发生了很诡异的现象,无论如何也对不好。红色是world的轨迹,后来飘了,但是我只用了0.5m以内的轨迹来对齐,基本是在x轴上的。右下角蓝色轨迹是rtk原始轨迹,左上角是根据计算出rtk和world的夹角之后旋转(y取负)的轨迹。我使用的方法是1.算出红色轨迹(world)1m内的航向yaw1,,基本为02.算出蓝色轨迹(rtk)1m内航向,yaw = -90(从图中看出)3.rtk旋转90度,然后把rtk的y取负。这样就得到了左上角的蓝色轨迹。对比原始轨迹和.

2021-11-24 16:54:47 906

原创 pytorch报: ‘str’ is not a member of ‘c10’

/home/aipan/anaconda3/libtorch/include/torch/csrc/api/include/torch/nn/modules/utils.h:19:3: error: ‘str’ is not a member of ‘c10’TORCH_INTERNAL_ASSERT(n >= 0);原因是ceres 和 libtorch不兼容。ceres改为1.14.0版本即可

2021-11-19 19:27:36 1849

原创 平面约束公式推导

在地面运行的小车如果可以认为在平面运动,则可以使用平面约束(注意不能用于斜坡之类的地面,这里相当于绝对水平。)水平则有z=0,roll和pitch=0,对于四元数q来说,就是只绕z轴旋转yaw角 q = cos(yaw/2) + sin(yaw/2)(0,0,1) 也就是qx = 0 qy = 0这三个可以成为每一帧的约束。q转为RR应该为[1−2z22wz0−2wz1−2z20001]\begin{matrix}[ 1-2z^2 & 2wz & 0 \\ -2wz &amp

2021-11-10 17:28:40 1744 1

原创 ceres库AddResidualBlock函数解析

在定义损失函数时,我们会预先告诉parameter_blocks的个数,class ProjectionFactorXYZ : public ceres::SizedCostFunction<2, 7, 3> 表示2个损失函数,2个参数块,第一个参数块有7个数,第二个参数块有3个数。我们在传给ceres时,传进去的是参数块的首地址。又知道参数块里面的参数个数。所以ceres就可以一个个把参数拿出来。ResidualBlock* ProblemImpl::AddResidualBlock(

2021-11-04 16:27:18 4250 3

原创 git使用

git rebaserebase是一个非常强大的指令,可以对你的提交做各种修改。先体验一下我觉得最厉害的的,比如在某一次提交之后,我又提交了好几次,但是我发现我这次提交有问题,想要修改,怎么办了?也就是去修改几次前的提交内容,rebase 可以帮你实现。1.修改中间某一次提交的内容:比如我现在分支上面有两次提交,内容是两个txt文件。现在我再创建一个文件aa.txt,进行第三次交。结果状态如下。我再创建一个文件bb.txt,进行第四次提交,结果如下:这时候我觉得我第三次提交的aa.txt是

2021-09-14 14:26:23 579

原创 c++在代码中捕获信号

可执行程序如何安全退出?在Linux系统,按ctrl+c会在系统产生中断信号,程序就会退出。如果你想自己捕捉信号,进行想要的处理,可以如下编码:#include<csignal>#include <stdlib.h>#include <stdio.h>#include <unistd.h>void signalHandler(int signum){ printf("catch signal %d \n", signum); exit(0)

2021-09-06 12:21:55 961

原创 Error running link command: No such file or directory错误

在交叉编译时遇到问题[ 1%] Linking CXX static library libtp_core_detect.aError running link command: No such file or directorydetect/CMakeFiles/tp_core_detect.dir/build.make:120: recipe for target ‘detect/libtp_core_detect.a’ failedmake[2]: *** [detect/libtp_cor

2021-09-02 11:46:45 1853

转载 QT报collect2:ld returned 1 exit status原因

原文链接:https://blog.csdn.net/u014546553/article/details/78781547出现collect2:ld returned 1 exit status错误的原因,大概分为以下三种情况:1、编译成功的例子在后台执行,有时一闪而过,如果再次build ,则会提示上述错误。解决方法:打开任务管理器,找到相应的exe进程,关闭即可; 或者直接关闭QtCreator。2、没有编译成功的情况下,最常见情况是程序本身需要include的头文件被遗漏了解决方法:细心

2021-08-16 17:09:37 6074

原创 特别简单的c++读取txt数据

网上将c++读取txt的资料很多,但是都是只读取一行的,如何高效的读取txt多行数据呢?c++有类fstream,ifstrem, ofstrem专门用来读取文件。而数据获取有两种方式,一种是 >>流的方式,它会把字符依次放入我们定义的变量里,无需转换什么的,但这种方式的结束必须是遇到结束符才能结束(比如ctrl+D),第二种方式是getline,一行一行读出来的就是字符串,你得把字符串再分开存为自己想要的变量,比较麻烦。我需要从txt里面读两个时间戳,三个double类型数据,在txt里面

2021-08-12 15:01:02 7092 2

原创 vins-mono的bug记录

在imu数据和image数据对齐时,存在bugvins里面一直在优化image和imu之间实际时间戳的间隔td,然后在对齐时把td加在了image的时间戳上。getMeasurements()里面while (imu_buf.front().timestamp < img_msg.timestamp + td) { IMUs.emplace_back(imu_buf.front()); imu_buf.pop();

2021-07-29 09:55:21 581

原创 Backtrace stopped: previous frame identical to this frame (corrupt stack?)错误

gdb调试出现这个错误.这个一般是内存出现错误,我遇到的是,cv::Mat image从vio传给pose_graph,但是我没有clone,也就是vio和pose_graph使用的是同一片内存,而vio又在改变这片内存,导致pose_graph使用时出现错误。...

2021-07-27 11:09:05 20210

原创 容器的内存管理

假设vector有1000个元素,erase900个,其内存占用还是1000个,用clear()只是清空元素,内存占用还是1000。queue可以随着元素的减少,自动释放内存。对于容器释放内存最好的方法是swapvector<int> a;a.push_back(1)vector<int>().swap(a);queue<int> b;b.push(1);queue<int>().swap(a);...

2021-07-23 15:57:43 160

原创 torch::tensor与cv::Mat相互转换

cv::Mat是有多维的!!!!!构造函数为: /** @overload @param ndims Array dimensionality. @param sizes Array of integers specifying an n-dimensional array shape. @param type Array type. Use CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, or CV_8

2021-07-23 10:46:09 2292

对比superglue匹配效果

对比superglue匹配效果

2021-07-06

vins+wheel.tar.gz

vins+wheel.tar.gz

2021-03-19

异步电动机动态数学模型的建模与仿真

异步电动机动态数学模型建模与仿真,用到MATLAB仿真分析

2013-06-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除