==== Robótica Móvil === === Tarea 1 === Entrega: 19/mar/2020 Código en Python para que el robot Pioneer 3dx dentro del simulador CoppeliaSim siga una trayectoria definida por puntos (x,y) almacenados en un archivo de texto, un punto por línea, separando X e Y por un espacio. Ejemplo de archivo 0 0 1 2.3 2 4.5 3 5 Se debe generar una trayectoria con b-splines, calculando que el tiempo total de ejecución dependa de la distancia entre el punto inicial y 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. [[https://www.dropbox.com/sh/tmdjki8iqnjascj/AABaaegpZtHdmbvIjoiSFM9Ba?dl=0|Convocatoria Concurso de Robótica UAQ]] [[https://www.dropbox.com/s/sewlfcrbaowe11w/RoboticaMovil.pdf?dl=0|Temario y criterios de evaluación (Licenciatura)]] === Aviso: No habrá sesión presencial el 30/01/2020 === Ejercicio para el 30/01: modificar el código de trajectory.m para obtener el movimiento de dos marcos de referencia. Descripción 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 robot, y el eje $^B X$ apunta hacia el frente del robot. El sensor se encuentra en la parte frontal derecha del robot, de 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$. Escriba un programa en MATLAB, con el toolbox RVC de Peter Corke, que obtenga las trayectorias de posición, velocidad y aceleración basadas en polinomios de quinto orden para el robot y para su sensor. Solamente genere las trayectorias del robot, y obtenga las del sensor respecto a {W} aplicando transformaciones homogéneas. Las ú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$. Almacene las posiciones y orientaciones del robot y sensor como transformaciones homogéneas en SE(2) y cree una animación del movimiento. {{ :ejercicio.png?400 |}} === Información útil para el curso === Herramientas de robótica, visión y control de Peter Corke [[http://petercorke.com/wordpress/toolboxes/robotics-toolbox|RVC toolbox]] * 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.htmn|API remota para Python de CoppeliaSim]] * [[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]] Repositorio con muestras del código del curso [[https://github.com/jpiramirez/roboticamovil|GitHub RoboticaMovil]] Proveedor de un kit útil para el curso [[https://www.laboratorioescolar.com/CARRITO-EVASOR-DE-OBSTACULOS-CON-ARDUINO-UNO,11949_1496845219|LABESA]] Nota: no es obligatorio adquirir los materiales con este proveedor, solo es una opción conveniente y a precio razonable. Para el análisis de estabilidad de un controlador de robots con propulsión diferencial, revisar: M. Aicardi, G. Casalino, A. Bicchi and A. Balestrino, "Closed loop steering of unicycle like vehicles via Lyapunov techniques," in //IEEE Robotics & Automation Magazine//, vol. 2, no. 1, pp. 27-35, March 1995. doi: 10.1109/100.388294 Para exploración con robot terrestre, revisar: https://www.dropbox.com/s/3wanjixn6jj69al/yamauchi.pdf?dl=0 Algoritmo de Dijkstra interactivo https://www-m9.ma.tum.de/graph-algorithms/spp-dijkstra/index_en.html Algoritmo A* interactivo https://www-m9.ma.tum.de/graph-algorithms/spp-a-star/index_en.html