g2o 优化库
g2o: A General Framework for Graph Optimization
安装
环境:
- Windows
 - Visual Studio 2022 + Toolset v141
 - Qt 5.12.10
 - Eigen 3.3.7
 
- 创建项目顶层目录 
g2o/; - 参考 Ceres 优化库 #安装 准备好依赖库 
Eigen,suitesparse-metis-for-windows; - 安装 Qt5, 以及相应的 VS 插件;
 - 准备依赖库 libQGLViewer
- 下载 libQGLViewer-2.7.2.zip 放到 
g2o/文件夹下解压得到g2o/libQGLViewer-2.7.2/文件夹. - 打开 VS, 点击 
扩展->Qt VS Tools->Open Qt Project File (.pro), 打开g2o\libQGLViewer-2.7.2\libQGLViewer-2.7.2.pro, 这将会在 VS 中打开名为libQGLViewer的解决方案, 其中包含 26 个项目, 首先将配置改为Release | x64, 然后 选中所有项目 , 右键点击属性->配置属性->常规->平台工具集, 修改为Visual Studio 2017 (v141) - 在 
qglviewerplugin项目中, 修改libQGLViewer-2.7.2\designerPlugin\qglviewerPlugin.cpp文件第 53 行, 删除宏QDESIGNER_WIDGET_EXPORT.qglviewerPlugin.cpp 50
51
52
53
54
55
56
57
58
59
60// ------------------------------------------------------------- //
// Change the base class name, as well as the include path above //
// ------------------------------------------------------------- //
- class QDESIGNER_WIDGET_EXPORT Viewer : public QGLViewer {
+ class Viewer : public QGLViewer {
public:
explicit Viewer(QWidget *parent = NULL) : QGLViewer(parent) {
camera()->setPosition(qglviewer::Vec(1.29831f, 0.60826f, 1.78031f));
camera()->setOrientation(
qglviewer::Quaternion(0.35032, -0.135992, 0.471794, -0.797617));
} - 生成解决方案 
1
2
3
4
5已启动生成...
1>------ 已启动生成: 项目: QGLViewer, 配置: Release x64 ------
1>Reading Qt configuration (D:/ProgramFiles/Qt5.12.10/5.12.10/msvc2017_64/bin/qmake)
...
========== “生成”: 26 成功,0 失败,0 更新,0 已跳过 ========== - 以上生成的全部 26 个项目中,  
QGLViewer的项目编译后在g2o\libQGLViewer-2.7.2\QGLViewer\文件夹下得到如下三个文件.1
2
3QGLViewer2.lib
QGLViewer2.exp
QGLViewer2.dll - 测试 
simpleViewer项目: 将上一步生成的QGLViewer2.dll拷贝到g2o\libQGLViewer-2.7.2\examples\simpleViewer\release\simpleViewer.exe所在文件夹 (或者将 dll 所在路径添加到系统环境变量), 将simpleViewer项目设置为启动项目, 开始运行, 将打开一个simpleViewer的三维可视化窗口, 表示运行成功. - 安装控件, 将如下两个 dll 文件复制到相应路径下, 即可在 Qt Designer 界面左边控件栏看到 
QGLViewer控件, 且创建 UI 界面时可以拖拽使用.- 将生成的 
qglviewerplugin.dll复制到D:\ProgramFiles\Qt5.12.10\5.12.10\msvc2017_64\plugins\designer路径下 - 将生成的 
QGLViewer2.dll复制到C:\Windows\System32或C:\Windows\SysWOW64 
 - 将生成的 
 - 将配置属性改为 
Debug | x64再来一遍. - 将 动态链接库 
QGLViewer2.dll和QGLViewerd2.dll所在 路径D:\Data\g2o\libQGLViewer-2.7.2\QGLViewer添加到系统环境变量. 
 - 下载 libQGLViewer-2.7.2.zip 放到 
 - 开始编译 g2o
- 下载 g2o-20201223_git.zip 放到 
g2o/文件夹下解压得到g2o/g2o-20201223_git/ - cmake-gui 将 source 和 build 目录分别设置为 
g2o/g2o-20201223_git/和g2o/g2o-20201223_git/build/, 点击Configure后将平台选为x64, toolset 处填v141(表示使用 VS2017 默认的平台工具集进行编译), 完成后再做如下修改, 此外检查并确保suitesparse,qt相关配置被正确设置.1
2
3
4
5
6
7
8
9
10Commandline options:
-DQGLVIEWER_INCLUDE_DIR:PATH="D:/Data/g2o/libQGLViewer-2.7.2/QGLViewer" -DCMAKE_INSTALL_PREFIX:PATH="D:/Data/g2o/g2o-20201223_git/install" -DQGLVIEWER_LIBRARY_RELEASE:FILEPATH="D:/Data/g2o/libQGLViewer-2.7.2/QGLViewer/QGLViewer2.lib" -DEIGEN3_INCLUDE_DIR:PATH="D:/Data/ceres/eigen-3.3.7" -DQGLVIEWER_LIBRARY_DEBUG:FILEPATH="D:/Data/g2o/libQGLViewer-2.7.2/QGLViewer/QGLViewerd2.lib"
Cache file:
QGLVIEWER_INCLUDE_DIR:PATH=D:/Data/g2o/libQGLViewer-2.7.2/QGLViewer
CMAKE_INSTALL_PREFIX:PATH=D:/Data/g2o/g2o-20201223_git/install
QGLVIEWER_LIBRARY_RELEASE:FILEPATH=D:/Data/g2o/libQGLViewer-2.7.2/QGLViewer/QGLViewer2.lib
EIGEN3_INCLUDE_DIR:PATH=D:/Data/ceres/eigen-3.3.7
QGLVIEWER_LIBRARY_DEBUG:FILEPATH=D:/Data/g2o/libQGLViewer-2.7.2/QGLViewer/QGLViewerd2.lib - configure, generate, open project
 - 生成解决方案, 生成 INSTALL 项目(可选)
 - 执行 
g2o_viewer项目, 或者在D:\Data\g2o\g2o-20201223_git\bin\Debug目录下双击g2o_viewer.exe可以打开窗口, 点击File->Load可以加载*.g2o数据集 文件, 然后点击Optimize即可看到该数据集的优化过程. 
 - 下载 g2o-20201223_git.zip 放到