最近开始学习高翔博士的《视觉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十四讲中内容请搜索靠谱客的其他文章。
发表评论 取消回复