Hi,
I'm currently using the excellent robot_localization
package in order to combine data from an IMU, velocities and GPS.
Following the tutorials on the robot_localization
wiki page I'm able to get the correct odometry and tf, but each time a new GPS fix comes in (~1Hz for our GPS) the /base_link
frame does a discrete jump on the /odom
frame. According to REP105, this should be continuous.
Any ideas on how to make the output continuous or at least smooth it?
Thanks!
EDIT: Added launchfile.
Launchfile:
<node pkg="gps_common" type="utm_odometry_node" name="utm_odometry_node">
<param name="frame_id" value="utm"/>
</node>
<node pkg="robot_localization" type="utm_transform_node" name="utm_transform_node" respawn="true" output="screen">
<param name="magnetic_declination_radians" value="0.234223186"/>
<param name="roll_offset" value="0"/>
<param name="pitch_offset" value="0"/>
<param name="yaw_offset" value="0"/>
<param name="zero_altitude" value="false"/>
<remap from="/odometry/filtered" to="odom" />
<remap from="/gps/fix" to="/fix" />
</node>
<node pkg="robot_localization" type="ekf_localization_node" name="ekf_localization" clear_params="true" output="screen">
<param name="frequency" value="30"/>
<param name="sensor_timeout" value="0.1"/>
<param name="imu0" value="/imu/data"/>
<param name="odom0" value="/gps/utm"/>
<param name="twist0" value="/twist_robot" />
<!-- IMU data -->
<rosparam param="imu0_config">[false, false, false,
true, true, true,
false, false, false,
true, true, true]</rosparam>
<!-- GPS data -->
<rosparam param="odom0_config">[true, true, true,
false, false, false,
false, false, false,
false, false, false]</rosparam>
<!-- Twist from velocities -->
<rosparam param="twist0_config">[false, false, false,
false, false, false,
true, true, false,
false, false, false]</rosparam>
<param name="imu0_differential" value="false"/>
<param name="odom0_differential" value="false"/>
<param name="twist0_differential" value="false"/>
<param name="debug" value="false"/>
<param name="debug_out_file" value="debug_ekf_localization.txt"/>
<param name="odom_frame" value="odom"/>
<param name="base_link_frame" value="base_link"/>
<rosparam param="process_noise_covariance">[0.03, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.03, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.03, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.03, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.00, 0.06, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.00, 0.0, 0.025, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.00, 0.0, 0.0, 0.025, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.00, 0.0, 0.0, 0.0, 0.05, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.00, 0.0, 0.0, 0.0, 0.0, 0.002, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.00, 0.0, 0.0, 0.0, 0.0, 0.0, 0.002, 0.0,
0.0, 0.0, 0.0, 0.0, 0.00, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.004]</rosparam>
</node>
Originally posted by Gary Servin on ROS Answers with karma: 962 on 2014-08-07
Post score: 2
Original comments
Comment by l0g1x on 2014-08-07:
can you edit your question and post your launch file as well as say what data you are using from what sensors?