Há algum problema com isso?
O principal problema é que, embora sua solução proposta corrija instantaneamente uma incompatibilidade entre o desempenho dos motores, ela não corrigirá erros acumulados, muito menos erros mais complexos em posições como o erro Abbe (veja mais adiante).
Qual é uma abordagem melhor?
Você pode fazer várias coisas, dependendo da sua tolerância a erros e de quanto esforço você deseja colocar para corrigi-los.
O primeiro passo seria configurar um par de loops PID, um para cada roda, dando a ambos a mesma posição de demanda. Como sugeri na minha resposta a uma pergunta semelhante , se você mantiver as duas rodas dentro de um erro muito apertado, limite de onde você as pede, levará algum tempo para acumular um erro suficiente para causar um desvio perceptível.
Também será muito mais fácil ajustar dois loops PID no nível do motor, nominalmente independentes, do que ajustar um único sistema combinado complexo e interdependente. Para suportar qualquer alteração no funcionamento do controle de nível superior, você realmente precisa que cada motor se comporte da mesma forma possível com o outro motor o maior tempo possível, e isso realmente requer laços servo separados.
Entretanto, existem várias complicações adicionais, e isso depende da precisão necessária e de quanto esforço você está preparado para corrigir para eles e para qual solução você procura. Pode ser que o Dead Reckoning seja suficiente ou talvez você precise adicionar a determinação de posição Relativa ou Absoluta ao seu robô.
Um problema é que, mesmo que as rodas esquerda e direita movam 1000 contagens de codificador, você ainda pode acabar em uma posição diferente em duas execuções diferentes.
Por exemplo, suponha que você tenha um erro máximo seguinte de 10 contagens de codificador e seus motores estejam funcionando a uma velocidade de, por exemplo, 10 contagens de codificador por iteração de loop PID. Seu motor esquerdo pode se mover 5,10,10,10 ... 10,5 enquanto o motor direito pode ter um perfil de 4,11,10,10 ... 10,5 e até mesmo essa ligeira diferença na aceleração no início A movimentação pode fazer com que o robô parta levemente na direção errada. Não apenas isso, mas quanto mais você avança nessa direção, maior o erro se tornará em termos absolutos. É disso que estamos falando quando falamos de erro do Abbe , e sem um modelo cinemático complexo ou algum tipo de referência externa, você nunca será capaz de corrigi-lo.
Para obter mais informações, consulte minha resposta a uma pergunta semelhante, mas não totalmente duplicada: Como posso usar a biblioteca PID do Arduino para dirigir um robô em uma linha reta?
e minha resposta para a otimização de seguidor de linha também relacionada