robot_localization
I am trying to use robot_localization package to stimate the position of my robot. First I am going to explain what I have.
Sensors:
IMU publishing sensor_msgs::Imu publishing in /imu_rectificada topic. The IMU frame is ENU, 0 degrees when Y is in Norht and Z is up. I will fill the covariance once the node is working.
---
header:
seq: 191036
stamp:
secs: 1434547057
nsecs: 229000000
frame_id: /imu
orientation:
x: -0.628702991434
y: -0.315484655538
z: 0.321512012361
w: 0.633902097503
orientation_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
angular_velocity:
x: -0.0138241518289
y: -0.0111814923584
z: 0.0322032161057
angular_velocity_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
linear_acceleration:
x: -0.0442927330732
y: -9.97963142395
z: 0.102352119982
linear_acceleration_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
---
Wheel odometry publishing nav_msgs::Odometry in /odom topic. It starts at 0 position.
---
header:
seq: 110736
stamp:
secs: 1434546465
nsecs: 469210289
frame_id: /odom
child_frame_id: /base_link
pose:
pose:
position:
x: 276.840007856
y: 0.0
z: 0.0
orientation:
x: 0.0
y: 0.0
z: 0.0
w: 1.0
covariance: [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]
twist:
twist:
linear:
x: 0.1
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
covariance: [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]
---
tf:
I publish the transform /odom -> /base_link only with the information of odometry, so it doesnt have any global information. I cloud change this with the information of the imu, but actually im not interested in global positioning.
Here my first question, where should I set the transform for the IMU, I am trying with a transform /base_link -> /imu where imu_frame is just base_link_frame but with the rotation reported from the IMU.
Q1: Is it good the transform I am publishing with the odometry? Where should I set the transform for the IMU?
My launch file is:
<launch>
<node pkg="robot_localization" type="ukf_localization_node" name="ukf_localization" clear_params="true">
<!-- My odometry publish at this frequency -->
<param name="frequency" value="10"/>
<param name="sensor_timeout" value="0.15 ...
So entering this:
rostopic echo /odometry/filtered
...produces nothing? You can try turning on debug mode and very briefly run the node, then kill it and look at the debug output. Look for "failed" in the debug file. I suspect transforms.
When you say the estimation is "not correct," in what way is it not correct? Are you saying that everything works in simulation, but not on a real robot?