errors in using robot_localization package
Hello ROS gurus,
I am trying to use robot_localization package to better localize my turtlebot in my lab environment. But it seems like it is not able to do what it is meant to do, i am not able to figure out what the problem is. Here is the description of what i have done and required files:
I am using ROS Indigo, Ubuntu 1404 on a turtlebot which is controlled with a joystick. I have configured robot_localiztion package after going through the wiki and some questions related to the package. I drove the robot around in a rectangular grid and collected data in a bag file and played it later. This is the launch file i am using and these are the results i got.
<node pkg="robot_localization" type="ekf_localization_node" name="ekf_localization" clear_params="true">
<param name="frequency" value="30"/>
<param name="sensor_timeout" value="0.1"/>
<param name="two_d_mode" value="true"/>
<param name="odom_frame" value="/odom"/>
<param name="base_link_frame" value="/base_footprint"/>
<param name="world_frame" value="/odom"/>
<param name="odom0" value="/odom"/>
<param name="imu0" value="mobile_base/sensors/Imu_data"/>
<rosparam param="odom0_config">[false, false, false,
false, false, true,
true, false, false,
false, false, false,
false, false, false]</rosparam>
<rosparam param="imu0_config">[false, false, false,
false, false, false,
false, false, false,
false, false, true,
false, false, false]</rosparam>
<param name="odom0_differential" value="false"/>
<param name="imu0_differential" value="false"/>
<param name="imu0_remove_gravitational_acceleration" value="true"/>
<param name="debug" value="false"/>
<param name="debug_out_file" value="debug.txt"/>
</node>
Here is the tf frames out when i ran below command
rosrun tf view_frames
And this is the result of odometry plotted in Rviz (red is /odom from turtlebot green is /odometry/filtered from robot_localization)
I plotted odom data using python, here is the result. You can see that both odom(red) and odom_filtered(blue) are overlayed on each other
I am not getting any errors while using robot_localiztion package and tf frames looks right to me. I am not able to figure out what the problem is. Can anyone help me? And here is the bag file i am using.
NEW PLOTS:
Also i ran the command rosrun tf tf_echo /gyro_gram /base_link_fram and i was able to see the output.
UPDATED ON 10/03/2016 4:10 PM
Here is my launch file:
<launch>
<include file="$(find autonomous_navigation)/launch/minimal.launch"/>
<node pkg="robot_localization" type="ekf_localization_node" name="ekf_localization" clear_params="true">
<param name="frequency" value="30"/>
<param name="sensor_timeout" value="0.1"/>
<param name="transform_time_offset" value="0.0"/>
<param name="two_d_mode" value="true"/>
<param name="map_frame" value="/map"/>
<param name="odom_frame" value="/odom"/>
<param name="base_link_frame" value="/base_footprint"/>
<param name="world_frame" value="/odom"/>
<param name="odom0" value="/odom"/>
<param name="imu0" value="mobile_base/sensors/imu_data"/>
<rosparam param="odom0_config">[false,false,false,false,false,false,true,true,true,false,false,false,false,false,false]</rosparam>
<rosparam param="imu0_config">[false,false,false,true,true,true,false,false,false,true,true,false,true,true,true]</rosparam>
<param name="odom0_differential" value="false"/>
<param name="imu0_differential" value="false ...
@Tom Moore Can you please look into this?
Did you fix your launch file? Can you please post it and a sample input message from each sensor? I still don't think your IMU is getting integrated.
I added the requested info. Happy to provide if any additional info is required.
@krishna43 Hi I am doing the similar experiment. However, I found the /odom in TF is always produced by the bag file but not the ekf node. So that make the estimation and the odom the same. I saw your TF tree is correct. Any suggestions?
@krishna43 did you have to set up the covariance values of the
/odom
topic? The/odom
readings I am getting with my turtlebot have 0 covariance. I am trying to use turtlebot with robot_localization to fuse /odom with an IMU but the /odom and /odometry/filtered are overlaping, it looks like it is not being corrected by the imu. I am wondering if this 0 covariance may be the problem