2010-01-15 12 views
12

Sono uno sviluppatore di software con uno sfondo di sviluppo Web Microsoft. Per puro interesse e intrigo, mi piacerebbe saperne di più su ciò che accade nel rendere autonomi i veicoli o la tecnologia automobilistica in generale (cruise control adattivo, parcheggio autonomo, ecc.).Darpa Grand Challenge/Veicoli autonomi

Qualcuno qui ha esperienza passata con questo tipo di tecnologia o ha una serie raccomandata di libri, sito Web, framework di sviluppo, progetti open source, ecc. Che sarebbe utile?

Grazie!

*** Modifica - Comprese alcune risposte che ho ricevuto da vari team DARPA via e-mail: *

Aaron da Cornell ha scritto:

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

Mike da Stanford ha scritto:

In termini di entrare in robotica, ci sono un paio di open source toolkit di robotica sul web (Player/Stage, CARMEN, Willow Garages robot OS, microsofts robot toolkit) che potrebbe valere la pena di investigare. Tuttavia, questi non sono specifici per il trasporto. Ci sono un sacco di articoli scientifici su come i diversi team DARPA si sono avvicinati alla guida autonoma . Per quello suggerirei il Journal of Field Robotica. Hanno avuto diversi numeri dedicati sia alla Grand Challenge sia a Urban Challenge. Infine, se c'è un'altra competizione, cerca sicuramente una squadra vicina e fai volontariato. Per entrambe le razze, noi avevamo un paio di persone che non erano dell'università ma erano disposti a lavorare sodo e contribuire.

Giovanni da Osh Kosh ha scritto:

Per i libri, ecc, inizia qui: http://www.amazon.com/s/ref=nb_sb_ss_i_3_5?url=search-alias%3Daps&field-keywords=darpa+urban+challenge&sprefix=DARPA

C'è anche un sacco di letteratura sul web, come Google Scholar, anche se la maggior parte dei whitepaper voi troveranno "ricerca" e non approfondiranno troppo gli aspetti della codifica. Si consiglia di prendere in considerazione l'adesione alla IEEE Intelligent Transportation Systems Society; pubblicano white paper su tutti i tipi di ricerca e tecnologie applicate.

Abbiamo usato C++ su macchine Linux per l'elaborazione del sensore e C# su macchine Windows per la programmazione dell'autonomia.

Anche se non l'ho usato da solo, ecco un collegamento a un SDK di alcune persone della Stanford University. http://kartorobotics.com/

Buona fortuna!

+0

Ero in entrambi i GC DARPA e non conoscevo il libro! Questo è denaro proprio lì! –

risposta

3

Dati sensore (come Project Natal per XBOX) e A.I. reti neurali che rilevano le caratteristiche del terreno e le classificano con un filtro bayesiano utilizzando prevalentemente C e assemblatore in linea. Certo, c'è il GPS e tutto il resto, ma il GPS, anche il GPS militare è una schifezza per un processo decisionale in tempo reale.Vorrei esaminare il codice di riconoscimento facciale, come Intel's OpenCV library, e il riconoscimento vocale, come VoxForge, poiché si occupano rispettivamente di rilevamento di oggetti visivi (spaziali) e apprendimento automatico (modelli probabilistici). La conoscenza dell'architettura Arduino consentirà la semplice codifica per trasferire i comandi alle azioni fisiche dei micro-motori che controllano il veicolo. Dopo questo è solo una tonnellata di debugging.

2

Controllare gli archivi di GPS World per alcuni contenuti di alto livello. Fai una ricerca per "DARPA" per tirare su alcuni articoli per l'Urban e le Grand Challenges.

9

Io lavoro con rover autonomi a tutti i livelli (meccanico, elettronico e software) ed è molto lavoro.

A livello meccanico, è necessario creare o aggiornare una piattaforma mobile affinché accetti l'automazione. Pubblicherò le mie esperienze con uno dei miei progetti per incarnare la discussione.

Il mio progetto è basato su un piccolo (100cc) benzina ATV. Nella fase meccanica dovevo preparare l'ATV per ricevere tutti i dispositivi per l'automazione. Ad esempio, tagliare i manubri, installare le pulegge, creare staffe metalliche per installare i servomotori, installare i potenziometri sull'asse del manubrio per chiudere il circuito di controllo dello sterzo, ecc.

Quindi è necessario eseguire alcune ricerche e specificare i motori per l'automazione . Ad esempio, abbiamo dovuto effettuare alcuni test sul campo per determinare qual è la forza che noi (umani) si applicano al manubrio per guidare l'ATV in diverse situazioni e qual è la velocità angolare dello sterzo. Con queste informazioni, è necessario trovare un motore e un cambio che consentano di simulare quel tipo di movimento.

Quindi viene uno strato sopra, l'elettronica per il controllo. Abbiamo scelto di acquistare controllori motore dallo scaffale. Fondamentalmente si dà un comando (spesso un comando seriale) contenente una velocità di riferimento o (nel nostro caso) una posizione di riferimento per i servomotori. Ovviamente avevamo diversi motori da controllare. Sterzo, freni anteriori, freni posteriori, cambio marcia, acceleratore.

Quindi abbiamo creato il software in esecuzione sul computer di bordo per controllare i controller del motore. A questo punto avevamo un robot mobile che potevamo guidare usando un computer remoto via WiFi, ma non ancora autonomo.

La fase successiva era l'installazione, l'acquisizione e l'elaborazione del segnale dai sensori. Avevamo 2 unità GPS, accelerometri, giroscopi e magnetometri. Abbiamo ricevuto input da tutti questi sensori e abbiamo creato una stima del vettore di posizione (angoli di Eulero), un vettore dinamico (velocità, accelerazione) e una stima della posizione corrente data un quadro di riferimento (mappa). Al giorno d'oggi, opteremmo di acquistare un IMU integrato (unità di misurazione inerziale) invece di dover lavorare da soli e preoccuparsi di cose come la compensazione della temperatura e il design del filtro Kalman.

Quando hai fatto tutte queste cose, allora devi elaborare tutte quelle informazioni e alimentare il sistema di attuazione con i risultati, dato l'obiettivo predefinito (vai dal punto A al punto B per esempio). Abbiamo usato la robotica basata sul comportamento implementata in C#. Puoi programmare questi piccoli comportamenti a strati. Ad esempio, si creano comportamenti come BehBatteryLow che emetteranno un allarme se il livello della batteria scende al di sotto di una soglia. Si tratta di comportamenti di basso livello che potrebbero essere compresi da comportamenti di livello superiore come BehAvoidObstacle o BehNavigateToWaypoint. I comportamenti possono essere in conflitto, quindi hai bisogno di cose come gli Arbitri.

"La robotica basata sul comportamento" di Ronald C. Arkin è un buon punto di partenza, ma con alcune parole chiave del mio post su google si potrebbe arrivare anche ad alcuni posti interessanti.

Saluti e buona fortuna!

Problemi correlati