sábado, 9 de maio de 2020

Robô Pêndulo Invertido: Dinâmica Não Linear

Olá a todos! Dando sequência nas postagens do robô pêndulo invertido, vou tratar da dinâmica não linear desse robô nessa postagem. Nas próximas, será feita a linearização do modelo e a inclusão da dinâmica do motor CC que será utilizado. Os detalhes da dedução desse modelo serão omitidos desse post mas estarão disponíveis no livro, que eu devo disponibilizar algum dia (quem sabe, na metade do ano que vem).

A dedução das equações de dinâmica foi feita a partir da mecânica de Lagrange e foi feita baseada no livro Advanced Control of Wheeled Inverted Pendulum Systems, do Z. Li. Porém eu analisei cuidadosamente a dedução apresentada naquele livro e acredito que existam erros e imprecisões, principalmente na parte de linearização. Por isso, eu sigo uma dedução diferente da dinâmica do robô. Vale comentar que existem outras técnicas para dedução da dinâmica desse robô, mas a que eu mais gosto, pela simplicidade, é a mecânica de Lagrange.

Indo direto ao ponto, as equações de dinâmica não linear desse robô representadas de uma forma matricial são

$$ \small \begin{bmatrix} \dot{v} \\ \ddot{\alpha} \\ \ddot{\theta} \end{bmatrix} = \begin{bmatrix} \frac{I_{\alpha}}{M_{eq}I_{\alpha}-m^2l^2cos^2(\alpha)} & \frac{-mlcos(\alpha)}{M_{eq}I_{\alpha}-m^2l^2cos^2(\alpha)} & 0 \\ \frac{-mlcos(\alpha)}{M_{eq}I_{\alpha}-m^2l^2cos^2(\alpha)} & \frac{M_{eq}}{M_{eq}I_{\alpha}-m^2l^2cos^2(\alpha)} & 0 \\ 0 & 0 & I_{\theta}^{-1} \end{bmatrix} \begin{bmatrix} ml\dot{\alpha}^2sen(\alpha)+(\tau_d+\tau_e)\frac{M_{robo}r}{2I_{\omega}+M_{robo}r^2} \\ mglsen(\alpha) \\ d(\tau_d-\tau_e)\frac{I_{\theta}r}{2d^2I_{\omega}+I_{\theta}r^2} \end{bmatrix} $$

Lembrando que todos os símbolos utilizados podem ser encontrados na postagem Lista de Símbolos, com link aqui!

Como é possível ver, no modelo apresentado, as entradas são os torques dos motores (\(\tau_d\) e \(\tau_e\)). Nas próximas postagens esse modelo será modificado para incluir a dinâmica do motor CC, onde o torque será uma consequência da verdadeira variável de entrada do nosso robô, a tensão aplicada na armadura do motor.

E, para finalizar, uma foto da montagem que fiz até agora.


Instalei os motores na carcaça. Esses motores tem encoder integrado e, devido a redução, há bastante pulsos de encoder por volta da roda. Ainda tenho que determinar exatamente quantos pulsos por volta existem, mas farei isso futuramente.

Por hoje era isso, até a próxima!

sábado, 11 de abril de 2020

Robô Pêndulo Invertido: Lista de Símbolos

Olá a todos!

Eu iria começar a falar do robô pêndulo invertido pela sua dinâmica, ou seja, pelas equações que governam o comportamento do robô. Porém eu percebi que eu teria que introduzir uma série de símbolos utilizados para representar parâmetros desse robô. Por esse motivo, eu decidi compilar todos os símbolos utilizados em um único post, para consulta.

Símbolos que são parâmetros do robô e do ambiente.

\(M\) - Massa da plataforma do eixo das rodas [kg]; \(M_w\) - Massa de cada uma das rodas [kg]; \(m\) - Massa do pêndulo [kg];
\(l\) - Comprimento do pêndulo [m];
\(r\) - Raio da roda [m];
\(d\) - Distância entre cada roda e o centro da plataforma [m];
\(v\) - Velocidade de translação da plataforma [m];
\(\dot{v}\) - Aceleração de translação da plataforma [m/s^2];
\(g\) - Aceleração gravitacional [m/s^2];
\(\alpha\) - Ângulos de inclinação do pêndulo [rad];
\(\theta\) - Ângulo entre a frente do robô e um eixo de referência [rad];
\(\dot{\alpha}\) - Velocidade angular de inclinação do pêndulo [rad/s];
\(\dot{\theta}\) - Velocidade ângular da plataforma em torno do eixo vertical [rad/s];
\(\ddot{\theta}\) - Aceleração ângular da plataforma em torno do eixo vertical [rad/s^2];
\(\ddot{\alpha}\) - Aceleração angular de inclinação do pêndulo [rad/s^2];
\(I_M\) - Momento de inércia da plataforma em torno do eixo das rodas [kgm^2];
\(I_w\) - Momento de inércia da roda em torno de seu eixo [kgm^2];
\(I_p\) - Momento da plataforma e pêndulo em torno do eixo vertical [kgm^2];
\(\tau_r\) - Torque gerado pelo motor direito [Nm];
\(\tau_l\) - Torque gerado pelo motor esquerdo [Nm];

Símbolos que são compilação de outros parâmetros do robô.

\(M_{robo}\) - Massa total do robô, equivalente à \((M+2M_w+m)\) [kg];
\(M_{eq}\) - Massa equivalente à \((M_{robo} + 2I_w/r^2)\) [kg];
\(I_{\alpha}\)  - Momento de inércia equivalente à \((I_M+ml^2)\) [kgm^2];
\(I_{\theta}\) - Momento de inércia equivalente à \((I_p+2M_wd^2+2I_wd^2/r^2)\) [kgm^2].

Por hoje era isso. No próximo post vamos usar essa simbologia para começar a falar do robô pêndulo invertido em si. Até a próxima.

Robô Pêndulo Invertido: Introdução

Bem vindos a 2020! Que apesar de ter começado há bastante tempo (já estamos em abril!) ainda não começou direito por causa do Coronavírus.

Nesta série de posts eu quero trazer trechos do livro que estou escrevendo sobre Robô Pêndulo Invertido. Sabe? Aquele que se equilibra sobre duas rodas. Eu sempre quis montá-lo. Mas mais do que isso! Eu sempre quis ter um bom entendimento da física que governa seu comportamento. E foi essa vontade que me motivou a começar a escrever um livro sobre o assunto, sendo este livro um lugar onde eu compilo tudo que vou pesquisando sobre esse robô. Mas como esse é um projeto de longo prazo (nem sei se o terminarei, dada a correria do mestrado), vou publicando aqui algum material, com uma linguagem mais informal.

Até a próxima!