Semana 26. Limando movimientos
Para esta semana, mis tareas fueron bastante variadas, teniendo un total de 7 tareas:
- Ajustar los tiempos de reproducción para que no haya imprevistos en la ejecución del movimiento
- Mejorar el editor de movimientos para no depender más del modelo URDF, ya que no cuadra con el modelo actual
- Levantar a NAO desde la posición de cúbito supino (boca arriba)
- Mejorar el ir recto (que no resbale, que es lo que ocurria al principio de la semana)
- Probar a caminar a distintas velocidades
- Juntar el intérprete de JSON con el de CSV
- Añadir un inclinómetro a NAO para detectar cómo cae
Juntando editores
Comencé por esta tarea porque me parecía la más rápida y sencilla, ya que simplemente era añadir un par de sentencias if en el último intérprete que tenía para poder diferencias entre formatos.
Cuando terminé, funcionaba perfectamente:
Cabe destacar que NAO cae al leer el csv porque aún no había ajustado los tiempos y a veces le pasaba que “se saltaba movimientos”
Añadiendo un inclinómetro a NAO
Para la siguiente tarea, estuve informándome un poco sobre los inclinómetros, y resulta que de esta tarea se encargan también los sensores IMU, por lo que decidí implementar este, ya que es el sensor que puede medir inclinación que está soportado tanto por gazebo cómo por ros, y su implementación no es muy complicada.
Para implementarlo, loque hice fue añadir lo siguiente al link del torso del robot, para que el imu quedase más o menos en el centro del mismo:
´´´xml
</link>
Y, con eso, nuestro nao ya dispone de un sensor IMU con el podemos ver su prientacion y velocidades en distintos ejes, mediante el topic /NAO/imu_sensor:
Mejorando el editor
Para esta tarea, lo que hice fue abrir de nuevo la demo que tiene gazebo de NAO, y guardé el mundo cóm oun fichero de mundo nuevo para poder editarlo, y quedarme así con las sliders y la funcionalidad del mundo, pero utilizando a nuestro GreenNao, así los movimientos concuerdarían con “el robot real”, en lugar de utilizar 2 modelos diferentes.
Dejo una demostración de este paso para mejorar el editor:
Después, me puse a hacer un programa en python con ROS para suscribirnos a todas articulaciones e ir guardando las posiciones cada vez que se pulse la tecla s (de Save, guardar en inglés). Pero no conseguí nada debido a que el plugin necesario para controlar con sliders las articulaciones tiene muchas restricciones, así que opté por simplemente hacer los movimeintos necesarios en el mundo de gazebo, y luego copiarlo en el eitor convencional, para así poder preguntar a mi tutor al respecto en la próxima reunión.
Levantar a NAO desde cúbito supino
Para esta tarea, lo que hice fue, usando el mundo nuevo, hacer que nao se diera la vuelta desde cúbito supino a cúbito prono, para así lanzar la secuencia de levantarse de esa postura cómodamente, pero tampoco lo conseguí porque el nuevo mundo tampoco era muy reactivo. Por lo que decidí seguir buscando el fichero .motion.
Como tampoco lo encontré, decidí seguir con el procedimeitno de siempre, cuando me di cuenta de que el modelo urdf se comportaba tan distinto al sdf porque casi todos los límites eran distintos en uno y otro, así que adapté el urdf para que tuviera los mismo límites y seguí intentándolo, y, aunque el resultado era más símil entre el nao del editor y nuestro GreenNao, aún había algo que fallaba, seguramente relacionado con las fuerzas, coa que me puse a investigar. La investigación está aún en curso.
Ajustar los tiempos de los movimientos
Para esto lo primero que hice fue hacer que el intérprete de movimeintos tuiviese en cuenta el tiempo en el caso de los ficheros csv, ya que en los json sí que lo tenía. Una vez hecho eso, fui editando poco a poco los tiempo de cada movimiento para hacer que se vieran bien. Esto está en proceso, por eso no pongo vídeo ni nada.