Lerp effects with maximum velocity for rigid body

Hello Unity noob here,

I had a question about moving a rigid body for a top-down RTS space game. In the game, the player controls a spaceship (attached to a rigid body) and can click on the map to move it to that position. I ideally want the ship to accelerate up to a maximum velocity and when it gets close to the target, decelerate. I really like the acceleration/deceleration effect that Lerp gives but it does not cap the velocity (i.e. the farther the distance the faster the maximum velocity on that journey). I understand that this is by design and thus I’m looking for ways to either modify Lerp or create an equivalent function which mirrors the acceleration/deceleration but caps the velocity. I have tried MoveTowards and AddForce methods but was dissatisfied with both (the former is too jerky and AddForce is not accurate enough to stop the ship on the target). Any suggestions? Thanks in advance!

Below is what I have so far in my FixedUpdate(). “velocity” is my maximum velocity but obviously the way I used it doesn’t work in this context.

    void FixedUpdate()
    {
        Vector2 player_position = new Vector2(player_body.position.x, player_body.position.y);
        if (rotating)
        {
            float angle = Mathf.Atan2(current_direction.y, current_direction.x) * Mathf.Rad2Deg;
            player_body.rotation = Mathf.LerpAngle(player_body.rotation, Quaternion.AngleAxis(angle - 90, Vector3.forward).eulerAngles.z, angular_velocity * Time.fixedDeltaTime);
            rotating = Mathf.Abs(player_body.rotation - angle) < 0.001f ? false : true;
        }
        if (moving)
        {
            player_body.MovePosition(Vector2.Lerp(player_position, current_destination, Time.fixedDeltaTime * velocity));
            moving = Vector3.Distance(transform.position, current_destination) <= 0.001f ? false : true;
        }
    }

I mean if you just want to prevent it going over max, you could just clamp it so it wont go over max, check mathf.clamp might be what you are looking for?

Thanks for the suggestion! However, I am unsure as to where I should insert the Mathf.Clamp into the above code. I tried inserting it into Update and right after the MovePosition call to no avail. Any help is greatly appreciated! The following snippet is my method for velocity clamping.

            player_body.velocity = Mathf.Clamp(player_body.velocity.magnitude, 0f, velocity) * player_body.velocity.normalized;