Una respuesta: sistemas de circuito cerrado y / o fusiones de sensores
No puedes simplemente enviar los comandos correctos al motor y esperar que el robot actúe exactamente como se espera. Piense en una diferencia muy pequeña en el par producido por sus dos motores que recibieron dos señales PWM idénticas (debido a las tolerancias de fabricación del motor). Uno irá un poco más rápido que el otro y el robot correrá a lo largo de un círculo (muy grande, pero todavía un círculo) en lugar de una línea recta.
La respuesta a este problema es el control de bucle cerrado. Tus motores, o tu rueda, tendrán codificadores. Y su sistema de control recibirá las señales del codificador y reaccionará de tal manera que se asegure de que sus ruedas están haciendo exactamente lo que espera que hagan.
Pero en el caso de un robot autónomo, esto no es suficiente. Piense en tener una rueda que sea ligeramente más grande que la otra, debido al desgaste, o simplemente debido a las tolerancias de fabricación. O piensa en una rueda que se desliza un poco en el suelo. En este caso ya no sabes a ciencia cierta dónde te encuentras. Este método se llama odometría o cómputo muerto. Para resolver esto, debe usar sensores que agreguen conocimiento sobre su entorno a su sistema. (Visión, sensor de proximidad, parachoques, magnetómetro, giroscopios, etc). Luego, se utilizan algoritmos avanzados para utilizar lo mejor de cada sensor en cada paso de tiempo.