- BasicMotor1: en este ejercicio hicimos uso de los métodos forward() y stop() del motor, y del método waitForPress() de los botones. No hubo mayor complicación para realizarlo, y el resultado se puede ver en el siguiente vídeo.
- BasicMotor2: para este ejercicio usamos el método rotate() del motor y seguimos usando el método waitForPress() de los bonotes para controlar la siguiente rotación de motor, de la misma manera que en el ejercicio anterior. El resultado en el siguiente vídeo.
- BasicMotor3: en este caso al usar el método rotateTo() del motor conseguimos que el motor se desplace para orientarse según su odometría interna. Sucesivas llamadas a rotateTo() con el mismo argumento no tienen efecto, puesto que el motor ya esta orientado a los grados indicados, como puede verse en el siguiente vídeo.
Para obtener el mismo resultado que en el apartado anterior, es necesario que la odometría interna del motor sea puesta a cero antes de efectuar la rotación, con la ayuda del método resetTachoCount(). De esta manera conseguimos que el motor rote 45º respecto de donde se encuentra. El resultado de este ejercicio es el mismo que el del apartado anterior.
Visualización de la odometría del motor:
Lo primero que se hizo en este apartado fue resetear la odometría del motor para ajustarla a la posición del brazo acoplado a él, para tener una mejor visualización de la coordenadas. Gracias al método getTachoCount() obtenemos en cada momento la odometría del brazo según lo vamos moviendo. El último punto que se trato fue conseguir que la visualización de la odometría en el LCD trabajara en un rango de [0º,360º), para ello hubo que hacer ciertas conversiones de módulo a la odometría obtenida en cada momento. En el siguiente vídeo se muestra el valor de la odometría según se varía el ángulo del brazo.
Cuadrado de calibración de movimiento:
La realización del recorrido para hacer un cuadrado es algo sencillo, 4 rectas y 4 giros. Lo interesante de este ejercicio fue comprobar que a pesar de alinear a RJV11 en el punto de salida con la mayor precisión posible, el punto final del movimiento varía en cada una de las repeticiones del experimento, como se puede apreciar en la siguientes fotos.
Alineando lo mejor posible a RJV11 |
El punto 0 representa donde debería haber acabado el robot. Del 1 al 7 representan el punto donde acabó RJV11 en cada una de las siguiente 7 repeticiones del ejercicio. |
Por otra parte, el cuadrado descrito por RJV11 dista mucho de ser perfecto.
Esto es debido en parte a que a pesar de introducir las medidas del diámetro y separación de ruedas correctamente, estas se ven alteradas por el peso del robot y por las sacudidas de su estructura debido al movimiento. Para intentar minimizar este efecto, a la hora de hacer el montaje de RJV11 intentamos seguir ciertas directrices: minimizar el peso del montaje, concentrar la mayor parte del peso sobre las ruedas tractoras, conseguir una estructura estable. También a la hora de efectuar los movimiento se tuvo en cuenta dejar cierto tiempo de margen para que la estructura del robot quedase en equilibrio antes de efectuar otro movimiento.
También las irregularidades, desniveles y distintos materiales del terreno tienen efecto sobre la trayectoria de RJV11, por ello se decidió utilizar una velocidad prudente para la realización del ejercicio.
Por otra parte también hay que tener en cuenta el error sitemático de los encoders de los motores.
Visualización de la trayectoria:
Usamos como base el programa del cuadrado para este apartado. No fue especialmente dificultoso una vez nos dimos cuenta de que hay que pasar los grados a radianes. Al igual que en el ejercicio de visualizar la odometría, trabajamos en un rango de [0º,360º). A continuación se puede ver un video del LCD mientras se hace el recorrido.
Una de las cosas que nos dimos cuenta en este punto, es que la odometría interna de los motores tampoco es perfecta, puesto que en condiciones iguales, la ejecución del mismo programa nos proporciona salidas distintas por el LCD. a continuación se pueden ver cuatro capturas de cuatro ejecuciones distintas del mismo programa con salidas distintas.
Cálculo de la matriz de covarianza:
Para el cálculo de la matriz se repitió 10 veces desde el mismo punto, dirección y sentido, un movimiento de 1 metro. Marcando en cada una de las repeticiones donde acabó el movimiento, y comprobando al igual que en el ejercicio del cuadrado, que difícilmente el movimiento acaba donde esta previsto, ni en el mismo sitio. A continuación una imagen donde se puede apreciar donde debería haber acabado el movimiento teóricamente, y donde lo hizo en realidad.
El teórico punto final es el centro de coordenadas. Y cada uno de los números se corresponde con cada una de las repeticiones del movimiento. |
Para calcular la matriz de covarianza, medimos cada uno de los puntos respecto del origen punto de inicio del movimiento, y con ayuda de un programa en java especificamente diseñado para ello, la obtenemos. Los valores resultantes son los siguientes:
[0.006025 , 0.033375]
[0.033375 , 1.136125]
[0.033375 , 1.136125]
Próxima entrega: Práctica 2 - Obteniendo información sensorial
0 comentarios:
Publicar un comentario