Skip to content

IndexError when add an error function to objective with only one opt_var #660

@EmeryLee97

Description

@EmeryLee97

❓ Questions and Help

Hi, I'm doing pose graph optimization with theseus. I get the following error:

4294 Traceback (most recent call last):
4295   File "/home/stud/lxuh/LoopClosure_for_Gaussian_Splatting_SLAM/run_slam.py", line 109, in <module>
4296     gslam.run()
4297   File "/home/stud/lxuh/LoopClosure_for_Gaussian_Splatting_SLAM/src/entities/gaussian_slam.py", line 259, in run
4298     self.pose_graph_optimization(frame_id, gaussian_model)
4299   File "/home/stud/lxuh/LoopClosure_for_Gaussian_Splatting_SLAM/src/entities/gaussian_slam.py", line 177, in pose_graph_optimization
4300     optimize_info = self.pose_graph.optimize()
4301   File "/home/stud/lxuh/LoopClosure_for_Gaussian_Splatting_SLAM/src/entities/pose_graph.py", line 141, in optimize
4302     _, info = layer.forward(optimizer_kwargs={
4303   File "/home/stud/lxuh/miniconda3/envs/gslam/lib/python3.10/site-packages/theseus/theseus_layer.py", line 93, in forward
4304     vars, info = _forward(
4305   File "/home/stud/lxuh/miniconda3/envs/gslam/lib/python3.10/site-packages/theseus/theseus_layer.py", line 171, in _forward
4306     info = optimizer.optimize(**optimizer_kwargs)
4307   File "/home/stud/lxuh/miniconda3/envs/gslam/lib/python3.10/site-packages/theseus/optimizer/optimizer.py", line 51, in optimize
4308     return self._optimize_impl(**kwargs)
4309   File "/home/stud/lxuh/miniconda3/envs/gslam/lib/python3.10/site-packages/theseus/optimizer/nonlinear/nonlinear_least_squares.py", line 251, in _optimize_impl
4310     self._optimize_loop(
4311   File "/home/stud/lxuh/miniconda3/envs/gslam/lib/python3.10/site-packages/theseus/optimizer/nonlinear/nonlinear_least_squares.py", line 117, in _optimize_loop
4312     self.linear_solver.linearization.linearize(
4313   File "/home/stud/lxuh/miniconda3/envs/gslam/lib/python3.10/site-packages/theseus/optimizer/linearization.py", line 56, in linearize
4314     self._linearize_hessian_impl(_detach_hessian=_detach_hessian)
4315   File "/home/stud/lxuh/miniconda3/envs/gslam/lib/python3.10/site-packages/theseus/optimizer/sparse_linearization.py", line 155, in _linearize_hessian_impl
4316     self._linearize_jacobian_impl()
4317   File "/home/stud/lxuh/miniconda3/envs/gslam/lib/python3.10/site-packages/theseus/optimizer/sparse_linearization.py", line 136, in _linearize_jacobian_impl
4318     pointer = block_pointers[var_idx_in_cost_function]
4319 IndexError: index 1 is out of bounds for axis 0 with size 1

My pose graph contains SE(3) nodes, and node_0 is defined as aux_var, the others are all opt_var. Every time I add a constraint between node_0 and node_i, I get this error during optimization. What can be the reason that causes this and how can I avoid?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions