Control básico del motor:
-
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]
Próxima entrega:
Práctica 2 - Obteniendo información sensorial