Slow down the mindstorms EV3 motor so target position is not overshot
There are two attributes in the python ev3dev Motor class called:

ramp_down_sp
ramp_up_sp


Link to documentation: http://ddemidov.github.io/ev3dev-lang-python/

ramp_down_sp Ramp Down SP: read/write

Writing sets the ramp down setpoint. Reading returns the current value. Units are in milliseconds. When set to a value > 0, the motor will ramp the power sent to the motor from 100% duty cycle down to 0 over the span of this setpoint when stopping the motor. If the starting duty cycle is less than 100%, the ramp time duration will be less than the full span of the setpoint.

ramp_up_sp Ramp Up SP: read/write

Writing sets the ramp up setpoint. Reading returns the current value. Units are in milliseconds. When set to a value > 0, the motor will ramp the power sent to the motor from 0 to 100% duty cycle over the span of this setpoint when starting the motor. If the maximum duty cycle is limited by duty_cycle_sp or speed regulation, the actual ramp time duration will be less than the setpoint.

Example:

from ev3.lego import Motor
b = Motor(port=Motor.PORT.B)
b.ramp_up_sp = 1000
b.ramp_down_sp = 1000
b.run_position_limited(position_sp = 0, speed_sp = 300)


What the ramp_down_sp does is when the motor is 1000 milliseconds away from its target (doing its own estimations) then ramp down the power from 100% to 0% over exactly 1000 milliseconds.

ramp_up does a similar thing, except ramps up the power from 0% to 100% over 1000 milliseconds.  

This helps avoid unnecessary strain on the motors for applications where building up momentum is important.