Eu tenho um pequeno quadrúpede com três graus de liberdade, nas quais tenho trabalhado: 3DOF Mini Quadruped .
Meu código original era um servo controlador simples no arduino e o código Scala que enviava comandos servo pelo fio. Eu fiz toda a lógica da cinemática inversa e da marcha em Scala, e consegui andar: 3d da primeira marcha quadrúpede .
Minha lógica de marcha em Scala era um tanto ingênua; dependia das pernas estarem na posição correta no início (um lado estendido para frente e para trás, o outro lado um em direção ao outro). A lógica era simplesmente traduzir todos os quatro pés para trás em 1 mm ao longo de y, e sempre que um ângulo coxa se tornar excessivamente para trás, pare e execute uma pequena rotina em que esse pé é levantado 10 mm em z, depois traduzido para a frente 60 mm ao longo de y e recuado. Ingênuo, mas eficaz.
Agora, reescrevi meu código IK no arduino C e estou tentando decidir como avançar com a dinâmica do Gait. Foi difícil encontrar recursos bons e fáceis de entender sobre o andar. Eu tenho algum conhecimento sobre a diferença entre marcha dinamicamente estável (como marcha lenta), onde o corpo é um tripé estável o tempo todo e marcha dinamicamente instável (caminhada, trote), onde duas pernas estão fora do chão por vez e o corpo está essencialmente caindo para frente na perna que avança.
Pensei em máquinas de estado e tentei calcular se o centro do corpo se encaixa em um triângulo feito pelos pés restantes para decidir qual pé era seguro de levantar, mas não tenho certeza se vale a pena explorar essas idéias.
Sei que essa é uma pergunta excessivamente geral, mas estou interessado em ver como outras pessoas atacaram esse problema e sobre tudo o que consegui encontrar são trabalhos de pesquisa.