In unit 2, Fuse sensor data to improve localization
While setting up the 5X3 matrix for sensor config, we are ignoring the pose values, resulting in the matrix as shown:
The justification for doing so was (below is the quote from the course) :
In most of the cases (including this one), the odometry data is generated using a wheel encoder. This means that its velocity, orientation, and position data are all generated from the same source. So, in this case, we don’t want to use all the values since we would be feeding duplicate information into the filter. Instead, it’s best to just use the velocities.
Question 1: what do you mean by duplicate information? can you give me an example?
Questions 2: Can you explain why we are ignoring the pose values in the matrix, since the data at position Y is the very thing we are filtering?
In odom0,We are considering the linear velocity value at Y, by setting it to True in the matrix. Why are we considering this when the robot can move only based on linear X velocity?
Below is a quote from the course that justified this:
Awesome! But wait… there’s one more important thing to comment on. If the odometry message reports a 0 value for linear velocity in Y (and its covariance is NOT inflated to a large value), it’s best to feed that value to the filter. As a 0 measurement, in this case, indicates that the robot cannot ever move in that direction, it serves as a perfectly valid measurement.
in imu0 matrix, why are we setting the Yaw to True when we set it to False in odom0 sensor?
In the ekf_localization.yaml file, we are using a two_d_mode parameter, defined as shown below:
- two_d_mode: This variable indicates if your robot is working in a 2D environment. If set to true, all the 3D pose variables will be set to 0.
Now when we set this to true, does this overwrite the matrix content we had manually set? Can we just leave the 3D pose data empty in the matrix and wait for two_d_mode to fill up the missing areas on its own during program execution?
Now when we populate the matrix using True or False, we are doing this by terming everything as False that has no chance of happening and leaving True the rest since we know that they can happen. Is this right? or is there more to it?