slam14讲-ch6-使用 g2o 拟合曲线编译问题记录

g2o库出现undefined reference to错误 g2o库出现undefined reference to错误 1.我的CMkeLists.txt cmake_minimum_required(VERSION 2.6) project(g2o_learn) set(CMAKE_CXX_FLAGS "-std=c++11") include_directories("/usr/include/eigen3") find_package(g2o... 阅读详情

slam14讲-ch6-使用 g2o 拟合曲线编译问题记录

g2o版本

g2o-20201223_git

问题1

书中代码-适用于原版

    // 线性方程求解器:稠密的增量方程
   Block::LinearSolverType* linearSolver = new g2o::LinearSolverDense<Block::PoseMatrixType>();
Block* solver_ptr = new Block(linearSolver);//矩阵块求解器
//梯度下降方法
g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg( solver_ptr );

新版

    unique_ptr<Block::LinearSolverType> linearSolver(new g2o::LinearSolverDense<Block::PoseMatrixType>());
    unique_ptr<Block> solver_ptr ( new Block ( std::move(linearSolver)));
    g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg(std::move(solver_ptr));

问题2

#cmakelists
# 寻找 G2O 库
find_package(G2O REQUIRED)
# 添加头文件
include_directories( ${G2O_INCLUDE_DIRS})
target_link_libraries(g2o_curve_fitting ${G2O_CORE_LIBRARY})

编译问题

/usr/bin/ld: CMakeFiles/g2o_curve_fitting.dir/main.cpp.o: undefined reference to symbol '_ZN3g2o18get_monotonic_timeEv'
/usr/bin/ld: /usr/local/lib/libg2o_stuff.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

修改CMakeLists

#cmakelists
# 寻找 G2O 库
find_package(G2O REQUIRED)
# 添加头文件
include_directories( ${G2O_INCLUDE_DIRS})
SET(G2O_LIBS g2o_cli g2o_ext_freeglut_minimal g2o_simulator g2o_solver_slam2d_linear g2o_types_icp g2o_types_slam2d g2o_core g2o_interface g2o_solver_csparse g2o_solver_structure_only g2o_types_sba g2o_types_slam3d g2o_csparse_extension g2o_opengl_helper g2o_solver_dense g2o_stuff g2o_types_sclam2d g2o_parser g2o_solver_pcg g2o_types_data g2o_types_sim3 cxsparse )

target_link_libraries(g2o_curve_fitting ${G2O_LIBS})
【《视觉SLAM十四讲》前ch2-ch6实践全过程和遇到的问题及解决办法】 文章目录前言一、运行环境配置1.在虚拟机上安装Ubuntu14.042.解决一些小问题安装VMware Tools(用来跨系统复制粘贴,自由调整屏幕大小)火狐(Firefox)无法联网(用来下载压缩包)从文件目录下启动终端(在终端里切换目录太麻烦)二、实践出现的问题以及解决方案1.Ubuntu下安装包的方法2.编译高博提供的代码ch2ch3/useEigench3/useGeometrych3/visualizeGeometry总结 前. 阅读详情

相关推荐

视觉slam十四讲实践部分记录——ch6 非线性优化

建议修复。修改后部分代码:然后保存重新编译即可。

m0_69023437的博客 809

关于G2O库的坑~

错误提示1: /usr/bin/ld: CMakeFiles/g2o_demo.dir/src/g2o_demo.cpp.o: in function `main': g2o_demo.cpp:(.text+0x2d8): undefined reference to `g2o::OptimizationAlgorithmGaussNewton::OptimizationAlgorithmGaussNewton(std::unique_ptr<g2o::Solver, std::default_.

qq_41949101的博客 6826

ORB-SLAM2项目实战(4) — ROS下运行ORB-SLAM2稠密地图重建

在./orbslam2_ws下source ./devel/setup.bash,然后运行roslaunch ORB_SLAM2 orbslam2.launch可以得到相同的效果。如果进行了滤波处理,可以修改double resolution = 0.00000001,修改后颜色显示正常,但存在明显的漂移,但效果较以前好很多。在./orbslam2_ws/src/ORB_SLAM2想创建launch文件夹,创建orbslam.launch文件。将ros_rgbd.cc下的话题名称修改。

几度春风里的博客 4647

编译ORBSLAM2出现的小问题记录

解决方法:使当前项目重新链接到g2o,可以更改CMakeists.txt文件里的内容,增加如下代码。可以观察到,新增了链接,把之前链接不到的g2o添加进来,重新编译没有问题。编译build_ros.sh出现问题如下。这个错误提示意味着链接器在链接。库的版本不兼容导致的。

qq_46454669的博客 1637

OSMDroid 切换地图不更新的问题

用OSMDroid加载Google地图的时候 需要有按钮切换不同图层的地图,如果发现调用了mMapView.setTileSource(ITileSource aTileSource)方法的时候发现地图View没有更新的话,可能是因为两个实例化TileSource对象其子类BitmapTileSourceBase这个类的aName成员变量值一样导致的地图在setTileSource出现不更新问题,...

godoge的博客 1039

RK3588-NANOPC-T6移植ubuntu+xenomai内核

更具网址下载相应的内核。导入到开发板并执行内核。

qq_42007446的博客 572

[g2o] 程序使用g2o时报错,number_t does not name a type

问题描述: 更新了某些文件后,导致g2o无法正常使用。编译开源代码时,出现了 number_t does not name a type undefined reference to g2o::Optimizable Graph::addvertex(g2o::HyperGraph::Vertex... 之类的错误。 问题解决办法: 1. 将ros自带的g2o卸载,以及系统下的头...

nangnoy的博客 1027

UA MATH567 高维统计I 概率不等式1 Hoeffding不等式与Chernoff不等式

UA MATH567 高维统计I 概率不等式1 Hoeffding不等式与Chernoff不等式 这个系列介绍高维统计,一些需要知道的结论可以参考UA MATH 564与566两个系列,分为两大部分,高维的概率论相关结果、高维的统计模型。概率论相关结论分六个部分介绍:概率不等式、高维随机向量、随机矩阵、Concentration without Independence、二次型、随机过程。 ...

一个不愿透露姓名的博客 2732

G2O库安装踩坑(SLAM十四讲)

由于买的是高博的新书。。。。。。所以版本问题很d疼(又没学会克隆子模块) 因此库的版本与代码的兼容性一直很头疼 现在看到第六章,g2o下载下来却编译报错,怀疑就是版本问题。 因此直接在github上克隆最新的g2o 下面是总体安装流程: 1. G2O安装过程 git clone https://github.com/RainerKuemmerle/g2o # 克隆最新版本g2o cd g2o ...

一只小菜鸟的博客 1万+

HomeAssistant+HACS实战:5分钟搞定米家设备接入(附HomeKit配置技巧)

本文详细介绍了如何通过HomeAssistant和HACS插件商店快速接入米家设备,并分享HomeKit配置技巧。从HACS安装到米家设备接入,再到HomeKit设备集成,提供一站式智能家居解决方案,帮助用户实现设备统一管理和自动化场景设置。

weixin_29192141的博客 1046

故障诊断知识库建设指南

从数据融合到知识图谱构建,从智能推理引擎开发到动态进化机制落地,故障诊断知识库的建设路径已形成 “数据 - 知识 - 智能” 的闭环体系。随着大模型技术的深度融入,知识库将实现从 “规则驱动” 到 “认知推理” 的跨越 —— 通过自然语言理解解析复杂故障描述、多模态分析融合图像与信号数据、预测性算法推演故障发展趋势,持续提升诊断的精准度与前瞻性。

极昆仑智慧 1230

【视觉SLAM十四讲】各种库的安装及代码实践

在学习高博的《视觉SLAM十四讲》的过程中,遇到了各种问题。虽说在网上都能找到对应的解决方案,但没有一篇是详细列尽遇到的问题的文章。于是,打算自己写一篇记录学习过程中遇到的一系列问题。希望能为后续的学习提供一点帮助!(自己也是新手小白,还是有很多不懂的地方。

2302_80099075的博客 6054

【Qt开发】管理OpenGL上下文QOpenGLContext类及应用实践示例代码

QOpenGLContext 提供了一个简单、高效的接口来管理 OpenGL 上下文。本文详细介绍了 QOpenGLContext 的基本功能、常用方法、信号槽机制、高级应用技巧及常见问题的解决方法。通过这些介绍,读者可以更好地掌握和利用 QOpenGLContext 进行 OpenGL 渲染和管理实验。对于有特殊需求的开发者,也可以通过探索更多高级设置和优化策略,以满足具体的应用场景。

科技改变人类,技术成就未来 1871

《SLAM十四讲》slambook2 遇到的坑

进步的路就是不断踩坑的路。

WoooChi的博客 6667

Android 13.0 SystemUI下拉状态栏背景增加高斯模糊背景

在13.0的产品开发中,发现现在很多产品都是高斯模糊背景的,这种高斯模糊背景看起来效果很不错,产品开发需要SystemUI下拉状态栏背景也是高斯模糊背景,所以就要来实现下拉状态栏高斯模糊背景

安卓兼职framework和app工程师的博客 2669

【精细解读】xapp585(多通道LVDS接口ADC)

xapp585的参考设计有Verilog和VHDL两种源码。

FPGA艺术家的博客 532

学习SLAM14讲出现的一些问题

双系统,视觉SLAM

m0_69153018的博客 950

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

视觉SLAM十四讲笔记:G2O库的安装

在学习高翔大神的视觉SLAM十四讲的安装G2O库的时候遇到了无法安装依赖的问题.当时费劲九牛二虎的力气(有夸大成分)解决之.当时没有记笔记或者写博客的习惯.匆匆了之继续奋斗在SLAM前线去了.后来电脑重新装了ubuntu系统.如今又遇到了G2O库的安装问题 .后悔当初,但为时已晚.为避免今后遇到类似的问题,遂记录下这次的解决方式.以便日后查阅.同时希望能给有相同问题的战友们一点帮助: G2O库是一...

qq_43159510的博客 4459

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

slam14讲ch7实践记录

目前用的opencv版本是3.4.12,g2o使用的版本是2023.02.23版的,对于新版本原代码里面的一些用法需要修改。首先在CMakeList.txt里面把C++11改为C++17。

phhone的博客 1289

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SLAM十四讲报错解决(2)

运行ch6的gaussNewton.cpp出现错误,后来是g2oCurveFitting.cpp出现错误。版本为20.04在ch6目录下新建build文件夹,运行cmake ..出现警告,提示找不到,原因是我3rdparty目录下的g2o没有编译、安装。,进行的工作包括g2o安装、metis安装、g2o卸载重安装、ceres卸载重安装、修改g2oCurveFitting.cpp代码和两个Cmake文件使C++版本匹配。

FactoryNLS的博客 1412

视觉SLAM十四讲第二版代码运行问题记录

CMakeLists.txt cmake_minimum_required(VERSION 2.8) project(useEigen) set(CMAKE_BUILD_TYPE "Release") set(CMAKE_CXX_FLAGS "-O3") # 添加Eigen头文件 include_directories("/usr/include/eigen3") add_executable(eigenMatrix eigenMatrix.cpp) #include <iostream>

baidu_38431960的博客 2904

SLAM十四讲(第二版)问题

g2o版本问题g2o版本问题ch13 demo运行 g2o版本问题 由于高博SLAM十四讲中使用的g2o版本年限差距 而且g2o版本的更迭也比较快, 所以将版本换成高翔博士的版本 cd g2o mkdir build cmake .. make -j12 sudo make install orb-slam2和orb-slam3等一些开源方案一般会自己提供第三方库,将其编译为链接库 比如g2o编译为libg2o.so 高博的代码是寻找系统安装的g2o 如果以后想切换 cd g2o_原先文件夹 cd bu

weixin_43848456的博客 2292

【《视觉十四讲》例程运行记录】——运行ch9后端优化CeresBA和g2o求解BA的实践例程

运行ch9后端优化CeresBA和g2o求解BA的实践例程

2401_82458959的博客 1539

slam14讲ch6实践及各种问题

首先是装库,首先说明一下我此时的Eigen库版本是3.4.0,网上说会与这个版本相关,我的ceres库不是用的作者的。

phhone的博客 1114

g2o学习_视觉十四讲ch6例子应用

图优化学习 记录自己学习使用g2o库 文章目录图优化学习前言一、g2o库安装二、视觉slam十四讲ch6例子使用步骤1.编写g2o_learning.cpp文件2.CMakeLists.txt编写编译运行 前言 学习视觉slam十四讲中g2o的例子 一、g2o库安装 安装各种依赖 sudo apt-get install libeigen3-dev libsuitesparse-dev qtdeclarative5-dev qt5-qmake 下载源码 git clone https://gith

m0_46664758的博客 421

高翔《视觉slam十四讲》ch6 6.3问题记录

这说明表明编译环境中缺少 <filesystem>头文件。这通常意味着编译器或者它的标准库不支持 C++17 标准中引入的文件系统库。GCC从8.0版本开始支持<filesystem>,但是单独链接 1ibstdc+fs。在 GCC9及更高版本中,<filesystem>库已经被完全集成到标准库中,不需要链接,这里要安装GCC9通过升级编译器解决问题。所以接下来安装GCC9,问题解决。解决方法:安装abseil并编译。这是因为在较新的g2o版本中,已经被移除,建议使用。

m0_60630925的博客 1406
上一篇: slam14讲-pa4-图像去畸变问题记录
下一篇: opencv3.0以上-CvMat* cvMat Mat 定义转换
xiaoliyu00
博客等级 码龄9年 4180粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值