ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
Ah, sorry, didn't look at your config closely enough. You are fusing X
and Y
in your odom0
config, which is pose data, so the first measurement you get after you call set_pose
will snap it right back. In other words, this is happening:
Time t0
: filter gets measurement from odom0. X
and Y
position in the filter output will be very near the odom0
measurement.
Time t1
: you call set_pose
with some specific pose. EKF pose jumps to that position.
Time t2
: filter gets measurement from odom0
. X
and Y
position in the filter output will be very near the odom0
measurement.
This is why differential mode works: it converts the odom0
pose to a velocity, which won't interfere with your set_pose call. All set_pose is doing is sending your robot to the location you send it. If you then give it measurements that tell it that it is somewhere else, it's going to jump back.
2 | No.2 Revision |
Ah, sorry, didn't look at your config closely enough. You are fusing X
and Y
in your odom0
config, which is pose data, so the first measurement you get after you call set_pose
will snap it right back. In other words, this is happening:
t0
: filter gets measurement from odom0. X
and Y
position in the filter output will be very near the odom0
t1
: you call set_pose
with some specific pose. EKF pose jumps to that t2
: filter gets measurement from odom0
. X
and Y
position in the filter output will be very near the odom0
measurement.This is why differential mode works: it converts the odom0
pose to a velocity, which won't interfere with your set_pose call. All set_pose is doing is sending your robot to the location you send it. If you then give it measurements that tell it that it is somewhere else, it's going to jump back.
3 | No.3 Revision |
Ah, sorry, didn't look at your config closely enough. You are fusing X
and Y
in your odom0
config, which is pose data, so the first measurement you get after you call set_pose
will snap it right back. In other words, this is happening:
t0
: filter gets measurement from odom0
. X
and Y
position in the filter output will be very near the odom0
measurement.t1
: you call set_pose
with some specific pose. EKF pose jumps to that position.t2
: filter gets measurement from odom0
. X
and Y
position in the filter output will be very near the odom0
measurement.This is why differential mode works: it converts the odom0
pose to a velocity, which won't interfere with your set_pose set_pose
call. All set_pose set_pose
is doing is sending your robot to the location you send it. If you then give it measurements that tell it that it is somewhere else, it's going to jump back.