Я действительно новичок в библиотеке g2o и пытаюсь добавить позу в вершину: (
Я использовал python версию g2o, и это код, который я написал.
Ошибка типа в этой строке: v_se3.set_estimate(pose)
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)
Ошибка говорит
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()
.
Так что это мои вопросы,
Почему VertexSE3()
здесь не работает?
В чем разница между g2o.VertexSE3
и g2o.VertexSE3Expmap
?
Что мне нужно сделать, чтобы добавить вершину с кватернионом (numpy массив)?
Спасибо