我是靠谱客的博主 幸福树叶,这篇文章主要介绍关于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
2
3
4
5
6
7
8
9
10
11
12
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十四讲》第四章的实践代码,代码输出的结果是正确的,运行代码结果如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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十四讲中内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部