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的特征点提取与匹配,结果出现了下面的情况,竟然匹配上了,想了下,应该只是算法上的匹配,如下图所示,明显是不一样的两张图片,匹配结果乱七八糟。
上图是两张对应的图片,匹配结果优秀。
推荐阅读
-
SLAM_BOOK 记录
-
iOS沙盒路径记录
-
iOS - mac环境Jenkins自动化打包并上传蒲公英分发从0到1详细搭建过程,自我的实践记录
-
记录自己开发中经常遇到的小问题以及解决。 博客分类: 一些良好习惯与养成 遇到问题经常
-
IDEA配置maven和踩坑记录(Unable to import maven project)
-
网页性能优化记录-支持gzip压缩 博客分类: 技术 网页性能优化button cssgziptomcat
-
ORACLE/MSSQL随机取一条记录方法 博客分类: 数据库 Oracle
-
12. Bash Shell 历史记录管控
-
达梦数据库开启SQL日志记录
-
redis sadd 命令 以及 删除set集合或者单独删除set中的一/多条记录