Tengo un pequeño cuadrúpedo con tres patas de libertad en las que he estado trabajando: 3DOF Mini cuadrúpedo .
Mi código original era un servocontrolador simple en el arduino, y un código Scala que enviaba comandos servo por cable. Hice toda la lógica de la cinemática inversa y la marcha en Scala, y conseguí que caminara: 3d de la primera marcha cuadrúpeda .
Mi lógica de marcha en Scala era algo ingenua; dependía de que las piernas estuvieran en la posición correcta al principio (un lado extendido hacia adelante y hacia atrás, el otro lado hacia el otro). La lógica era simplemente trasladar los cuatro pies hacia atrás en 1 mm a lo largo de y, y cada vez que un ángulo coxa se volviera excesivamente hacia atrás, detenerse y realizar una pequeña rutina donde ese pie se levanta 10 mm en z, luego se traslada hacia adelante 60 mm a lo largo de y, y se vuelve a bajar. Ingenuo, pero efectivo.
Ahora, he reescrito mi código IK en arduino C, y estoy tratando de decidir cómo avanzar con la dinámica de Gait. He tenido dificultades para encontrar recursos buenos y fáciles de entender sobre los modos de andar. Tengo cierto conocimiento acerca de la diferencia entre los andar dinámicamente estables (como los andares de arrastre) donde el cuerpo es un trípode estable en todo momento y los andar dinámicamente inestables (caminar, trotar), donde dos piernas están levantadas del suelo a la vez y el cuerpo esencialmente cae hacia adelante en la pierna que avanza.
Tenía algunas ideas sobre las máquinas de estado y tratar de calcular si el centro del cuerpo cae dentro de un triángulo formado por los pies restantes para decidir qué pie era seguro levantar, pero no estoy seguro de si vale la pena explorar estas ideas.
Sé que esta es una pregunta demasiado general, pero me interesa ver cómo otras personas han atacado este problema, y todo lo que he podido encontrar son trabajos de investigación.