【仓库asp 源码】【TRDP软件源码】【外呼 源码】ceres源码

2024-11-19 01:37:04 来源:pe启动盘制作源码 分类:综合

1.OpenSfM的快速编译说明及0.5.1源码含子模块库提供
2.ROS2测试源码编译安装cartographer
3.ubuntu18.04 OAK-D kalibr 双目+imu联合标定
4.ubuntu上G2O库的安装
5.非线性优化(三):g2o源代码

ceres源码

OpenSfM的快速编译说明及0.5.1源码含子模块库提供

       为了快速编译 OpenSfM 并获取其 0.5.1 版本的源码,首先,确保在 Windows 平台上能顺利安装所需的依赖和进行编译,因为针对其他版本的操作系统,可能存在安装依赖和编译过程中的问题。

       接下来,仓库asp 源码下载 OpenSfM 源码库,如果已有库,只需在根目录下执行相关命令下载子模块库,总大小预计为 MB。

       对于 Windows 用户,通过 vcpkg 库快速编译所需库,需将 vcpkg 库安装至 OpenSfM 根目录下。在安装过程中,使用 vcpkg 安装对应依赖,以 x-windows 架构为例。如果网络存在障碍,可直接下载预编译的 vcpkg 包。完成 vcpkg 安装后,安装特定的 pip 依赖。

       针对 MacOS 用户,需安装 OpenCV、Ceres solver、TRDP软件源码libomp,可通过 brew 指令进行安装。确保 pip 安装时,PYTHONPATH 环境变量包含 python3.7 的包路径:/usr/local/lib/python3.7/site-packages,并设置相关环境变量以确保其他 brew 安装的第三方库被 CMake 正确识别。最后,安装对应的 python 依赖库。

       一旦所有依赖安装完成,用户可切换至主目录并执行编译应用指令。

       如需构建 SfM 最新文档,执行相应指令后,通过浏览器访问 localhost:/ 即可查看最新文档。

       参考主要教程以确保过程顺利进行。

ROS2测试源码编译安装cartographer

       Cartographer是一个跨平台、传感器配置提供实时同步定位和绘图(SLAM)的系统,具有回环检测优势,资源占用适中。

       选择源码编译安装方式,以适应后期项目修改和移植需求。首先,使用Ubuntu虚拟机测试验证。

       若国内访问github受限,外呼 源码可选择Gitee上的备份仓库进行下载。尝试多个版本,确认在Ubuntu humble版本下能够成功下载和安装。

       在安装过程中,需要下载依赖项。在Ubuntu上,首先安装libabsl-dev、libceres-dev以及liblua5.3-dev等包。对于ceres-solver,需确保CUDA、显卡加速和TBB指令集优化选项已配置。

       在开发板上,通过源码编译安装三方依赖。确保所有依赖包均正确安装,包括protobuf版本为v3.4.1分支。

       完成所有依赖安装后,开始编译Cartographer源码。首先下载官方数据集,注意ROS2格式的rosbag转换,使用rosbags工具进行转换。

       介绍ROSbag格式,ROS1的etcd 源码调试.rosbag文件为二进制存储格式,而ROS2使用SQLite数据库格式,支持跨平台和扩展性。两种格式转换方法,推荐使用rosbags工具,无需依赖ROS环境。

       测试Cartographer时,使用ros2命令启动示例launch文件,输入特定的bag文件名以加载数据集。测试3D数据集时,使用相应的launch文件和bag文件名。

       资源占用情况分析将后续进行。

ubuntu. OAK-D kalibr 双目+imu联合标定

       将OAK相机接入ROS系统,进行SLAM定位建图导航等算法时,确保双目相机与IMU的标定参数准确,对于提升定位建图的精度和算法的鲁棒性至关重要。原厂提供的OAK相机仅包含双目的标定数据,因此,本教程使用第三方标定工具Kalibr,在ROS系统中完成双目标定、IMU标定以及IMU+双目的联合标定,以满足算法需求。

       在执行标定过程前,osgearth源码剖析首先确保已安装ROS melodic和depthai_ros环境,参考教程链接进行安装配置。接着,利用源码地址克隆Kalibr,使用catkin_make命令编译相关依赖,如Ceres Solver和code_utils,并根据教程调整code_utils文件中的代码引用。

       标定过程中,需采集数据,具体分为双目、IMU以及双目+IMU三个部分。双目数据需在白色背景下录制,确保场景清晰。IMU数据录制时,保持相机静止状态,并确保时间超过2个小时。双目+IMU数据采集时,使用特定的配置文件路径进行标定,输出cam_chain.yaml、imu_param.yaml文件,以及生成camchain-imucam.yaml结果文件。

       通过Kalibr工具,完成双目和IMU的单独标定及联合标定,输出关键参数文件。完成整个标定流程后,可参阅OAK中国官网获取最新教程和更新信息。如有技术咨询或项目合作需求,请通过指定链接与OAK官方联系,加入OAK官方微信群,获取最新资讯和社区支持。

       感谢您对OAK中国和Kalibr标定工具的关注与支持,如您喜欢本教程,欢迎分享或点赞,您的鼓励是我们持续改进的动力。

ubuntu上G2O库的安装

       ä¸€ã€ä»€ä¹ˆæ˜¯G2O库?有什么用?

        g2o 是一个图优化库。常常在SLAM 中被使用。

        图优化本质上仍然是非线性优化。只不过利用图的方式表现出来,使问题 可视化 ,然后可以根据可视化的结果来更好的调整优化过程。

        图  æ˜¯ä¸€ç§æ•°æ®ç»“构。在图优化中,用 顶点  (vertex) 表示 优化变量 ,用 è¾¹  (edge) 表示 误差项 。于是,对于任意一个上述形式的非线性最小二乘问题,都可以构建一个与之对应的图。

        在视觉SLAM 十四讲中,常用的后端优化库有两个:g2o 和ceres。ceres 是google 的一个优化库,文档详尽且友好,就不再赘述了。但对于g2o,除了源码,官方用doxygen 生成的帮助文档,就只有论文  g2o: A general framework for graph optimization  å’Œè¿™ç¯‡github 的 文档 。

        二、如何安装G2O库?有哪些依赖项?在安装和使用的过程中,会遇到哪些问题,以及如何解决?

        1安装步骤

        git clone .archive.ubuntu.com/ubuntu bionic/universe amd freeglut3 amd 2.8.1-3

        connetciton failed [IP:... ]

        Err:2 .archive.ubuntu.com/ubuntu bionic/universe amd freeglut3-dev amd 2.8.1-3

        connetciton failed [IP:... ]

        E:Failed to fetch  .archive.ubuntu.com/ubuntu/pool/universe/f/freeglut/freeglut3_2.8.1-3_amd.deb connection failed  [IP:... ]

        E:Failed to fetch  .archive.ubuntu.com/ubuntu/pool/universe/f/freeglut/freeglut3-dev_2.8.1-3_amd.deb connection failed  [IP:... ]

        E:Unable to fetch some archives, maybe run apt-get install libglut-dev

        最终 解决方案 ,  æ›´æ¢ sources.list 阿里源 清华镜像。

        apt-get update

        apt-get upgrade

       3在使用g2o时,编译用到了g2o库的project,遇到报错error: ‘index_sequence’ is not a member of 'std'

        解决方案 ,修改project的CMakeLists.txt添加:set(CMAKE_CXX_STANDARD )

       å‚考链接:

        Ubuntu. 更换 sources.list 阿里源 清华镜像 – 小固件 (atmcu.com)

        (条消息) 视觉SLAM十四讲 报错 error: ‘index_sequence’ is not a member of ‘std‘_CSSDCC的博客-CSDN博客

        (条消息) 视觉SLAM十四讲 报错 error: ‘index_sequence’ is not a member of ‘std‘_CSSDCC的博客-CSDN博客

非线性优化(三):g2o源代码

       新年伊始,让我们探讨一下g2o(通用图优化)在SLAM(Simultaneous Localization and Mapping)中的后端优化库应用。在《十四讲》中,我们对g2o有了初步的了解,并总结了其在SLAM中的使用情况。与ceres相比,g2o的文档较为简略,主要依赖于两篇论文进行参考。本文将深入探讨g2o的源代码,特别是核心文件夹中的部分,以揭示这个在SLAM领域广为人知的后端优化库的内在机理。

       首先,让我们通过一张类关系图来直观理解g2o的架构。整个g2o系统分为三层:HyperGraph、OptimizableGraph、以及SparseOptimizer。HyperGraph作为最高层,提供了一个高度抽象的框架,其内部通过内类的方式实现了Vertex和Edge的结构。Vertex和Edge相互关联,Vertex存储与节点相关联的边的集合,而Edge则记录了与之链接的节点信息。HyperGraph提供了基本的节点和边的操作,如获取、设置等,同时也包含了更复杂的功能,如节点和边的合并、删除等。

       OptimizableGraph继承自HyperGraph,进一步丰富了Vertex和Edge的实现,为图优化提供了更具体的接口。OptimizableGraph引入了海塞矩阵和b向量的概念,以及与之相关的操作,如获取海塞矩阵元素、设置参数位置等。此外,它还支持通过栈操作(pop、push)来管理节点信息。

       在OptimizableGraph之上,SparseOptimizer作为优化操作的对象,实现了优化的接口,并提供了初始化、辅助函数以及优化的核心函数。SparseOptimizer通过内部类实现了Vertex和Edge的实例化,为具体的优化算法提供了操作图的接口。

       在实现细节方面,BaseVertex和BaseEdge类继承了OptimizableGraph中的相应类,实现了节点和边的基本功能。BaseVertex类负责记录节点的海塞矩阵、b向量和估计值,并提供了数值求导的备份和恢复功能。BaseEdge类则负责处理测量信息和信息矩阵的计算,包括计算误差、构造二次形式等。此外,不同类型的边(BaseUnaryEdge、BaseBinaryEdge、BaseMultiEdge)通过继承BaseEdge类,实现了不同链接节点数量的边的特殊操作。

       鲁棒核函数的实现是g2o优化框架中一个关键部分,它在处理非线性优化问题时提供了鲁棒性,确保了优化过程的稳定性。g2o通过RobustKernel虚基类提供了设置和获取核函数参数的接口,并在具体实现中使用了简化版本的计算公式,以保证信息矩阵的正定性。

       最后,OptimizationAlgorithm类定义了优化器的一系列接口,如初始化、计算边际值和求解等。g2o的优化算法包括GN、LM和dog-leg,它们分别实现了不同的求解策略,而具体的矩阵求解任务则通过Solver类及其派生类(如BlockSolver)完成。BlockSolver类提供了一个通用框架,允许用户自定义线性求解器,如直接求解、迭代求解等。

       综上所述,g2o通过层次化的类结构,提供了从抽象到具体、从基础到进阶的图优化解决方案,其设计旨在高效、鲁棒地解决SLAM中的后端优化问题。深入理解g2o的源代码,对于开发者和研究者来说,不仅能够提高优化算法的实现效率,还能深刻理解SLAM系统中的优化机制。

本文地址:http://8o.net.cn/html/47e159598357.html 欢迎转发