Qual é uma boa abordagem para uma marcha quadrúpede?

12

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.

Ian McMahon
fonte
Estou impressionado com o trabalho que você fez nos robôs. Estou precisando muito da sua ajuda para buscar algumas soluções valiosas. Eu tenho procurado soluções nos últimos 6 meses para resolver a cinemática do hexapod sem resultados positivos. Consegui encontrar equações para todos os ângulos servo com o corpo paralelo ao chão, mas incapaz de fazê-lo com o corpo inclinado para um lado. Aprecie se você seria capaz de ajudar :-) Atenciosamente Gary
Bem-vindo ao R.Se @ user2350 - por favor, não faça perguntas suplementares (não importa o quão relacionadas) como respostas
Andrew

Respostas:

5

A marcha que você tem não é realmente tão ruim, embora os pés não tenham tração suficiente, por isso é difícil ver como é bom.

Não tenho certeza da sua terminologia de andamentos dinamicamente estáveis. Como eu sempre entendi, a marcha no estilo de dois tripés é conhecida como marcha estaticamente estável, enquanto uma boa caminhada bípede como Petman usa uma marcha dinamicamente estável. Nunca ouvi falar de uma marcha dinamicamente instável. Isso soa mais como embriaguez.

Duas pernas no chão é provavelmente o limite mais baixo para esse projeto de robô. Geralmente, é mais fácil fazer isso funcionar com robôs humanóides altos, que levam muito tempo para cair. Robôs largos e planos precisam levantar e colocar os pés rapidamente, se não estiverem deixando muitos no chão.

Mas como desenvolver um gair para o seu robô. Em primeiro lugar, você deve decidir o que deseja alcançar com a marcha. Você está procurando velocidade máxima em uma superfície plana ou estabilidade máxima em superfícies irregulares?

Se seu objetivo é estabilidade, certamente acho que vale a pena ter o robô ciente de seu centro de gravidade em relação aos pés. Para ajudá-lo a saber disso, pode até valer a pena adicionar alguns sensores de força aos pés, para que possa calcular isso facilmente.

Se seu objetivo é apenas a velocidade máxima, eu simplesmente me concentraria em financiar um padrão de marcha ideal. Isso é mais difícil de fazer. Existem duas boas maneiras de abordá-lo:

  1. Modelagem. Crie um modelo de computador abrangente do robô, incluindo massa, rigidez, torque, etc. Use este modelo para entender completamente o comportamento dinâmico.

  2. Tentativa e erro. Você pode fazer isso da maneira mais difícil, programando em andamentos aleatórios, ajustando-os em um palpite e medindo seu desempenho. Tente fazê-lo andar para a frente e na diagonal. Ou você pode usar um algoritmo genético para ajudá-lo a procurar automaticamente andamentos melhores. A dificuldade de usar um AG é que você precisa ter uma maneira de medir automaticamente o desempenho da marcha.

Uma terceira maneira é transformar o robô em um cientista que realiza experimentos conscientes para validar hipóteses sobre si mesmo e descobrir como caminhar, como o robô de estrela-do-mar da Universidade de Cornell .

Rocketmagnet
fonte