Atividade #998
AbertaModelagem do sistema dinâmico do robô
Descrição
Definir como será o sistema dinâmico do robô para estimativa mais precisa da velocidade resultante do mesmo.
Dado o sistema x_{k+1} = A*x_{k} + B*u_{k} e z_{k} = C*x_{k}, definir qual o conteúdo do vetor de estados x, valores medidos z e das matrizes A, B e C.
Deseja-se saber com maior precisão o vetor velocidade do robô como um todo. Simples combinação das 4 velocidades das rodas não é suficiente por conta dos deslizamentos que podem aparecer durante o movimento.
Arquivos
Atualizado por Onias Castelo Branco há quase 6 anos
Fiz um esboço do que poderia ser o modelo a ser utilizado:
sendo x = [v_x; v_y; w; a_x; a_y; a_z], u = [v_x; v_y; w] e z = [v_x; v_y; w; a_x; a_y]
Para os valores medidos de z, v_x e v_y são obtidos pela equação reversa da omni, w obtido pelo girômetro e a_x e a_y pelo acelerômetro.
x_{k+1} = A*x_{k} + B*u_{k+1}
![x_ponto.png](x_ponto.png)
essas velocidades são as velocidades que vão ser passadas pro controlador PID, recebidas pela intel. Não soube relacionar os valores que ele recebe da intel para esta iteração com os valores anteriores de aceleração e velocidade que o robô já tem (os valores das primeiras linhas da matriz A)
Para a matriz C:
[z]=[C]*[x]
![z.png](z.png)
Os valores K2, K1 e K0 são valoresdas constantes multiplicativas para que os valores da IMU vão para m/s^2.
Estou com dúvida na formação da matriz A, já que a velocidade do próximo estado é pra depender tanto da minha velocidade atual e aceleração quanto o valor enviado pela intel. Como proceder?
Atualizado por Onias Castelo Branco há quase 6 anos
- Arquivo x_ponto.png x_ponto.png adicionado
- Arquivo z.png z.png adicionado
Atualizado por Guilherme Gonçalves há quase 6 anos
- Arquivo Modelagem_SSL.pdf Modelagem_SSL.pdf adicionado
Segue a primeira versão do modelo matemático da relação entre as velocidades: Modelagem_SSL.pdf .
Atualizado por Onias Castelo Branco há quase 6 anos
- Atribuído para alterado de Onias Castelo Branco para Guilherme Gonçalves
Atualizado por Guilherme Gonçalves há mais de 5 anos
- Atribuído para alterado de Guilherme Gonçalves para Onias Castelo Branco
Testei um caso simples de rotação no matlab e deu errado, mas ainda n tive tempo de debugar o código, amanhã procurarei com mais calma onde está o erro.
Atualizado por Guilherme Gonçalves há mais de 5 anos
Funcionou agora, testando pra casos simples. O código estava certo, eu que tinha colocado as entradas erradas.
Atualizado por Guilherme Gonçalves há mais de 5 anos
O código é:
V = [3;3;1];
B=[1;2;4];
A=cross(B,V);
A=A/norm(A);
theta=-acos(dot(B,V)/(norm(B)*norm(V)));
a=A(1);b=A(2);c=A(3);
M = [cos(theta)+(1-cos(theta))*a.^2 (1-cos(theta))*a*b+(sin(theta))*c (1-cos(theta))*a*c-(sin(theta))*b; (1-cos(theta))*a*b-(sin(theta))*c cos(theta)+(1-cos(theta))*b.^2 (1-cos(theta))*b*c+(sin(theta))*a;(1-cos(theta))*a*c+(sin(theta))*b (1-cos(theta))*b*c-(sin(theta))*a cos(theta)+(1-cos(theta))*c.^2];
C = M*B*(norm(V)/norm(B))
O resultado de C deve ser igual a V, para quaisquer a B e V que se escolha.
Atualizado por Guilherme Gonçalves há mais de 5 anos
O código da propagação do erro foi:
V=zeros(11);
V1=zeros(10);
for t= 1:10
V1 = 3*t;
V(t+1) = 3*t + 0.1*V(t);
end
Atualizado por Guilherme Gonçalves há mais de 5 anos
- Arquivo SSL_Dynamics.pdf SSL_Dynamics.pdf adicionado
Segue o o modelo proposto pelo Éder:
SSL_Dynamics.pdf
Atualizado por Luiz Renault Leite Rodrigues há mais de 5 anos
Quem é Éder? Colocar créditos completos.
Já fizeram alguma simulação com este modelo?
Colocar gráficos da resposta ao degrau.