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.

Convocatoria Concurso de Robótica UAQ

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.

Información útil para el curso

Herramientas de robótica, visión y control de Peter Corke RVC toolbox

Distribución de Python Anaconda Anaconda

Repositorio con muestras del código del curso GitHub RoboticaMovil

Proveedor de un kit útil para el curso 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