MIT-SPARK / Kimera-Multi

Index repo for Kimera-Multi system
350 stars 40 forks source link

Algorithm diverges #19

Closed ResearcherYan closed 7 months ago

ResearcherYan commented 7 months ago

I've been running the code for around 4h, yet the dpgo still can't converge. Here's the tmux windows.

frontend window

In the end, there's no loop closure candidates ready for verification for all 6 robots.

2024-04-03_22-02

dpgo window

In the end, no loop closures are accepted by any robot.

2024-04-03_22-00

Every robot successfully initializes in global frame, which is printed in its own panel. But panel 0 indicates that robot 0 still published INITIALIZE command. I have no idea why this situation happened.

2024-04-03_22-01

vio window

2024-04-03_22-02_1

rviz

In the end, rviz is stuck like this.

2024-04-03_22-02_2

According to the above outputs, could you please help me find what leads to the divergence? Thx!!

yuluntian commented 7 months ago

Hi, looking at the terminal screenshots, I didn't see anything that shows an error. But for the rviz window, the trajectories do not appear complete so I would check if the rosbags finished playing.

For your questions on dpgo:

But panel 0 indicates that robot 0 still published INITIALIZE command. I have no idea why this situation happened.

This happens because in the current implementation, dpgo will keep running in rounds, in each round it solves the latest snapshot of the pose graph. This choice is mainly motivated for online experiments, but for rosbag data, this means dpgo will keep solving the final pose graph after the bag finishes (so it's safe to exit at that point).

In the end, no loop closures are accepted by any robot.

In the printout, a loop closure is only shown as accepted if its weight from graduated non-convexity (GNC) is numerically close to 1. Since we only run GNC approximately, most of the time the loop closures will have fractional weights between 0 and 1 and so will not be shown as accepted, but they are still being used for pose graph optimization.

ResearcherYan commented 7 months ago

Thanks for your reply!

All the ros bags finished playing. The rviz window got stuck in the middle of the run time so the trajectory was no longer updated on the screen anymore since then.

About dpgo and loop closure parts, I understood the mechanism. Thanks for your explanation. When the ros bag finished, it's fine to exit the the program.

UserNameGGarri commented 7 months ago

Hello

could you plz help me how to display the paths as you posted? all the single paths has displayed, but they do not express all together in the sigle map. i was trying expressing it but couldn't find how to do it.

ResearcherYan commented 7 months ago

@UserNameGGarri I'm sorry. I don't think I understand what you mean. What do you mean by 'how to display the paths'? Could you please put it more specifically?

UserNameGGarri commented 7 months ago

@ResearcherYan Sorry for the poor english skills. I mean the paths that you show with rviz, like below image that you posted.

image

When i try 'example.yaml' file i could only see single paths of the robots however i want to see paths altogether. I'm not familiar with rviz and ros. Could you tell me how you set up the environment, if it's okay?

ResearcherYan commented 7 months ago

@UserNameGGarri I think I get you now. I use the default 1014-example.yaml file in the source code and follow the instructions in Example & Usage to run the code. If you have checked all paths in the left panel of rviz but still yield only one robot path, I suggest you check whether all rosbags display normally.