MovePosition is slower than expected

I calculate my movement in FixedUpdate using the following:

Vector3 movement = _agent.speed * Time.fixedDeltaTime * transform.forward.normalized;
_rigidbody.MovePosition(transform.position + movement);

_agent.speed is 10. _rigidbody.velocity.magnitude is 10. However, if I sample the position every second, it gives a value around 7. I believe my sampling is correct, because when I move using the navmesh, it shows a speed of 10. My rigid body is marked as kinematic.

Is this expected? Why would MovePosition move slower?

New information: When I disable the nav mesh agent, the speed goes up to normal. My hack is to disable the nav mesh agent when switched to manual control, and re-enable it for auto control. Any ideas why the nav mesh would slow down movement by MovePosition? In other weirdness, on a small section of my nav mesh, it doesn’t slow down. In the fast sections, the height is marginally higher (-0.083 vs -0.115). The box colliders on the ground are exactly the same, so I’m not sure why the heights are different.

I’d replace this:

_rigidbody.MovePosition(transform.position + movement);

with this:

_rigidbody.MovePosition(_rigidbody.position + movement);

Transform.position is subject to interpolation and such, so it may not be a good value to read the position from in this case.

Thanks! I tried, that but it didn’t fix it.

What finally worked was when generating nav mesh, check the box to generate the height mesh as well.