2010-01-15 16 views
12

Ich bin ein Softwareentwickler mit einem Microsoft Web Entwicklungshintergrund. Aus reinem Interesse und Intrigen würde ich gerne mehr darüber erfahren, was bei der Herstellung von autonomen Fahrzeugen oder der Auto-Technologie im Allgemeinen (Abstandsregeltempomat, Selbstparken usw.) zu tun hat.Darpa Grand Challenge/Autonome Fahrzeuge

Hat jemand hier Erfahrung mit dieser Art von Technologie, oder haben Sie eine empfohlene Reihe von Büchern, Website, Entwicklungs-Frameworks, Open-Source-Projekte usw., die nützlich wären?

Danke!

*** Bearbeiten - einige Antworten Einschließlich ich aus verschiedenen DARPA-Teams per E-Mail bekommen: *

Aaron von der Cornell schrieb:

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

Mike von der Stanford schrieb:

In Bezug auf den Einstieg in die Robotik gibt es ein paar Open Source Robotik-Toolkits im Web (Player/Stage, CARMEN, Willow Garagen Roboter-Betriebssystem, Microsofts Roboter-Toolkit), die es sich zu untersuchen lohnt. Diese sind jedoch nicht transportspezifisch. Es gibt viele wissenschaftliche Artikel darüber, wie sich die verschiedenen DARPA-Teams autonom fahren. Dafür würde ich das Journal of Field Robotik vorschlagen. Sie hatten mehrere Ausgaben, die sowohl der Grand Challenge als auch der Urban Challenge gewidmet waren. Schließlich, wenn es einen anderen Wettbewerb gibt, auf jeden Fall nach einem nahe gelegenen Team und Freiwilligen suchen. Für beide Rennen hatten wir ein paar Leute, die nicht von der Universität waren aber bereit waren, hart zu arbeiten und beizutragen.

John von Osh Kosh schrieb:

Für Bücher usw., hier beginnen: http://www.amazon.com/s/ref=nb_sb_ss_i_3_5?url=search-alias%3Daps&field-keywords=darpa+urban+challenge&sprefix=DARPA

Es gibt auch eine Menge Literatur über das Internet, wie Google Scholar, obwohl die meisten der White Paper Sie Sie werden "forschen" und tauchen nicht zu sehr in die Codierungsaspekte ein. Vielleicht möchten Sie der IEEE Intelligent Transportation Systems Society beitreten; Sie veröffentlichen Whitepaper über alle Arten von Forschung und angewandten Technologien.

Wir verwendeten C++ auf Linux-Maschinen für die Sensorverarbeitung und C# auf Windows-Maschinen für die Autonomie-Programmierung.

Obwohl ich dies selbst nicht verwendet habe, hier ist ein Link zu einem SDK von einigen Leuten an der Stanford University. http://kartorobotics.com/

Viel Glück!

+0

Ich war in beiden DARPA GC's und ich wusste nichts über das Buch! Das ist Geld genau dort! –

Antwort

3

Sensordaten (wie Project Natal für die XBOX) und A.I. neuronale Netze, die Terrain-Features erkennen und sie mit einem Bayes-Filter unter Verwendung von C- und Inline-Assembler klassifizieren. Sicher, es gibt GPS und all das, aber GPS, sogar das Militär-GPS ist Mist für Entscheidungen in Echtzeit.Ich würde Gesichtserkennungscode, wie Intel's OpenCV library, und Spracherkennung, wie VoxForge, betrachten, da sie sich mit der visuellen Objekterkennung (räumlich) bzw. maschinellem Lernen (probabilistische Modelle) befassen. Die Kenntnis der Architektur Arduino ermöglicht eine einfache Codierung, um Befehle an physikalische Aktionen von Mikromotoren, die das Fahrzeug steuern, zu übertragen. Danach ist es nur eine Menge Debugging.

2

Überprüfen Sie die Archive von GPS World für einige High-Level-Zeug. Suchen Sie nach "DARPA", um Artikel für die Urban und Grand Challenges zu erstellen.

9

Ich arbeite mit autonomen Rovern auf allen Ebenen (Mechanik, Elektronik und Software) und es ist eine Menge Arbeit.

Auf der mechanischen Ebene müssen Sie eine mobile Plattform erstellen oder nachrüsten, um die Automatisierung zu akzeptieren. Ich werde meine Erfahrungen mit einem meiner Projekte veröffentlichen, um die Diskussion zu verkörpern.

Mein Projekt basiert auf einem kleinen (100cc) Benzin-ATV. In der mechanischen Phase musste ich das ATV vorbereiten, um alle Geräte für die Automatisierung zu erhalten. Zum Beispiel, schneiden Sie den Lenker, installieren Sie Riemenscheiben, machen Sie Metallklammern, um Servomotoren zu installieren, installieren Sie Potentiometer an der Lenkstangenachse, um den Lenkregelkreis zu schließen, usw.

Dann müssen Sie etwas Forschung und spezifizieren die Motoren für die Automatisierung . Zum Beispiel mussten wir einige Feldtests durchführen, um zu bestimmen, welche Kraft wir (Menschen) auf den Lenker ausüben, um das ATV in verschiedenen Situationen zu steuern und wie hoch die Winkelgeschwindigkeit der Lenkung ist. Mit diesen Informationen müssen Sie einen Motor und ein Getriebe finden, die diese Art von Bewegung nachahmen können.

Dann kommt eine Schicht darüber, die Elektronik für die Kontrolle. Wir haben uns dafür entschieden, Motorcontroller von der Stange zu kaufen. Grundsätzlich geben Sie einen Befehl (oft einen seriellen Befehl), der entweder eine Referenzgeschwindigkeit oder (in unserem Fall) eine Referenzposition für die Servomotoren enthält. Offensichtlich hatten wir mehrere Motoren zu steuern. Lenkung, Vorderradbremse, Hinterradbremse, Gangschaltung, Gashebel.

Dann haben wir die Software auf dem Bordcomputer erstellt, um die Motorcontroller zu steuern. An diesem Punkt hatten wir einen mobilen Roboter, den wir mit einem Remote-Computer via WiFi fahren konnten, aber noch nicht autonom.

Die nächste Phase war die Installation, Erfassung und Verarbeitung des Signals von Sensoren. Wir hatten 2 GPS-Einheiten, Beschleunigungsmesser, Gyroskope und Magnetometer. Wir haben Eingaben von all diesen Sensoren erhalten und eine Schätzung des Positionsvektors (Euler-Winkel), einen dynamischen Vektor (Geschwindigkeit, Beschleunigung) und eine Schätzung der aktuellen Position bei einem Referenzrahmen (Karte) erstellt. Heutzutage würden wir uns entscheiden, eine integrierte IMU (Trägheitsmesseinheit) zu kaufen, anstatt selbst arbeiten zu müssen und uns um Dinge wie Temperaturkompensation und Kalman-Filterdesign zu sorgen.

Wenn Sie all diese Dinge getan haben, dann müssen Sie alle diese Informationen verarbeiten und das Betätigungssystem mit den Ergebnissen nach dem vordefinierten Ziel einspeisen (gehen Sie zum Beispiel von Punkt A nach Punkt B). Wir haben verhaltensbasierte Robotik in C# implementiert. Sie können diese kleinen Verhaltensweisen in Schichten programmieren. Beispielsweise erstellen Sie Verhaltensweisen wie BehBatteryLow, die einen Alarm auslösen, wenn der Akkuladestand unter einen Schwellenwert sinkt. Dies sind Low-Level-Verhaltensweisen, die von Verhaltensweisen auf höherer Ebene wie BehAvoidObstacle oder BehNavigateToWaypoint erfasst werden können. Verhaltensweisen können widersprüchlich sein, also brauchen Sie Dinge wie Arbiter.

"Behavior Based Robotics" von Ronald C. Arkin ist ein guter Ausgangspunkt, aber indem Sie einige Schlüsselwörter aus meinem Beitrag googlen, könnten Sie auch zu einigen interessanten Orten kommen.

Prost und viel Glück!