SLAM_BOOK 记录

0712:今天看完李群与李代数,对其理解稍有加深。

        首先SO(3)与so(3)可以理解为旋转矩阵与旋转向量的关系,so3指数映射到SO3,SO3对数映射到so3,一一对应。为什么要有李代数呢,因为李群中没有加法运算,就没法去求极限和导数,但是其对应的李代数是有加法的,可以转换到李代数进行计算。而对于旋转后的点对旋转的导数,一种直接求导,结果会出现雅克比矩阵,计算复杂,但对于其扰动模型,不存在了,求导结果为:-(Rp)^(左乘模型)。哈哈哈,厉害。

 

0714:编译ceres出现与eigen库不兼容的问题,最终找到解决方案为替换为其他兼容的eigen3版本,具体参考一下博客

https://blog.csdn.net/sunyoop/article/details/79032174  

感谢博主

第六章  在用g2o进行曲线拟合时,g2o编译安装成功了,从github上下的,书中提供代码无法编译过去,然后,在编译g2o的曲线拟合时,编译过了,但是运行出现段错误,按照网上的办法更改指针,但是会出现无法找到匹配的函数的错误,最后没办法呢,抱着试一试的态度,删掉所有g2o的库文件和头文件,重新编译g2o,然后再编译第六章的程序,神奇的事情来了,编译通过,并且运行成功,这都什么情况。。。。

最后对比两种方法g2o快了一个数量级

 

start optimization
iteration= 0	 chi2= 30373.727656	 time= 0.000231289	 cumTime= 0.000231289	 edges= 100	 schur= 0	 lambda= 699.050482	 levenbergIter= 7
iteration= 1	 chi2= 13336.948288	 time= 0.000135327	 cumTime= 0.000366616	 edges= 100	 schur= 0	 lambda= 1864.134619	 levenbergIter= 3
iteration= 2	 chi2= 6946.262996	 time= 0.000100986	 cumTime= 0.000467602	 edges= 100	 schur= 0	 lambda= 1242.756412	 levenbergIter= 1
iteration= 3	 chi2= 271.023166	 time= 0.000101381	 cumTime= 0.000568983	 edges= 100	 schur= 0	 lambda= 414.252137	 levenbergIter= 1
iteration= 4	 chi2= 118.903887	 time= 0.000100248	 cumTime= 0.000669231	 edges= 100	 schur= 0	 lambda= 138.084046	 levenbergIter= 1
iteration= 5	 chi2= 113.568660	 time= 0.000100462	 cumTime= 0.000769693	 edges= 100	 schur= 0	 lambda= 46.028015	 levenbergIter= 1
iteration= 6	 chi2= 107.476457	 time= 0.000100203	 cumTime= 0.000869896	 edges= 100	 schur= 0	 lambda= 15.342672	 levenbergIter= 1
iteration= 7	 chi2= 103.014522	 time= 0.000101634	 cumTime= 0.00097153	 edges= 100	 schur= 0	 lambda= 5.114224	 levenbergIter= 1
iteration= 8	 chi2= 101.988348	 time= 0.000101294	 cumTime= 0.00107282	 edges= 100	 schur= 0	 lambda= 1.704741	 levenbergIter= 1
iteration= 9	 chi2= 101.937388	 time= 0.000100763	 cumTime= 0.00117359	 edges= 100	 schur= 0	 lambda= 0.568247	 levenbergIter= 1
iteration= 10	 chi2= 101.937021	 time= 0.000100895	 cumTime= 0.00127448	 edges= 100	 schur= 0	 lambda= 0.378831	 levenbergIter= 1
iteration= 11	 chi2= 101.937020	 time= 0.000100607	 cumTime= 0.00137509	 edges= 100	 schur= 0	 lambda= 0.252554	 levenbergIter= 1
iteration= 12	 chi2= 101.937020	 time= 0.000135858	 cumTime= 0.00151095	 edges= 100	 schur= 0	 lambda= 1.346956	 levenbergIter= 3
iteration= 13	 chi2= 101.937020	 time= 0.00010007	 cumTime= 0.00161102	 edges= 100	 schur= 0	 lambda= 0.897971	 levenbergIter= 1
iteration= 14	 chi2= 101.937020	 time= 0.000154207	 cumTime= 0.00176522	 edges= 100	 schur= 0	 lambda= 38.313418	 levenbergIter= 4
iteration= 15	 chi2= 101.937020	 time= 0.000133635	 cumTime= 0.00189886	 edges= 100	 schur= 0	 lambda= 204.338228	 levenbergIter= 3
iteration= 16	 chi2= 101.937020	 time= 0.000100038	 cumTime= 0.0019989	 edges= 100	 schur= 0	 lambda= 136.225485	 levenbergIter= 1
iteration= 17	 chi2= 101.937020	 time= 0.000217447	 cumTime= 0.00221634	 edges= 100	 schur= 0	 lambda= 24378500205.440712	 levenbergIter= 8
iteration= 18	 chi2= 101.937020	 time= 0.000138879	 cumTime= 0.00235522	 edges= 100	 schur= 0	 lambda= 1560224013148.205566	 levenbergIter= 3
solve time cost = 0.00329267 seconds. 
estimated model: 0.890912   2.1719 0.943629

0719:ch7

之前在第六章中就又出现这样的问题,在构建g2o问题时会有一些错误,参考了几篇CSDN的博客更改如下:

std::unique_ptr<Block::LinearSolverType> linearSolver ( new g2o::LinearSolverDense<Block::PoseMatrixType>());
std::unique_ptr<Block> solver_ptr ( new Block ( std::move(linearSolver)));

并且在其源文件中添加头文件

#include <g2o/solvers/dense/linear_solver_dense.h>
这个问题还要继续看,c++的问题

0720:早上试了下将两张不同的图片做ORB的特征点提取与匹配,结果出现了下面的情况,竟然匹配上了,想了下,应该只是算法上的匹配,如下图所示,明显是不一样的两张图片,匹配结果乱七八糟。

上图是两张对应的图片,匹配结果优秀。 

1022

昨晚重新做上面的实验时,发现imshow()里面如果有中文,图片将会无法显示,就像下面的图显示,开始也没发现是这个原因,后来在kdevelop里中文显示有问题,把中文改掉,但在之前是没问题的,这次系统的更新可能把某些东西给卸载掉了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值