Semana 9. Arreglando errores y creando patrones fijos de movimiento
Las tareas principales de esta semana eran las siguientes:
- Modificar los ficheros de la semana anterior para que en lugar de tener sólo un fichero pudiésemos tener varios, y cargar el deseado en tiempo de ejecución
- Crear los patrones para caminar, levantarse de cúbito supino y levantarse de cúbito prono
Y, cómo taeras secundarias, tenía guardar enlaces visitados en el pasado y continuar leyendo el tfg que coomencé la semana anterior, cosas que hice de primeras.
Para las tareas principales, comencé por “hacer generales” mis programas anterior.
Para ello, lo que hice fue editar los código anteriores para añadir diferentes cosas, lo explicaré fichero a fichero:
Fichero para crear .json
Lo que hice fue bastante simple, ya que simplemente añadí un pequeño “save as” antes de lanzar la simulación que te pregunta por el nombre del fichero que quieres utilizar, asegurándose de que el fichero es un .json, luego, funciona cómo de costumbre, pero con el fichero especificado, que se crea si no existe, o se modifica si sí existe.
Fichero para ejecutar los movimientos del .json
Para este programa lo que hice fue, en lugar de cargar el único fichero que teníamos, hacer que el programa aceptase un argumento, el cual sería el nombre del fichero a replicar.
Resultado de estos cambios
Una vez aplicados estos cambios y los programas funcionando de manera más general, comencé con la segunda tarea: Crear patrones fijos de moviemiento para caminar y levantarse o de cúbito supino o de cúbito prono.
Caminar
Para poder caminar, primero tenía que analizar los movimientos que iba a hacer, los cuales pude ver analizando los míos propios a la hora de caminar y, además se aprecian mejor en este video ya que la anatomía de un humano no es la misma que la del Nao, por lo que veo mejor opción basarnos más en el vídeo.
Analizándolo, me di cuenta de que el “algoritmo de caminar” sigue los siguientes pasos en un bucle infinito:
- Mover la cadera hasta llevar el peso a la pierna que no se va a mover (en este paso la otra pierna quedará un poco suspendida en el aire)
- Doblar la rodilla para levantar la pierna por completo
- Estirar la rodilla en el aire
- Mover la cadera hasta que la pierna suspendida toque el suelo
- Doblar el tobillo y la rodilla hasta que la pierna quede totalmente apoyada en el suelo
- Repetir
Ahora, esto se traduciría en movimientos del Nao de la siguiente manera
- HipRoll(pierna_que_no_se_moverá)
- KneePitch(hasta_levantar_pierna)
- KneePitch(hasta_estirar_pierna)
- HipPitch(hasta_pierna_suelo)
- AnklePitch(hasta_pie_plano) + KneePitch(hasta_apoyar_bien)
- Repetir
Una vez conseguido este “algoritmo”, podemos probarlo en el creador de movimientos de pybullet creado la semana anterior:
Levantarse de cúbito supino
Para este movimiento, hice lo mismo que en el anterior pero con este otro video
Levantarse de cúbito prono
Para este movimiento, hice lo mismo que en los anteriores pero con este último video