ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

Output of robot_localization node cannot converge until fusing absolute pose data [closed]

asked 2018-06-12 14:38:31 -0500

raewu gravatar image

Hi There,

I am working with a mobile robot CLEARPATH Jackal. It has two instances ekf_localization_node running inside, one for local and one for global.

For the first test, ekf_local_node was fused with wheel odometry and IMU. ekf_global_node was fused with wheel odometry, IMU and the output of RTabMap which took /odometry/filtered/local as the input. The launch files are shown below:

ekf_local_node: <node pkg="robot_localization" type="ekf_localization_node" name="ekf_localization_local" output="screen" &gt;="" <remap="" from="/odometry/filtered" to="/odometry/filtered/local"/>

  <param name="odom_frame" value="odom"/>
  <param name="base_link_frame" value="base_link"/>
  <param name="world_frame" value="odom"/>

  <param name="transform_time_offset" value="0.0"/>

  <param name="odom0" value="/jackal_velocity_controller/odom"/> <!-- jackal odometry -->
  <param name="imu0" value="/imu/data"/> <!-- IMU -->

  <!-- The order of the values is x, y, z, roll, pitch, yaw, vx, vy, vz, vroll, vpitch, vyaw, ax, ay, az. -->
  <rosparam param="odom0_config">[false, false, false,                                                  
                                  false, false, false,                                                
                                  true, true, false,                                                  
                                  false, false, true,                                                 
                                  false, false, false]</rosparam>

  <rosparam param="imu0_config">[false, false, false,                                                 
                                 false, false, true,                                                  
                                 false, false, false,                                                 
                                 false, false, true,                                                  
                                 false, false, false] </rosparam>

  <param name="odom0_differential" value="false"/>
  <param name="imu0_differential" value="false"/>

  <param name="odom0_relative" value="true"/>
  <param name="imu0_relative" value="true"/>

</node>

ekf_global_node:

   <node pkg="robot_localization" type="ekf_localization_node" name="ekf_localization_global_1" output="screen" >
  <remap from="/odometry/filtered" to="/odometry/filtered/global1"/>
  <param name="frequency" value="50"/>
  <param name="sensor_timeout" value="0.1"/>
  <param name="two_d_mode" value="false"/>

  <param name="odom_frame" value="odom"/>
  <param name="base_link_frame" value="base_link"/>
  <param name="world_frame" value="map"/>

  <param name="transform_time_offset" value="0.0"/>

  <param name="odom0" value="/jackal_velocity_controller/odom"/>
  <param name="pose0" value="/rtabmap/localization_pose"/>
  <param name="imu0" value="/imu/data"/>

  <!-- The order of the values is x, y, z, roll, pitch, yaw, vx, vy, vz, vroll, vpitch, vyaw, ax, ay, az. -->

  <rosparam param="odom0_config">[false, false, false,                                                   
                                  false, false, false,                                                
                                  true, true, true,                                                   
                                  false, false, true,                                                 
                                  false, false, false]</rosparam>
 <rosparam param="pose0_config">[true, true, true,                                                   
                                  false, false, true,                                                
                                  false, false, false,                                                
                                  false, false, false,                                                
                                  false, false, false]</rosparam>
  <rosparam param="imu0_config">[false, false, false,                                                 
                                  false, false, true,                                                 
                                  false, false, false,                                                
                                  false, false, true,                                                 
                                  false, false, false]</rosparam>

  <param name="odom0_differential" value="false"/>
  <param name="pose0_differential" value="true"/>
  <param name="imu0_differential" value="false"/>

  <param name="odom0_relative" value="false"/>
  <param name="pose0_relative" value="false"/>
  <param name="imu0_relative" value="true"/>

The first test worked perfectly. I generated plots of positions x versus y for ekf_nodes (both ekf_local and ekf_global) and they have good agreements with those obtained fromvicon cameras. However, after a few days when I did the second test with the same launch file, both ekf nodes had convergence problems, i.e. position x grew boundlessly which is unphysical. This problem is weird because I used the same launch file and the experiment environment was the same as before.

I investigated the problem for a bit, and I found fusing the absolute pose of wheel odometry with ekf_local node can fix the convergence problem for 'ekf_local_node'. For ekf_global_node, if I fuse absolute poses from both wheel odometry and Rtabmap ... (more)

edit retag flag offensive reopen merge delete

Closed for the following reason the question is answered, right answer was accepted by Tom Moore
close date 2018-07-30 04:02:32.217147

Comments

This will be impossible to answer without sample input messages from each of your sensor inputs, I'm afraid.

Tom Moore gravatar image Tom Moore  ( 2018-06-19 05:42:31 -0500 )edit

Any update on this? I may be able to help if you provide sample sensor messages.

Tom Moore gravatar image Tom Moore  ( 2018-07-17 05:51:15 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2018-07-17 14:48:27 -0500

raewu gravatar image

Hi Tom, Thank you for your reply. After reinstalling the robot_localization package. It worked all of a sudden. I still don't know what caused this though.

edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2018-06-12 14:38:31 -0500

Seen: 273 times

Last updated: Jun 12 '18