robot_localization ignores pose topic
Hi,
I wish to compare the outputs of two instances of robot localization on Clearpath's Jackal: one that gets IMU and odometry as inputs and another that gets the same IMU and odometry topics but also a pose topic that originates in observations from a UAV that hovers above.
It seems like the second instance ignores the pose topic since the outputs of the two instances are identical: plot of the two outputs of the two instances
Below are the two .yaml config files of the two instances:
robot_localization.yaml
frequency: 50
odom0: /jackal_velocity_controller/odom
odom0_config: [false, false, false,
false, false, false,
true, true, true,
false, false, true,
false, false, false]
odom0_differential: false
imu0: /microstrain/imu/data
imu0_config: [false, false, false,
true, true, true,
false, false, false,
true, true, true,
false, false, false]
imu0_differential: false
odom_frame: odom
base_link_frame: base_link
world_frame: odom
robot_localization_collaborative.yaml
frequency: 50
publish_tf: false
odom0: /jackal_velocity_controller/odom
odom0_config: [false, false, false,
false, false, false,
true, true, true,
false, false, true,
false, false, false]
odom0_differential: false
pose0: /ugv_pose_from_air
pose0_config: [true, true, false,
false, false, false,
false, false, false,
false, false, false,
false, false, false]
pose0_differential: false
imu0: /microstrain/imu/data
imu0_config: [false, false, false,
true, true, true,
false, false, false,
true, true, true,
false, false, false]
imu0_differential: false
odom_frame: odom
base_link_frame: base_link
world_frame: odom
Sample UAV pose message:
header:
seq: 329
stamp:
secs: 1493723176
nsecs: 773633956
frame_id: /bebop/odom
pose:
pose:
position:
x: 0.470266436343
y: 1.16011254862
z: 0.0
orientation:
x: 0.0
y: 0.0
z: 0.0
w: 0.0
covariance: [1.0652132368969054, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.1711349408952507, 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.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, 0.0, 0.0, 0.0]
I uploaded a bag file and sample messages of the three EKF input topics here.
My code is available in GitHub.
Thanks!
Could it be that your world_frame in robot_localization_collaborative.yaml should be set to the map_frame and not odom. This is very similar to GPS integration.. I think... two separate EKFs, one is continuous, the other is fusing continuous+externally gathered pose data. See link text
Thanks @bluehash. I now tried setting
world_frame
tomap_frame
(both are set to map). In addition, I setpublish_tf
to true in order to have a map -> base_link TF. This didn't change anything (i.e. the trajectories are still identical). Any other ideas?Hi! I have a very similar problem to yours. I'm using pose data in the map->odom instance of ekf_localization and it ignores my pose data. My pose data is being published in the map frame which has a well-defined transform to all other links. Is there anything I'm missing out on? Thank you!