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

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

时间:2024-07-03 09:30:53浏览次数:20  
标签:BA 例程 bundle 编译 CeresBA g2o adjustment pcg

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


一、运行ch9的例程代码

1. MeshLab安装

(1) 软件中心安装

在这里插入图片描述

搜索:MeshLab,点击安装即可。

在这里插入图片描述

2. 编译例程代码前的修改

(1) 对于bundle_adjustment_ceres例程
1)将c++1改成c++4

在这里插入图片描述
2)添加fmt包

find package(fmt REQUIRED)
set(FMT LIBRARIES fmt::fmt)

添加的位置如下所示:
在这里插入图片描述在这里插入图片描述

链接到fmt库,添加代码如下:

在这里插入图片描述

(2) 对于bundle_adjustment_g2o例程

CMakeLists.txt的修改同上

3. 编译例程

(1) 在slambook2/ch9/目录下,创建build文件:

mkdir build
cd build

(2) 编译源码

cmake ..
make

注意:make编译时可能会出错,后面有解决的方法

(3) 运行例程

运行bundle_adjustment_ceres例程:

./bundle_adjustment_ceres ../problem-16-22106-pre.txt
meshlab initial.ply
meshlab final.ply

运行bundle_adjustment_g2o例程:

./bundle_adjustment_g2o ../problem-16-22106-pre.txt
meshlab initial.ply
meshlab final.ply

(4) 运行结果

优化前:

在这里插入图片描述

优化后:

在这里插入图片描述

二 可能的报错:c++:internal compiler error:已杀死(program cclplus)

1.问题描述

在安装个g2o库时,编译源码出现报错,信息如下图所示:

[ 27%]Building cxX object g2o/types/slam2d/CMakeFiles/types
slam2d.dir/parac++:internal compiler error:已杀死(program cclplus)Please
submit a full bug report,with preprocessed source if appropriate.See
<file:///usr/share/doc/gcc-7/README.Bugs> for
instructions.g2o/solvers/pcg/CMakeFiles/solver pcg.dir/build.make:81:
recipe for targetmake[2]:**[g2o/solvers/pcg/CMakeFiles/solver
pcg.dir/solver pcg.cpp.o] ErCMakeFiles/Makefile2:1942:recipe for
target 'g2o/solvers/pcg/CMakeFiles/solmake[1]:
***[g2o/solvers/pcg/CMakeFiles/solver pcg.dir/all] Error 2
在这里插入图片描述

2.原因分析

大量template的扩展需要足够的内存,报错的原因是(虚拟机)运行内存不足。

3.解决

减少make使用到的核数:安装直接用make(就是时间长点!!)

总结

以上就是运行ch9后端优化CeresBA和g2o求解BA的实践例程的全部过程,如有疑问,可以评论区留言交流!!!!

标签:BA,例程,bundle,编译,CeresBA,g2o,adjustment,pcg
From: https://blog.csdn.net/2401_82458959/article/details/139255805

相关文章

  • JavaScript-WebAPI
    文章目录JS组成什么是webApis和APIDOM简介document对象获取DOM对象利用css选择器来获取DOM元素选择指定css选择器的所有元素其他获取DOM元素方法(了解)操作元素内容对象.innerText对象.innerHTML操作元素属性操作元素常用属性操作元素样式属性通过style属性操作......
  • MyBatis的基本使用二
    动态SQL语句一、if判断id,userName,realName,sex,mobile,email,note,二、where字句where的作用:1.判断where中所有的条件判断成不成立,成立加where,2.第一个成立的条件去除and。anda.emaillikeCONCAT('%',#{email},'%')anda.sex=#{sex}......
  • MyBatis的几个核心类和基本用法
    1.SqlSessionFactoryBuilder:读取配置信息创建SqlSessionFactory,建造者模式,方法级别生命周期,方法结束生命周期结束;重点是建造出SqlSessionFactory工厂对象2.SqlSessionFactory:SqlSession工厂对象,用于创建Sqlsession,工厂单例模式,存在于程序的整个生命周期;3.SqlSession:代......
  • HBase
    请回答以下问题。1.由于数据过多,HBase频繁地Region分裂,什么方法最合适?A.预分RegionB.增大Region大小C.增大MemStore,减少FlushD.提升RegionServer资源。一、HBase简介HBase数据模型HBase的底层物理存储结构(K-V)来看,HBase更像是一个Multi-dimensional(多......
  • MyBatis2(MyBatis基础配置 动态代理 映射器 select 元素 insert 元素 update 元素和del
    目录一、MyBatis基础配置1.MyBatis配置文件2.<configuration>元素3.<enviroments>元素4.<properties>元素5.<typeAliases>元素6.<mappers>元素二、动态代理三、映射器1.映射器与接口2. 映射器的引入 3.映射器的组成 四、select元素参数传递多......
  • WebAPI项目框架仓储模式+导入SqlSuag
    仓储(Respository)是对数据库访问的一个封装解决方案新建Respository文件夹,新建类库Web.Core.IRepository,Web.Core.Repository解决方案新建Services文件夹,新建类库Web.Core.IServices,Web.Core.Services在类库Web.Core.Model下面新建Entity文件夹SqlSugar是国人开发者开发的一......
  • 数据分表——使用 Mybatis-Plus插件实现动态表名分表(按年份分表、按月份分表)
    本博客适合Mybatis-Plus3.4以上版本,笔者使用版本为3.5.3。分库与分表的原因1.业务场景:日志、交易流水表或者其他数据量大的表,通过日期进行了水平分表,需要通过日期参数,动态的查询数据。实现思路:利用MybatisPlus的动态表名插件DynamicTableNameInnerInterceptor,实现Sql执行......
  • WebAPI项目框架JWT权限验证
    JWT是什么?校验逻辑?授权过程?这里就不过多的阐述了,直接上代码在appsettings.json中配置jwt参数的值SecretKey必须大于16个字符1{2"Logging":{3"LogLevel":{4"Default":"Information",5"Microsoft.AspNetCore":"Warni......
  • 【基于星火大模型的群聊对话分角色要素提取BaseLine学习笔记】
    @目录项目背景项目任务我的思路Baseline详解数据抽取完整代码星火认知大模型Spark3.5Max的URL值,其他版本大模型URL值请前往文档(https://www.xfyun.cn/doc/spark/Web.html)查看星火认知大模型调用秘钥信息,请前往讯飞开放平台控制台(https://console.xfyun.cn/services/bm35)查看星火......
  • Hackthebox bagel.dll 代码审计
    利用ilspy将bagel.dll打开关于此目录有可以说的内容目录解析最上方的bagel是组装名字(assemblename)bagel_server是命令空间(namespace)下一级分支是类如File,Base,Handler,Orders等(class)反序列化导致的命令执行漏洞代码审计思路 首先看主程序Bagel1.通过明显的英语翻......