A porta computacional do robo é COM10
.
Este relatório aborda a odometria e as equações de movimento de um robô móvel com tração diferencial. O robô utilizado possui duas rodas motrizes e uma roda livre para apoio. Através do uso de encoders, foram calculados parâmetros fundamentais para o controle do robô, como a constante de conversão de pulsos para metros e a distância entre rodas.
O objetivo deste trabalho é implementar e validar a estimativa da pose do robô utilizando odometria e controlar a velocidade linear e angular das rodas por meio de um controlador PID+Feedforward. As principais etapas incluíram a medição da distância percorrida, o cálculo da distância entre rodas, e a implementação de um controle de linha para o robô seguir uma trajetória predefinida.
A cinemática do robô é descrita pelas seguintes equações diferenciais, que relacionam as velocidades linear e angular às coordenadas e à orientação do robô:
A velocidade linear e angular do robô em função das velocidades das rodas
Onde 𝑏 é a distância entre as rodas motrizes.
Para determinar a constante que relaciona os impulsos do encoder com a distância percorrida, foram realizados testes com diferentes valores de PWM nas rodas. A constante 𝑘 foi calculada da seguinte forma:
Tabela 1: Cálculo de 𝑘
PWM v1 | PWM v2 | Senc1 | Senc2 | Δx1(m) | k1 = Δx1/Senc1 (m/impulse) | k2 = Δx2/Senc2 (m/impulse) | k~ |
---|---|---|---|---|---|---|---|
30 | 30 | 1663 | 1916 | 0.096 | 5.7727e-5 | 5.0104e-5 | 5.3916e-5 |
10 | 10 | 805 | 971 | 0.047 | 5.8385e-5 | 4.8403e-5 | 5.3394e-5 |
20 | 20 | 1924 | 2235 | 0.105 | 5.4574e-5 | 4.6980e-5 | 5.0777e-5 |
A distância entre as rodas 𝑏 foi calculada fazendo o robô girar 360° (2π radianos) com PWM aplicado em direções opostas nas rodas (valores negativos e positivos). A distância foi obtida utilizando a fórmula:
Tabela 2: Cálculo de 𝑏
PWM v1 | PWM v2 | Senc1 | Senc2 | d1 (m) | d2 (m) | Angl(rad) | b (m) |
---|---|---|---|---|---|---|---|
30 | -30 | 6899 | -7849 | 0.36354 | 0.41361 | 0.1196 | |
10 | -10 | 6432 | -7831 | 0.33894 | 0.41266 | 0.1241 | |
20 | -20 | 6839 | -7964 | 0.36038 | 0.41967 | 0.1236 |
O ganho feedforward
O controlador PID utilizado possui a seguinte estrutura:
Os valores experimentais de
- Iniciou-se apenas com o ganho de feedforward
$K_f$ . - A velocidade de referência foi ajustada até que uma diferença mínima de velocidade entre as rodas fosse observada.
-
$K_p$ foi incrementado até que oscilações significativas ocorressem, reduzindo o valor final para 1/4 do valor obtido. -
$K_i$ foi ajustado para eliminar erros de regime permanente, observando a estabilidade do sistema.
Um controlador foi implementado para seguir uma linha utilizando os sensores IR do robô. Inicialmente, apenas os sensores das extremidades foram utilizados, e depois, o sensor central foi incorporado para seguir a borda da linha.
Procedimento para o Seguimento de Linha:
- Definiu-se um estado para seguir a linha (Estado 100), aumentando progressivamente a velocidade linear até o robô alcançar o limite de estabilidade.
- A transição entre diferentes partes da pista foi realizada via estados programados no arquivo
control.cpp
.
Este relatório apresentou a implementação e validação de um sistema de odometria e controle de um robô móvel com tração diferencial. A constante de conversão de pulsos para metros e a distância entre rodas foram calculadas experimentalmente, e o controlador PID+Feedforward foi ajustado para otimizar o desempenho do robô.