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
robotlocalizationcollaborative.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!
Asked by Omer on 2017-05-02 09:55:05 UTC
Answers
Your UAV-based pose has a frame_id
of bebop/odom. You need to provide a bebop/odom->odom transform, or the EKF won't know how to use the data, and will ignore it.
Asked by Tom Moore on 2017-06-28 05:17:01 UTC
Comments
I have a very similar problem. I'm using pose data in the map->odom instance of ekf_localization_node and it ignores my pose data. My pose data is being published in the map frame which already has a well-defined transform to all other links. Is there anything I'm missing out on?
Asked by Karthikeya Parunandi on 2018-04-12 16:04:17 UTC
Ask a question and post your EKF config and sample messages, please.
Asked by Tom Moore on 2018-04-13 06:37:43 UTC
Comments
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
Asked by bluehash on 2017-05-02 10:25:02 UTC
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?Asked by Omer on 2017-05-05 11:19:12 UTC
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!
Asked by Karthikeya Parunandi on 2018-04-12 16:02:30 UTC