Speed Control
Speed control is the process of varying the speed of a motor in response to a command input (such as a requested speed). This is the primary function of a Motor Controller. There are two variants of speed control: open loop and closed loop. In open loop, the command input is directly converted into a command for the motor (usually applied voltage). In closed loop, sensor feedback (usually an encoder or potentiometer) is used to measure the motor speed in real time and adjust the applied motor voltage such that the motor speed more closely follows the commanded speed.
Open Loop
During open loop speed control, the requested speed is directly converted into a voltage applied to the motor. This approach is the simplest and easiest to implement and works fine for non-precision use cases. The major drawback of the open loop method is there is no guarantee that the actual motor speed will match the commanded speed. The applied voltage will usually vary as the battery voltage drops, which means the motors have less torque and spin more slowly. External loads on the motors/wheels (such as loads on a robot's wheels when going up or downhill and when performing a pivot turn) will cause them to rotate more slowly.