Localización de robot
Enviado por fidelw • 3 de Enero de 2024 • Ensayo • 2.448 Palabras (10 Páginas) • 58 Visitas
LOCALIZACIÓN DE ROBOT
Localización es la habilidad de una máquina de ubicarse por sí misma en el espacio, se considera un robot totalmente perdido, sin tener idea donde se encuentra en relación a su entorno, ¿cómo puede ubicarse el robot dentro del espacio?, con esta premisa se inició con desarrollo del curso con la programación en Python Versión 3.4.0 y el apoyo de www.udacity.com/wiki/cs373/unit-1-spanish (CS373 Unidad 1 - El Problema de la Localización) posterior a la programación se considera también la implementación y las pruebas para comprobar el funcionamiento.
CONTENIDO
- INTRODUCCION
- NUCLEO DEL INFORME
- RESULTADOS Y CONCLUSIONES
- RECOMENDACIONES
- AGRADECIMIENTOS
- LISTA DE REFERENCIAS
- ANEXOS
DESARROLLO
El desarrollo del programa localizador reducirá el margen de error considerablemente, según nos explica el desarrollo del curso de Udacity, “comparado con el de un dispositivo GPS, cuyo margen de error puede llegar a ser de hasta diez metros”. Imaginando un robot que se encuentra en un mundo unidimensional, en algún lugar a lo largo de una línea recta, sin tener idea en que punto de ese mundo se encuentra.
El tipo de localización estudiado se conoce como Método de Montecarlo.
[pic 1]
Ejemplo gráfico
El desarrollo de curso en Udacity es como sigue:
Lesson 1: Localization
- Localization
- Total Probability
- Uniform Distribution
- Probability After Sense
- Normalize Distribution
- Phit and Pmiss
- Sum of Probabilities
- Sense Function
- Exact Motion
- Move Function
- Bayes Rule
- Theorem of Total Probability
Ahora bien se procederá explicar el desarrollo de la aplicación del curso en un entorno de LINUX y Windows, es decir con RaspberryPI y Arduino
Desarrollo con RaspberryPI.
- Pasos para iniciar con el RaspberryPI
Primero.- Adquirimos el RaspberryPI Modelo B, luego se adquirimos por separado una tarjeta SD Card con 2Gb como minimo, también será necesario un monitor con puerto HDMI con su respectivo cable, para visualizar el entorno LINUX Raspbian “wheezy”, teclado, mouse , cable de red para acceder a internet desde RaspberryPI y Hub USB.
Segundo.- Descargamos de internet la imagen de disco del sistema operativo Raspbian “wheezy” (Debían) Versión oficial de la fundación RaspberryPI. org. Luego grabarla a la SD Card, para esto usamos el Win32DiskImager.
Tercero.- Una vez grabada la imagen en el SD Card, procedemos a insertarla en el RaspberryPI B y conectamos todos sus puertos (Fuente de alimentación, Hub USB, Teclado, Mouse, Monitor cable de red).
Cuarto.- Al encenderlo, el equipo nos pedirá un login, que por defecto es “pi” y un password que por defecto será “RaspberryPI”.
Quinto.- Para acceder a la pantalla principal, ejecutamos el comando “start x”.
Hasta este punto ya nos encontramos en la pantalla principal, ahora continuaremos con las actualizaciones.
Nota: Si no se cuenta con el monitor y puerto HMI, podemos acceder desde una PC mediante el SSH.
Actualizaciones del sistema
Para continuar con las actualizaciones, es requisito indispensable el acceso a internet y procederemos del siguiente modo.
Primero.- Accedemos al terminal del sistema (LX Terminal), luego ingresamos “sudo raspi-config”,
[pic 2]
enter.
Segundo.- En la ventana de confiration tool (raspi-config), configuraremos básicamente 02 opciones, el “About raspi –config y Expand Filesystem”, presionamos enter e ingresamos “sudo reboot” para reiniciar el sistema operativo.
Tercero.- Volvemos a acceder al terminal del sistema (LX Terminal), luego ingresamos “sudo raspi-config”, enter; Nuevamente ingresamos “sudo apt-get update” enter.
Cuarto.- Ingresamos “sudo apt-get upgrade”, enter.
Quinto.- Ingresamos “sudo install pyhton3-rev”, enter.
Sexto.- ingresamos “nano X1.py”, enter.
[pic 3]
Estas actualizaciones son muy importantes para el sistema, cabe indicar que estos pasos son un resumen básico de toda la información disponible en la red y demás tutoriales.
[pic 4]
Programación:
A continuación se detalla la programación efectuada en Python y Arduino con la explicación de los códigos por línea de programa, acompañada con la explicación en video adjunta al presente informe.
Programación en python:
import serial #importamos el puerto serial
import time #importamos para retardos y delay
##:DECLARACION DE VARIABLES::::::::::::::::::::##
p = [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,0.1,0.1 ] #DISTRIBUCION DE PESOS
motions = [1, 1] #MOVIMIENTO DERECHA O LA IZQUIERA
world = ['puerta','pared', 'puerta', 'puerta','puerta','pared', 'puerta','pared','puerta','puerta']
measurements = []# son los datos leídos del Arduino
#TOMAMOS COMO PRIORIDAD EL PUERTAS
pHit = 0.5
pMiss = 0.3
#AGREGAMOS PROBABILIDAD EXACTA
pExact = 0.8
#PROBABILIDAD DE POSICION ANTERIOR Y POSTERIOR
pOvershoot = 0.1
pUndershoot = 0.1
####:::::::::::::::::::::::::::::::: FUNCIONES ::::::::::::::::::::::::::::::::::##
def move(p, U): #FUNCION MOVIMIENTO
#INTRODUCIMOS VARIABLES
q= []
for i in range(len(p)):
s = pExact * p[(i-U) % len(p)]
s = s + pOvershoot * p[(i-U-1) % len(p)]
s = s + pUndershoot * p[(i-U+1) % len(p)]
q.append(s)
return q
def sense(p, Z): #FUNCION SENSADO z= MEASUREMENTS
...