git clone https://github.com/strasdat/Sophus.git
cd Sophus/
mkdir build
cd build
cmake ..
make
sudo make install
其中在make阶段可能会报错:
error: lvalue required as left operand of assignment
32 | unit_complex_.real() = (1.);
打开 Sophus/sophus/so2.cpp文件
//将
SO2::SO2()
{
unit_complex_.real() = 1.;
unit_complex_.imag() = 0.;
}
//改为
SO2::SO2()
{
unit_complex_.real(1.);
unit_complex_.imag(0.);
}
同时需要注意的是在编写代码的时候
#include <sophus/so3.hpp>
会报错:error: sophus/so3.hpp: 没有那个文件或目录。
因为使用gitclone下载的是新版的sophus,是基于模板类的,它对应的头文件是 .h,而基于非模板类的sophus 对应的头文件是 .hpp,所以会出现报错。
所以需要改成:
#include <sophus/so3.h>
在编译开源库Sophus时,可能会遇到错误'lvalue required as left operand of assignment',这涉及SO2构造函数的实现。通过修改SO2::SO2()函数,将unit_complex_.real()=1.更改为unit_complex_.real(1.)可以解决问题。此外,如果在代码中包含<sophus/so3.hpp>报错找不到文件,这是因为下载的版本可能基于模板类,应将头文件更改为<sophus/so3.h>。
3512

被折叠的 条评论
为什么被折叠?



