首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >g2o -- VertexSE3和VertexSE3Expmap有什么区别?

g2o -- VertexSE3和VertexSE3Expmap有什么区别?
EN

Stack Overflow用户
提问于 2020-04-08 07:00:01
回答 1查看 573关注 0票数 2

我对g2o库非常陌生,我很难在顶点中添加体式:

我使用了g2o的python版本,这是我编写的代码。

在这一行中出现类型错误:v_se3.set_estimate(pose)

代码语言:javascript
运行
复制
import g2o
import numpy as np

solver = g2o.BlockSolverSE3(g2o.LinearSolverEigenSE3())
solver = g2o.OptimizationAlgorithmLevenberg(solver)
optimizer = g2o.SparseOptimizer()
optimizer.set_algorithm(solver)

trans = np.zeros(shape=[], dtype=np.float64)
quat = g2o.Quaternion(np.array([1., 0., 0., 0.], dtype=np.float64))
pose = g2o.SE3Quat(quat, trans)

v_se3 = g2o.VertexSE()        
v_se3.set_id(0)
v_se3.set_estimate(pose)         # <- ERROR OCCURS HERE!
optimizer.add_vertex(v_se3)

错误说

代码语言:javascript
运行
复制
Type error: set_estimate(): incompatible function arguments. The following argument types are supported:
    1. (self:g2o.BaseVertex_6_Isometry3D, et:g2o.Isometry3d) -> None

当我使用v_se3 = g2o.VertexSE3Expmap()而不是g2o.VertexSE3()时,我发现可以添加顶点。

但我不知道g2o.VertexSE3Expmap()到底是什么意思。

所以这些是我的问题

  1. 为什么VertexSE3()不在这里工作?
  2. g2o.VertexSE3VertexSE3()之间的区别是什么?我应该用四元数(numpy数组)添加顶点吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-07-30 08:50:23

vertexse3被表示为一个Isometry3d,而vertexse3expmap用一个转换矩阵在内部被参数化,而外部用它的指数映射进行参数化。

因此,如果您表示为g2o.SE3Quat,您应该使用vertexse3expmap。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61094959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档