2010-01-15 7 views
12

Soy un desarrollador de software con un fondo de desarrollo web de Microsoft. Como una cuestión de puro interés e intriga, me encantaría aprender más acerca de lo que implica la fabricación de vehículos autónomos o la tecnología del automóvil en general (control de velocidad adaptativo, estacionamiento automático, etc.).Darpa Grand Challenge/Vehículos autónomos

¿Alguien aquí tiene experiencia previa con este tipo de tecnología, o tiene un conjunto recomendado de libros, sitios web, marcos de desarrollo, proyectos de código abierto, etc. que serían útiles?

Gracias!

*** Edición - Incluyendo algunas de las respuestas que recibí de varios equipos de DARPA través de correo electrónico: *

Aaron de Cornell escribió:

Salida http://code.google.com/p/cornell-urban-challenge/

Mike de Stanford escribió:

En términos de entrar en la robótica, hay un par de código abierto kits de herramientas de robótica en la web (Player/Stage, CARMEN, Willow Garages robot OS, kit de herramientas de microsofts para robots) que valdría la pena investigar. Sin embargo, estos no son específicos del transporte. Hay muchos artículos científicos sobre cómo los diferentes equipos de DARPA se acercaron a la conducción autónoma . Para eso, sugeriría el Journal of Field Robotics. Tenían varios problemas dedicados tanto al Grand Challenge como a Urban Challenge. Finalmente, si hay otra competencia, definitivamente busque un equipo cercano y sea voluntario. Para ambas carreras, tenía un par de personas que no eran de la universidad pero estaban dispuestos a trabajar duro y contribuir.

John de Osh Kosh escribió:

Para libros, etc., se inicia aquí: http://www.amazon.com/s/ref=nb_sb_ss_i_3_5?url=search-alias%3Daps&field-keywords=darpa+urban+challenge&sprefix=DARPA

También hay una gran cantidad de literatura en la web, como Google Scholar, aunque la mayoría de los documentos técnicos que encontrará que están "investigando", y no se sumergen demasiado en los aspectos de codificación. Es posible que desee considerar unirse a la Sociedad de Sistemas de Transporte Inteligente IEEE; publican libros blancos sobre todo tipo de investigación y tecnologías aplicadas.

Utilizamos C++ en máquinas Linux para el procesamiento de sensores y C# en máquinas Windows para la programación de autonomía.

Aunque no he usado esto por mí mismo, aquí hay un enlace a un SDK de algunas personas en la Universidad de Stanford. http://kartorobotics.com/

¡Buena suerte!

+0

¡Estuve en ambos DARPA GC's y no sabía sobre el libro! ¡Eso es dinero allí! –

Respuesta

3

Datos del sensor (como Project Natal para XBOX) y A.I. redes neuronales que detectan las características del terreno y las clasifican con un filtro bayesiano que utiliza principalmente C y ensamblador en línea. Claro, hay GPS y todo eso, pero el GPS, incluso el GPS militar es una porquería para la toma de decisiones en tiempo real.Me gustaría ver el código de reconocimiento facial, como Intel's OpenCV library, y reconocimiento de voz, como VoxForge, ya que se ocupan de la detección de objetos visuales (spacial) y el aprendizaje automático (modelos probabilísticos), respectivamente. El conocimiento de la arquitectura Arduino permitirá la codificación simple para transferir comandos a acciones físicas de micromotores que controlan el vehículo. Después de eso, es solo una tonelada de depuración.

2

Consulte los archivos de GPS World para ver algunas cosas de alto nivel. Haga una búsqueda de "DARPA" para obtener algunos artículos para Urban and Grand Challenges.

9

Trabajo con rovers autónomos en todos los niveles (mecánico, electrónico y de software) y es mucho trabajo.

En el nivel mecánico, necesita crear o actualizar una plataforma móvil para que acepte la automatización. Publicaré mis experiencias con uno de mis proyectos para incorporar la discusión.

Mi proyecto se basa en un pequeño (100cc) gasolina ATV. En la fase mecánica tuve que preparar el ATV para recibir todos los dispositivos para la automatización. Por ejemplo, corte los manillares, instale poleas, haga soportes metálicos para instalar servomotores, instale potenciómetros en el eje del manillar para cerrar el lazo de control de la dirección, etc.

Luego debe investigar y especificar los motores para la automatización . Por ejemplo, tuvimos que hacer algunas pruebas de campo para determinar cuál es la fuerza que nosotros (los humanos) aplicamos al manillar para dirigir el ATV en varias situaciones y cuál es la velocidad angular de la dirección. Con esa información, necesita encontrar un motor y una caja de cambios que le permita imitar ese tipo de movimiento.

Luego viene una capa arriba, la electrónica para control. Elegimos comprar controladores de motor de la estantería. Básicamente le das un comando (a menudo un comando en serie) que contiene una velocidad de referencia o (en nuestro caso) una posición de referencia para los servomotores. Obviamente teníamos varios motores para controlar. Dirección, frenos delanteros, frenos traseros, cambio de marchas, acelerador.

Luego creamos el software que se ejecuta en la computadora de a bordo para controlar los controladores del motor. En este punto, teníamos un robot móvil que podíamos manejar usando una computadora remota a través de WiFi, pero aún no era autónomo.

La siguiente fase fue instalar, adquirir y procesar la señal de los sensores. Teníamos 2 unidades de GPS, acelerómetros, giroscopios y magnetómetros. Recibimos información de todos estos sensores y creamos una estimación del vector de posición (ángulos de Euler), un vector dinámico (velocidad, aceleración) y una estimación de la posición actual dado un marco de referencia (mapa). Hoy en día, optaríamos por comprar una IMU integrada (unidad de medición inercial) en lugar de tener que trabajar por nuestra cuenta y preocuparnos por cosas como la compensación de temperatura y el diseño del filtro de Kalman.

Cuando haya hecho todo esto, deberá procesar toda esa información y alimentar el sistema de actuación con los resultados, dado el objetivo predefinido (vaya del punto A al punto B, por ejemplo). Utilizamos Robótica basada en comportamiento implementada en C#. Puede programar estos pequeños comportamientos en capas. Por ejemplo, crea comportamientos como BehBatteryLow que harán sonar una alarma si el nivel de la batería cae por debajo de un umbral. Se trata de comportamientos de bajo nivel que podrían abarcar comportamientos de nivel superior, como BehAvoidObstacle o BehNavigateToWaypoint. Los comportamientos pueden ser conflictivos, por lo que necesita cosas como los Árbitros.

"Behavior Based Robotics" de Ronald C. Arkin es un buen punto de partida, pero al buscar algunas palabras clave en mi publicación, es posible que también llegue a algunos lugares interesantes.

¡Salud y buena suerte!

Cuestiones relacionadas