User Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
roboticamovil [2019/05/28 19:15]
jpirmz
roboticamovil [2020/03/09 21:58] (current)
jpirmz
Line 1: Line 1:
 ==== Robótica Móvil === ==== Robótica Móvil ===
  
-[[https://​www.dropbox.com/​s/​hejkjy0mpgf8gb5/​RoboticaMovilMIE.pdf?​dl=0|Temario y criterios de evaluación (Maestría)]]+=== Tarea 1 ===
  
-[[https://www.dropbox.com/​s/​1je2w0u2zvfd528/​RoboticaMovil.pdf?​dl=0|Temario y criterios de evaluación (Licenciatura)]]+Entrega19/mar/2020
  
-=== Proyecto de Implementación ​(Licenciatura=== +Código en Python para que el robot Pioneer 3dx dentro del simulador CoppeliaSim siga una trayectoria definida por puntos ​(x,yalmacenados en un 
-Entrega: 7 de junio de 201914:00hrs Laboratorio de Electrónica DICIS. +archivo ​de textoun punto por línea, separando X e Y por un espacio.
-Enlace para entregar el reporte en formato PDF: https://​www.dropbox.com/​request/​MyNP9eopgbSMeqFb6ZP4 ​+
  
-== Descripción del proyecto ==+Ejemplo de archivo
  
-Básico: Navegación reactiva con la combinación de dos algoritmos:+<​code>​ 
 +0 0 
 +1 2.3 
 +2 4.5 
 +3 5 
 +</​code>​
  
-  * Evasión de obstáculos utilizando sensor(es) ultrasónico(s) 
-  * Seguimiento de fuente de luz utilizando la diferencia de intensidades en 2 sensores 
  
-Avanzado: ”Dead reckoning” ​creación ​de mapa (rejilla ​de ocupación)+Se debe generar una trayectoria con b-splines, calculando que el tiempo total de ejecución dependa de la distancia entre el punto inicial ​el final de la trayectoria ​(permitir 5 segundos por metro entre el inicio y el fin de la trayectoria)
 +Adicionalmente,​ el robot debe intentar esquivar obstáculos utilizando sus sensores ultrasónicos en caso de no poder ejecutar limpiamente la trayectoria.
  
-Visualización ​de la rejilla de ocupación+[[https://​www.dropbox.com/​sh/​tmdjki8iqnjascj/​AABaaegpZtHdmbvIjoiSFM9Ba?​dl=0|Convocatoria Concurso ​de Robótica UAQ]]
  
-=== Proyecto de Simulación (Licenciatura) === +[[https://​www.dropbox.com/​s/sewlfcrbaowe11w/​RoboticaMovil.pdf?​dl=0|Temario y criterios de evaluación (Licenciatura)]]
-Entrega: 17 de mayo de 2019. +
-Enviar un archivo PDF con el reporte, y un comprimido con todo el código fuente y archivos auxiliares necesarios a través del enlace ​https://​www.dropbox.com/​request/A7fhsfgv4VJQHtrLT3Mz+
  
-/* +=== AvisoNo habrá sesión presencial ​el 30/01/2020 ===
-=== Tarea 1 (Licenciatura) === +
-Entrega12 de marzo antes de las 23:59.  +
-  * Implementación del algoritmo “bug” para buscar fuentes, con el robot Pioneer p3dx. +
-  * La ubicación de la fuente se definirá en las variables xf, yf dentro de su código. +
-  * Utilizar los sensores ultrasónicos para rodear los obstáculos en el camino del robot. +
-  * Un programa en Python por equipo. +
-  * El programa será probado por el profesor en un escenario de 15x15m2 en V-REP, sin mostrárselo a los estudiantes. +
-Enviar un archivo .py por equipo, con el nombre NombreequipoTarea1.py a [[https://www.dropbox.com/​request/​IvqHqt1RYEsyCKE9DAZd|este enlace]]. +
-*/ +
-=== Tarea 1 (Licenciatura) ===  +
-[[https://​www.dropbox.com/​s/​719l1scqvh7zo4g/​LicTarea1.xlsx?​dl=0|Calificaciones por equipo]] +
-(Es un libro de Excel, una calificación por cada hoja o pestaña)+
  
-=== Tarea 2 (Licenciatura) ===  +Ejercicio para el 30/01modificar el código de trajectory.m para obtener el movimiento de dos marcos de referencia.
-[[https://www.dropbox.com/​s/​5u9lh1mzahw04lf/​LicTarea2.xlsx?​dl=0|Calificaciones por equipo]] +
-(Es un libro de Excel, una calificación por cada hoja o pestaña)+
  
-=== Tarea 3 (Licenciatura) === +Descripción
-[[https://​www.dropbox.com/​s/​1qoclze7q37rbvv/​LicTarea3.xlsx?​dl=0|Calificaciones por equipo]] +
-(Es un libro de Excel, una calificación por cada hoja o pestaña)+
  
 +Considere tres marcos de referencia en el plano (2D): {W} es el mundo, {B} es un robot omnidireccional (puede moverse en cualquier dirección y rotar sobre su eje) y {C} es un sensor ultrasónico.
  
-/* +El origen ​de {B} coincide con el centro ​de rotación ​del robotel eje $^B X$ apunta hacia el frente del robot. ​El sensor ​se encuentra ​en la parte frontal derecha del robotde modo que las coordenadas ​de su origen expresadas ​en {B} son $^B p = [0.5 ~~ -0.3]^T$El sensor ultrasónico en cuestión apunta hacia la derecha del robot, por lo que el ángulo entre {B} y {C} es $\theta = -\pi/2$.
-=== Tarea 2 (Licenciatura) === +
-Entrega: 29 de marzo antes de las 23:59.  +
-  * Implementación ​del algoritmo “bug” para buscar fuentescon el robot Pioneer p3dx. +
-  * La ubicación de la fuente ​se definirá ​en las variables xfyf dentro ​de su código. +
-  * Utilizar los sensores ultrasónicos para rodear los obstáculos ​en el camino del robot. +
-  * Crear una rejilla de ocupación con resolución de 0.25x0.25m^2 por celda que cubra todo un escenario de 10x10m^2. +
-  * Utilizar los sensores ultrasónicos para actualizar el contenido de las celdas de la rejilla de ocupaciónmientras el robot intenta llegar a su destino.  +
-  * Un programa en Python por //​equipo//​. +
-  * El programa será probado ​por el profesor en un escenario de 10x10m2 en V-REP, sin mostrárselo a los estudiantes. +
-Enviar un archivo .py por equipo, con el nombre NombreEquipoTarea2.py a [[https://www.dropbox.com/​request/​YM4AjesCqq6dIWAAwVsc|este enlace]]. +
-*/+
  
-/* +Escriba ​un programa en MATLAB, con el toolbox RVC de Peter Corke, que obtenga las trayectorias ​de posiciónvelocidad ​aceleración basadas ​en polinomios ​de quinto orden para el robot y para su sensorSolamente genere ​las trayectorias ​del robot, ​y obtenga las del sensor respecto ​{W} aplicando transformaciones homogéneasLas únicas restricciones ​de la trayectoria son (a) que trace un hexágono y (b) que durante el recorrido desde su origen ​hasta su destino, el robot realice una rotación total sobre su eje de $2 \pi$.
-=== Tarea 3 (Licenciatura) === +
-Entrega: 12 de abril antes de las 23:59.  +
-  * Se utilizará ​un robot Pioneer p3dx en V-REP. +
-  * El programa ​debe cargar un mapa en forma de rejilla ​de ocupación, y enviar a un robot desde su ubicación inicial ​en una simulación ​de V-REP hasta un destino especificado por el usuario. +
-  * El mapa a cargar será una rejilla de ocupación con resolución de 0.25x0.25m^2 por celda que cubra todo un escenario de 15x15m^2. +
-  * El mapa que se utilizará ​para evaluar ​su programaserá creado por el profesor con el comando savetxt, del módulo numpy, con el nombre "map.txt"​. +
-  * La ubicación del destino se definirá en las variables xf, yf dentro de su código. Esta ubicación estará dada en metros, dentro ​del mundo de la simulación. +
-  * Es importante que el robot NO colisione con los obstáculosse le dará un peso especial ​este aspecto en la calificación. +
-  * Si se especifica una ubicación ​de destino ​que se encuentre dentro de un obstáculo, ​que esté demasiado cerca de un obstáculo o si no existe una ruta entre origen ​destino, el programa debe reportarlo y no enviar al robot+
-  * Se considerarán la longitud de la ruta creada y la distancia recorrida por el robot como aspectos a evaluar. Longitudes de ruta mayores a la más corta se penalizarán,​ también ejecuciones de trayectoria inexactas por parte del robot.  +
-  * Un programa en Python por //​equipo//​. +
-  * El programa será probado por el profesor en un escenario de 15x15m2 en V-REP, sin mostrárselo a los estudiantes. +
-  * Si su programa requiere ser dividido en varios archivos ​de Python, dele el nombre de main.py al archivo principal. +
-Enviar un archivo .zip por equipo que contenga todas las partes de su programa, con el nombre NombreEquipoTarea3.zip a [[https://​www.dropbox.com/​request/​JkUqmtOYGKUGe1qukd3t|este enlace]]. +
-*/+
  
-/* +Almacene ​las posiciones y orientaciones ​del robot y sensor como transformaciones homogéneas ​en SE(2) y cree una animación del movimiento.
-=== Tarea 1 (Maestría) === +
-Entrega: 11 de marzo antes de las 23:59.  +
-  * Implementación ​del algoritmo “bug” para buscar fuentes, con el robot Pioneer p3dx. +
-  * La ubicación de la fuente se definirá ​en las variables xf, yf dentro de su código. +
-  * Utilizar los sensores ultrasónicos para rodear los obstáculos en el camino del robot. +
-  * A partir de los v(t) y omega(t) calculados para mover el robot, graficar x(t), y(t) y theta(t) (integración simple de 1er orden). Asuma que x(0), y(0), theta(0) son cero. Puede usar numpy y matplotlib para crear las gráficas. +
-  * Un programa en Python por //​persona//​. +
-  * El programa será probado por el profesor en un escenario de 15x15m2 en V-REP, sin mostrárselo a los estudiantes. +
-Enviar un archivo .py por equipo, con el nombre ApellidosNombresTarea1.py a [[https://​www.dropbox.com/​request/​NQcP9bqlu3kc5NGTu5hh|este enlace]]. +
-*/+
  
-=== Tarea 1 (Maestría) ===  +{{ :ejercicio.png?400 |}}
-[[https://www.dropbox.com/​s/​hsmay9n6fzjbvpm/​MIETarea1.xlsx?dl=0|Calificaciones por NUA]] +
-(Es un libro de Excel, una calificación por cada hoja o pestaña) +
- +
-=== Tarea 2 (Maestría) ===  +
-[[https://​www.dropbox.com/​s/​yajo57t8f3r5d2a/​MIETarea2.xlsx?​dl=0|Calificaciones por NUA]] +
-(Es un libro de Excel, una calificación por cada hoja o pestaña) +
- +
-/* +
-=== Tarea 2 (Maestría) === +
-Entrega: 25 de marzo antes de las 23:59.  +
-  * Implementación del algoritmo “bug” para buscar fuentes, con el robot Pioneer p3dx. +
-  * La ubicación de la fuente se definirá en las variables xf, yf dentro de su código. +
-  * Utilizar los sensores ultrasónicos para rodear los obstáculos en el camino del robot. +
-  * Crear una rejilla de ocupación (probabilística) con resolución de 0.25x0.25m^2 por celda que cubra todo un escenario de 10x10m^2. +
-  * Utilizar los sensores ultrasónicos para actualizar el contenido de las celdas de la rejilla de ocupación, mientras el robot intenta llegar a su destino. Asuma un modelo de sensor con probabilidad de falso positivo de 0.01 en todo el rango de 0 a 1m, y falso negativo también de 0.01. En caso de detección, no agregue ruido a la medición. +
-  * Utilizando matplotlib, pygame o cualquier otra alternativa disponible en la distribución Anaconda, cree una visualización de la rejilla de ocupación, preferentemente en (casi) tiempo real. +
-  * Un programa en Python por //​persona//​. +
-  * El programa será probado por el profesor en un escenario de 10x10m2 en V-REP, sin mostrárselo a los estudiantes. +
-Enviar un archivo .py por equipo, con el nombre ApellidosNombresTarea2.py a [[https://​www.dropbox.com/​request/​LkBV2KhaydRSzwAnZcZ0|este enlace]]. +
-*/ +
-/* +
-=== Proyecto Final (Maestría) === +
-  * Crear un mundo de 15x15m2 de manera programática,​ con muros perimetrales (fuera del área de 15x15) y obstáculos cilíndricos. +
-  * Generar un roadmap probabilístico para cubrir el espacio de configuración libre. +
-  * Implementar una búsqueda en grafo para hallar una ruta entre cualquier configuración inicial y meta. +
-  * Enviar a un robot Pioneer 3dx sin colisionar, desde su qInicial a su qMeta. +
-  * Mientras el robot viaja de qInicial a qMeta, generar una rejilla de ocupación de 60x60 y desplegarla al final del recorrido. Además, almacenarla en formato de texto con la función numpy.savetxt(). +
-  * Los obstáculos serán especificados por el usuario en un archivo de texto, una línea por obstáculo, separando con espacios: posx posy radio. +
-  * El programa debe, al final, graficar el espacio de configuración y el roadmap generado (dibujar los nodos y aristas del grafo). +
-  * Para la entrega, debe enviar el código en Python y un reporte en PDF a https://​www.dropbox.com/​request/​Yt0KWnhXD2cW47IWYGQQ (realizar un envío por archivo). +
-  * Fecha de entrega: 12 de abril de 2019, límite a las 23:59hrs. +
-*/ +
- +
-=== Calificaciones Proyecto Final (Maestría) === +
-https://​www.dropbox.com/​s/​pmu0pp7iu8za3mv/​MIEProyFinal.xlsx?​dl=0+
  
 === Información útil para el curso === === Información útil para el curso ===
Line 130: Line 45:
 Herramientas de robótica, visión y control de Peter Corke [[http://​petercorke.com/​wordpress/​toolboxes/​robotics-toolbox|RVC toolbox]] Herramientas de robótica, visión y control de Peter Corke [[http://​petercorke.com/​wordpress/​toolboxes/​robotics-toolbox|RVC toolbox]]
  
-  * Simulador V-REP (utilizar la edición pro EDU para el curso) [[http://​www.coppeliarobotics.com/​downloads.html|V-REP]] +  * Simulador ​Coppelia Sim (antes ​V-REP(utilizar la edición pro EDU para el curso) [[http://​www.coppeliarobotics.com/​downloads| ​Coppelia Sim]] 
-  * [[http://​www.coppeliarobotics.com/​helpFiles/​en/​remoteApiFunctionsPython.htm#​simxGetObjectPosition|API remota para Python de V-REP]] +  * [[http://​www.coppeliarobotics.com/​helpFiles/​en/​remoteApiFunctionsPython.htmn|API remota para Python de CoppeliaSim]] 
-  * [[http://​www.coppeliarobotics.com/​helpFiles/​en/​remoteApiConstants.htm#​operationModes| Constantes para la API remota de V-REP ]]+  * [[http://​www.coppeliarobotics.com/​helpFiles/​en/​remoteApiConstants.htm| Constantes para la API remota de CoppeliaSim ​]]
  
 Distribución de Python Anaconda [[https://​www.anaconda.com/​download|Anaconda]] Distribución de Python Anaconda [[https://​www.anaconda.com/​download|Anaconda]]