jackal/jackal — pull request #17 by ayrton04 (2014-09-26 20:41:12+00:00)
Title: control.yaml parameter tweaking for better localization performance

This should aid in keeping some of the covariances in the output of ekf_localization_node (as reported in the /odometry/filtered topic) from exploding. Relevant changes:

- Changed the twist_covariance_diagonal Z velocity variance to 0.001 and set the configuration for Z velocity to true in odom0_config. The use of large covariances is only necessary when you want the filter to ignore a measurement, but robot_localization lets you use the sensorN_config setting for that. Also, in this case, the Jackal is unlikely to ever attain instantaneous Z velocity, and so it's safe to treat the 0 value in the Twist portion of the /jackal_velocity_controller/odom message as an actual measurement, and fuse it with the other data. The same is true for Y velocity. Its variance was already small, so I only updated its odom0_config value.

- Re-enabled the IMU. I saw that it was commented out, but it seemed to perform well for me. There is some small amount of rotation when the sim starts, but that is likely due to either (a) the velocity controller or IMU having some bias in its yaw or yaw velocity data, or (b) the gravity and downhill-slope starting point in Gazebo is rotating the robot. I enabled roll, pitch, yaw, and their respective velocities in imu0_config. I also set imu0_differential to true, which will have the effect of making the robot always believe it is starting in a level plane, even if it is on a steep slope. From the robot's point of view, however, this often makes sense. It's important to consider, though, that if the robot starts, for example, with its X-axis pointing directly down the slope, then if it drives down that slope to a flat area, ekf_localization_node will indicate that the robot went straight and then went *up* an incline. While this may seem non-intuitive, the alternative (i.e., if you turn imu0_differential off) is that the robot will start with its true orientation, but if the IMU's first reporting yaw angle is non-zero, then your robot will not be facing directly down the X axis when it starts.