Robotics StackExchange | Archived questions

robot_pose_ekf odom_combined topic is not pusblished everytime

Hi All!

I am trying to run robotposeekf package with my RT 9axis IMU Sensor and Create2 with (autonomy_create driver) that publish the /odom topic. I have a simple node that subscribed to /odom and /robot_pose_ekf/odom_combined topics and create a trajectory path to display both topic in the odom frame but usually get shorter path from robotposeekf. Then I check each topic and got this messages

$rostopic hz robotposeekf/odom_combined

min: 5.038s max: 45.422s std dev: 8.43810s window: 125 
no new messages 
no new messages 
no new messages
no new messages 
no new messages 
no new messages 
no new messages
no new messages 
no new messages 
average rate: 0.128 min: 5.038s max: 45.422s std dev: 8.40684s window: 126 
no new messages no new messages 
no new messages no new messages
average rate: 0.129 min: 5.038s max: 45.422s std dev: 8.37696s window: 127 
no new messages 
no new messages

$ rostopic hz /imu_data

subscribed to [/imu_data]
average rate: 10.000
    min: 0.100s max: 0.101s std dev: 0.00025s window: 10
average rate: 10.000
    min: 0.099s max: 0.101s std dev: 0.00038s window: 20
average rate: 10.000
    min: 0.099s max: 0.101s std dev: 0.00036s window: 30
average rate: 10.000
    min: 0.099s max: 0.101s std dev: 0.00042s window: 40
average rate: 10.000
    min: 0.099s max: 0.101s std dev: 0.00043s window: 50

rostopic hz /odom

subscribed to [/odom]
average rate: 10.005
    min: 0.099s max: 0.101s std dev: 0.00053s window: 10
average rate: 9.998
    min: 0.099s max: 0.102s std dev: 0.00063s window: 20
average rate: 10.002
    min: 0.095s max: 0.105s std dev: 0.00151s window: 30
average rate: 10.001
    min: 0.095s max: 0.105s std dev: 0.00132s window: 40
average rate: 10.001
    min: 0.095s max: 0.105s std dev: 0.00125s window: 50
average rate: 10.000
    min: 0.095s max: 0.105s std dev: 0.00119s window: 60
average rate: 10.001
    min: 0.095s max: 0.105s std dev: 0.00112s window: 70
average rate: 10.001
    min: 0.095s max: 0.105s std dev: 0.00107s window: 80
average rate: 10.000
    min: 0.095s max: 0.105s std dev: 0.00128s window: 90
average rate: 9.998
    min: 0.094s max: 0.106s std dev: 0.00154s window: 100

Basically, in my launch file, I have set the robotposeekf freq parameter to 10hz.

<!-- 
    Loading IMU Driver
  -->
  <include file="$(find rt_usb_9axisimu_driver)/launch/rt_usb_9axisimu_driver.launch" />
  <!-- 
    Loading IMU FILTER (Madgwick)
  -->
  <node pkg="imu_filter_madgwick" type="imu_filter_node" name="imu_filter_madgwick">
    <param name="use_mag"            type="bool"   value="false"/>
    <param name="publish_tf"         type="bool"   value="false"/>
        <param name="world_frame"        type="string" value="enu"/>
        <remap from="/imu/data"          to="/imu_data"/>
  </node>
  <!-- 
    Loading Robot Pose EKF                  
-->
    <arg name="output_frame"        default="odom"/>
    <arg name="base_footprint_frame" default="base_footprint"/>
    <arg name="freq"                default="10.0"/>
    <arg name="sensor_timeout"      default="1.0"/>
    <arg name="odom_used"           default="true"/>
    <arg name="imu_used"            default="true"/>
    <arg name="vo_used"             default="false"/>


  <node pkg="robot_pose_ekf" type="robot_pose_ekf" name="robot_pose_ekf">
    <param name="output_frame"          value="$(arg output_frame)"/>
    <param name="base_footprint_frame"   value="$(arg base_footprint_frame)"/>
    <param name="freq"                  value="$(arg freq)"/>
    <param name="sensor_timeout"        value="$(arg sensor_timeout)"/>
    <param name="odom_used"             value="$(arg odom_used)"/>
    <param name="imu_used"              value="$(arg imu_used)"/>
    <param name="vo_used"               value="$(arg vo_used)"/>

  </node> 

I believed that /odom_combined should published regularly but I am not really sure what seems to be the problem. I have done calibrating my IMU. I set the autonomy_create2 publish tf to false.

Any help is appreciated! Thanks

Asked by fj138696 on 2017-07-19 22:26:30 UTC

Comments

Answers

I think I know the reason why I don't have robot_pose_ekf/odom_combined topic output regularly because my tf is wrong. I added output="screen" in the launch file and showed that my IMU was not active since I am missing transform to imu_link.

original TF

<node pkg="tf" type="static_transform_publisher" name="base_to_imu_broadcaster" args="0.0 0 0.17 0 0 0 1 /base_link /imu 100" />

new TF

<node pkg="tf" type="static_transform_publisher" name="base_to_imu_broadcaster" args="0.0 0 0.17 0 0 0 1 /base_link /imu_link 100" />

Asked by fj138696 on 2017-07-20 20:17:44 UTC

Comments