0
$\begingroup$

Rosanswers logo

Hello,

I am fusing odometry from a lidar (I have it thanks to undocumented pub_odometry parameter of hector_slam), IMU and GPS data. I am using the dual_ekf_navsat_example. My odom message has no twist information, only pose. So that it is taken into account by ekf_se_odom, I need to publish it with frame_id = odom, because world_map of ekf_se_odom is odom. Then, if I want my odom message to be fused again in ekf_se_map, I need to publish it with frame_id = map, because world_map of ekf_se_map is map. So... I guess I have to duplicate my odom message... am I right or am I missing something ?

Yvon


Originally posted by Yvonnn on ROS Answers with karma: 16 on 2017-06-28

Post score: 0


Original comments

Comment by ufr3c_tjc on 2017-06-28:
You only need one message. The frame_id of the message depends upon which frame hector_slam is estimating your position in. I haven't used the package myself, but as long as you have set the package map and odom frame parameters correctly, then the default message frame_id is correct for both ekf's.

Comment by Yvonnn on 2017-06-29:
Not sure you got it. My pb is strongly linked to this simpler question : will an instance of robot_state_estimator with parameter world_frame = map use the pose part of a odometry message with frame_id = odom ? My answer is : NO. That's why I need to publish a odometry message with frame_id = map.

Comment by ufr3c_tjc on 2017-06-29:
The answer to that simpler question is actually YES. The ekf node then transforms the data itself. You only need one message, with the frame_id of odom, and send it to both.

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

Well, I've just checked it one more time : pose with frame_id = odom not used by ekf_se_map with world_frame = map but used if I set frame_id = map. I am quite confident on this.


Originally posted by Yvonnn with karma: 16 on 2017-06-30

This answer was ACCEPTED on the original site

Post score: 0


Original comments

Comment by ufr3c_tjc on 2017-07-02:
Then there is something wrong in your system, as this is not the correct behavior. Also, what you're doing is wrong, because the odometry is only being estimated in the odom frame, and setting the frame_id to map will make the ekf node think that the odometry is really in the map frame, but it isnt!

Comment by ufr3c_tjc on 2017-07-02:
Make sure that the transform from map -> odom is being published by the ekf_se_map node, and that odom -> base_link is published by the ekf_se_odom node.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.