NicoMandel / mrekf_slam

MultiRobot-EKF-SLAM Repo
0 stars 0 forks source link

Better Initilaisation values for dynamic landmarks #14

Closed NicoMandel closed 7 months ago

NicoMandel commented 10 months ago

Currently the motion models holds vmax here as initialisation values that get inserted in g() from the EKF model through the sensor here. It would be beneficial if we would find better values that we could use here.

NicoMandel commented 9 months ago

Consider using the true value for initialization. To show that performance degradation for the cases when having 2 static landmarks (where it ranges from great to bullshit) is caused by initialization errors, and not due to some mistake in the tracking algorithm. Kind of takes away the time it takes to converge and erors that may appear along the way. Down the line, this could also be used in conjunction with DATMO #9 , where first the object is tracked before it is inserted and its information is used for own location estimation.

NicoMandel commented 9 months ago

may have to be passed down from the simulation object. This is the only one that has access to the true values still, because others are just models.

Option B: may have to restructure code so that a model gets attached to each object that is created... this would entail a major change to the codebase, so maybe put this on the backburner.

NicoMandel commented 8 months ago

Appears to work with 1344ea5 and 09cf868

NicoMandel commented 8 months ago

True values have to be given in the robot map frame from t=0. Which means, if the starting pose isn't 0,0,0, then the angle (especially for body frame) will not be correct when calculating frames. Needs an intermediate step to convert between the true frame and the initial robot frame estimate

NicoMandel commented 7 months ago

P. Corke code in VehicleBase odo is calculated from np.linalg.norm(xd) which comes from the previous state and the current. Now also implemented in version of EKF_Base , but only DATMO and DynamicEKF derived classes have the methods called get_initial_values where it is used. required to pass true_states through from step to extend to get _g_funcs, so that derived classes can use too. Reference to issue #19 and #20

NicoMandel commented 7 months ago

Fixed now also for re-running filters from previously recorded experiments.