Projeto

Geral

Perfil

Ações

Atividade #998

Aberta

Modelagem do sistema dinâmico do robô

Adicionado por Onias Castelo Branco mais de 5 anos atrás. Atualizado aproximadamente 5 anos atrás.

Situação:
Em andamento
Prioridade:
Normal
Atribuído para:
Início:
15/02/2019
Data prevista:
Tempo gasto:

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

z.png (11,8 KB) z.png Onias Castelo Branco, 15/02/2019 22:18 h
x_ponto.png (14 KB) x_ponto.png Onias Castelo Branco, 15/02/2019 22:18 h
Modelagem_SSL.pdf (91 KB) Modelagem_SSL.pdf Guilherme Gonçalves, 21/03/2019 01:19 h
SSL_Dynamics.pdf (90,7 KB) SSL_Dynamics.pdf Guilherme Gonçalves, 03/05/2019 02:12 h
Ações #1

Atualizado por Onias Castelo Brancomais de 5 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 Brancomais de 5 anos

Ações #3

Atualizado por Guilherme Gonçalvesmais de 5 anos

Segue a primeira versão do modelo matemático da relação entre as velocidades: Modelagem_SSL.pdf .

Ações #4

Atualizado por Onias Castelo Brancomais de 5 anos

  • Atribuído para alterado de Onias Castelo Branco para Guilherme Gonçalves
Ações #5

Atualizado por Guilherme Gonçalvesmais 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.

Ações #6

Atualizado por Guilherme Gonçalvesmais de 5 anos

Funcionou agora, testando pra casos simples. O código estava certo, eu que tinha colocado as entradas erradas.

Ações #7

Atualizado por Guilherme Gonçalvesmais 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.

Ações #8

Atualizado por Guilherme Gonçalvesaproximadamente 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

Ações #9

Atualizado por Guilherme Gonçalvesaproximadamente 5 anos

Segue o o modelo proposto pelo Éder:
SSL_Dynamics.pdf

Ações #10

Atualizado por Luiz Renault Leite Rodriguesaproximadamente 5 anos

Quem é Éder? Colocar créditos completos.

Já fizeram alguma simulação com este modelo?

Colocar gráficos da resposta ao degrau.

Ações

Exportar para Atom PDF