Let's say I want a robot to run at a certain speed. I have one motor attached to each robot rear wheel. The feedback value to the controller comes from an encoder, which outputs pulses per time unit, i.e. the measured variable is speed of the robot.
Something has been bugging me, so please correct me if I am wrong: I don't think it is possible to solely use a P-controller for velocity control. I seems to me that it is impossible to reach the desired target speed if your output signal from the controller (i.e. a velocity value) is proportional to the error value. Then when the error goes towards zero (which is what the P-controller strives for) the output signal (velocity) would go towards zero. But then how can you maintain a non-zero speed? Instead you will probably reach an equilibrium point were the robot velocity control is in a steady-state error. Is this reasoning correct or wrong?