当前位置: 首页 > news >正文

在g2o中,顶点(Vertex)和边(Edge)插入到概率图的流程

在g2o中,顶点(Vertex)和边(Edge)通过构建图模型描述优化问题,插入到概率图的流程可分为以下核心步骤:


1. 顶点插入流程

(1) 创建顶点对象
// 以SE3位姿顶点为例
g2o::VertexSE3* vertex = new g2o::VertexSE3();

说明:根据问题类型选择顶点类型(如VertexSE3VertexPointXYZ等)。

(2) 设置顶点初始值
Eigen::Isometry3d initial_pose = Eigen::Isometry3d::Identity();
vertex->setEstimate(initial_pose);  // 设置初始位姿

要点:初始值需合理,否则可能导致优化发散。

(3) 分配唯一ID
vertex->setId(vertex_id);  // ID需全局唯一,通常从0递增

注意:ID用于在图中标识顶点,冲突会导致运行时错误。

(4) 固定或优化选择
vertex->setFixed(true);  // 固定顶点(如首帧位姿)

应用场景:先验信息或无需优化的顶点可固定。

(5) 添加至优化器
optimizer.addVertex(vertex);

2. 边插入流程

(1) 创建边对象
// 以二元边(连接位姿顶点和路标顶点)为例
g2o::EdgeProjectXYZ2UV* edge = new g2o::EdgeProjectXYZ2UV();

类型选择

  • 一元边(BaseUnaryEdge):单顶点约束(如先验位姿)
  • 二元边(BaseBinaryEdge):双顶点约束(如重投影误差)
  • 多元边(BaseMultiEdge):多顶点复杂约束
(2) 连接顶点
edge->setVertex(0, dy

http://www.mrgr.cn/news/100561.html

相关文章:

  • 【Vue.js】组件数据通信:基于Props 实现父组件→子组件传递数据(最基础案例)
  • 练习普通话,说话更有节奏
  • day005
  • 架构风格对比
  • IEC 61850标准协议解读 2.基于Java的MMS实现
  • 怎么把Ubuntu系统虚拟环境中启动命令做成系统服务可以后台运行?
  • 安装qt4.8.7
  • QT6 源(58)篇一:阅读与注释 QString 这个类,先给出其应用举例
  • 通过深度学习推进增材制造:当前进展与未来挑战综述
  • 【wpf】 WPF中实现动态加载图片浏览器(边滚动边加载)
  • 庙算兵棋推演AI开发初探(7-神经网络训练与评估概述)
  • Nacos-3.0.0适配PostgreSQL数据库
  • Rust 学习笔记:关于切片的两个练习题
  • SNMP协议之详解(Detailed Explanation of SNMP Protocol)
  • 浅谈PCB传输线(一)
  • 嵌入式RTOS实战:uC/OS-III最新版移植指南(附项目源码)
  • 构建“云中”高并发:12306技术改造的系统性启示
  • 来聊聊JVM中安全点的概念
  • 电子监管码预检剔除装置提示盒尺寸过短
  • 网络安全入门综述