我是靠谱客的博主 幸福树叶,这篇文章主要介绍关于SLAM十四讲中 非模板类Sophus库的安装问题,现在分享给大家,希望可以做个参考。

最近开始学习高翔博士的《视觉SLAM十四讲》,第四章要求安装一个非模板类的Sophus库。在安装书中提供的第三方库时出现错误。在安装过程中,使用Cmake ..的时候能够顺利通过,接着执行make命令的时候就会出现错误如下:

***1. Sophus/sophus/so2.cpp:33:26:error: lvalue required as left operand of assignment
unit_complex_.real() = 1.;
2. Sophus/sophus/so2.cpp:33:26:error: lvalue required as left operand of assignment
unit_complex_.imag() = 1.;*
我以为是书中提供的第三方库存在问题,于是按照书中的方法在网上重新下载Sophus库,编译之后仍旧出现这种错误。
自己在网上查找了好久很少有人提出解决这个问题的方法。最终幸运的在一篇博客中找到了解决的方法。鉴于网上的解决方法少,故分享如下。
解决方法如下:

1
SO2::SO2()
2 {
3
//unit_complex_.real() = 1.;
4
//unit_complex_.imag() = 0.;
5
unit_complex_.real(1.); 
6
unit_complex_.imag(0.);
7 }

打开so2..cpp文件,将系统提示出错的位置代码改成上述的代码即可。
用改正后的非模板类Sophus库运行《视觉SLAM十四讲》第四章的实践代码,代码输出的结果是正确的,运行代码结果如下:

SO3 from matrix :
0
0 1.5708
SO3 from vector :
0
0 1.5708
SO3 from quaternion :
0
0 1.5708
so3 =
0
0 1.5708
so3 hat =
0 -1.5708
0
1.5708
0
-0
-0
0
0
so3 hat vee=
0
0 1.5708
SO3 update=
7.85398e-05 -7.85398e-05
1.5708
*************************分割线××××××××××××××××××××
SE3 from Rt =
0
0 1.5708
1 0 0
SE3 from qt =
0
0 1.5708
1 0 0
se3 =
0.785398 -0.785398
0
0
0
1.5708
se3 hat =
0
-1.5708
0
0.785398
1.5708
0
-0 -0.785398
-0
0
0
0
0
0
0
0
se3 hat vee =
0.785398 -0.785398
0
0
0
1.5708
SE3 update =
2.22045e-16
-1
0
1.0001
1 2.22045e-16
0
0
0
0
1
0
0
0
0
1

从正确的运行结果可以知道对于Sophus库的修改是正确的。

这个改正方法是参照网上的,具体的原因本人也不知道。如果有谁看到这篇文章,知道其中的原因,烦请告知!!!

参考的博客地址:一步步完善视觉里程计3——初始位置确定 | 冯兵的博客|内外兼修

最后

以上就是幸福树叶最近收集整理的关于关于SLAM十四讲中 非模板类Sophus库的安装问题的全部内容,更多相关关于SLAM十四讲中内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部