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 放到