2010-05-25 7 views
11

Tengo un campo lleno de obstáculos, sé dónde se encuentran y sé cuál es la posición del robot. Usando un algoritmo de búsqueda de ruta, calculo una ruta para que el robot la siga.Guía de un robot a través de un camino

Ahora mi problema es que estoy guiando el robot de la cuadrícula a la cuadrícula, pero esto crea un movimiento no tan suave. Comienzo en A, giro la nariz hasta el punto B, me muevo recto hasta llegar al punto B, enjuago y repito hasta que se alcanza el punto final.

Así que mi pregunta es: ¿Qué tipo de técnicas se utilizan para navegar en un entorno así para que tenga un movimiento suave?

El robot tiene dos ruedas y dos motores. Cambio la dirección del motor girando los motores en reversa.

EDIT: Puedo variar la velocidad de los motores básicamente el robot es un arduino más ardumoto, puedo suministrar valores entre 0-255 a los motores en cualquier dirección.

+2

si lo que quieres hacer es suavizar el movimiento, tratar de calcular una curva spline para el camino a seguir –

+0

@steven eso es en realidad lo que yo quiero, sino lo que no tienen una La clave es cómo mapeo la curva a las velocidades del motor. –

+0

Esa sería una relación basada en la pendiente de la curva en el locus actual a lo largo de ella; esencialmente, una línea recta tiene una proporción de motor-potencia de rueda de 1: 1, con izquierdas agudas y derechos como 0: 1 y 1: 0. Los giros curvados son, por lo tanto, fracciones, por lo que un giro suave hacia la izquierda puede ser 0.75: 1. –

Respuesta

8

Necesita linealización de retroalimentación para un robot impulsado diferencialmente. Esto document lo explica en la Sección 2.2. He incluido partes pertinentes a continuación:

El robot simulado requerido para el proyecto es un robot di ff unidad diferencial con una velocidad limitada. Dado que los robots de variadores diferenciales son no holonómicos, se anima a los estudiantes a usar linealización de retroalimentación a para convertir la salida de control cinemático de sus algoritmos para controlar los robots de variadores diferenciales. La transformación sigue:

Transformation

donde v, ω, x, y son el lineal, velocidades angulares, y cinemáticos. L es una longitud de ajuste proporcional a la dimensión de la base de la rueda del robot.

+0

Gracias! Creo que volveré a publicar aquí en lugar de vincular a la copia en caché. – Jacob

1

Mis pensamientos iniciales sobre este (estoy en el trabajo por lo que no puede pasar mucho tiempo):

Depende el grado de tensión que desea o necesita sus esquinas para ser (lo que dependerá de la cantidad de distancia que su el buscador de ruta le proporciona los obstáculos)

Dado el ancho del robot, puede calcular el radio de giro dada la velocidad de cada rueda. Asumiendo que quiere ir lo más rápido posible y que el derrape no es un problema, siempre mantendrá la rueda exterior en 255 y reducirá la rueda interior a la velocidad que le da el radio de giro requerido.

Dado el ángulo para cualquier giro particular en su camino y el radio de giro que utilizará, puede calcular la distancia desde ese nodo donde reducirá la velocidad de la rueda interior.

5

Un algoritmo de control que he tenido muy buenos resultados con pure pursuit. Básicamente, el robot intenta moverse a un punto a lo largo del camino a una distancia fija por delante del robot. Entonces, a medida que el robot se mueve a lo largo del camino, el punto de mira también avanza. El algoritmo compensa las restricciones no holonómicas al modelar posibles trayectorias como arcos.

Las distancias más grandes hacia adelante crearán un movimiento más suave. Sin embargo, las distancias de mayor vista hacia adelante harán que el robot corte esquinas, lo que puede colisionar con obstáculos. Puede solucionar este problema implementando ideas de un algoritmo de control reactivo llamado Vector Field Histogram (VFH). VFH básicamente aleja al robot de paredes cercanas. Si bien esto normalmente utiliza un sensor de búsqueda de rango de algún tipo, puede extrapolar las ubicaciones relativas de los obstáculos ya que conoce la posición del robot y las ubicaciones de obstáculos.

0

Un enfoque de optimización es una forma muy general de manejar esto.

Utilice su ruta calculada como entrada a un algoritmo de optimización no lineal genérico (¡su elección!) Con una función de costo compuesta por la cercanía de la trayectoria de respuesta a la trayectoria de entrada así como la adhesión a restricciones no holonómicas, y cualquier otra restricción que quiera imponer (por ejemplo, mantenerse alejado de los obstáculos). El algoritmo de optimización también se puede inicializar con una trayectoria construida a partir de la trayectoria original.

Las notas del curso de robótica de Marc Toussaint son una buena fuente para este tipo de enfoque. Véase en particular la conferencia 7: http://userpage.fu-berlin.de/mtoussai/teaching/10-robotics/

Cuestiones relacionadas