Filtern
Erscheinungsjahr
- 2015 (6) (entfernen)
Dokumenttyp
- Masterarbeit (3)
- Bachelorarbeit (2)
- Dissertation (1)
Schlagworte
- API analysis (1)
- API-Analyse (1)
- Befahrbarkeit (1)
- Developer profiling (1)
- Dimension 3 (1)
- Entwickler Profil (1)
- Gelände (1)
- Hindernis (1)
- Klassifikation (1)
- Laser (1)
Institut
Terrainklassifikation mit Markov Zufallsfeldern für autonome Roboter in unstrukturiertem Terrain
(2015)
Diese Doktorarbeit beschäftigt sich mit dem Problem der Terrainklassifikation im unstrukturierten Außengelände. Die Terrainklassifikation umfasst dabei das Erkennen von Hindernissen und flachen Bereichen mit der einhergehenden Analyse der Bodenoberfläche. Ein 3D Laser-Entfernungsmesser wurde als primärer Sensor verwendet, um das Umfeld des Roboters zu vermessen. Zunächst wird eine Gitterstruktur zur Reduktion der Daten eingeführt. Diese Datenrepräsentation ermöglicht die Integration mehrerer Sensoren, z.B. Kameras für Farb- und Texturinformationen oder weitere Laser-Entfernungsmesser, um die Datendichte zu erhöhen. Anschließend werden für alle Terrainzellen des Gitters Merkmale berechnet. Die Klassifikation erfolgt mithilfe eines Markov Zufallsfeldes für Kontextsensitivität um Sensorrauschen und variierender Datendichte entgegenzuwirken. Ein Gibbs-Sampling Ansatz wird zur Optimierung eingesetzt und auf der CPU sowie der auf GPU parallelisiert um Ergebnisse in Echtzeit zu berechnen. Weiterhin werden dynamische Hindernisse unter Verwendung verschiedener State-of-the-Art Techniken erkannt und über die Zeit verfolgt. Die berechneten Informationen, wohin sich andere Verkehrsteilnehmer bewegen und in Zukunft hinbewegen könnten, werden verwendet, um Rückschlüsse auf Bodenoberflächen zu ziehen die teilweise oder vollständig unsichtbar für die Sensoren sind. Die Algorithmen wurden auf unterschiedlichen autonomen Roboter-Plattformen getestet und eine Evaluation gegen von Menschen annotierte Grundwahrheiten von Karten aus mehreren Millionen Messungen wird präsentiert. Der in dieser Arbeit entwickelte Ansatz zur Terrainklassifikation hat sich in allen Anwendungsbereichen bewährt und neue Erkenntnisse geliefert. Kombiniert mit einem Pfadplanungsalgorithmus ermöglicht die Terrainklassifikation die vollständige Autonomie für radgetriebene Roboter in natürlichem Außengelände.
101worker ist die modulare Wissensverarbeitungskomponente des 101companies-Projektes. Durch organisches Wachstum des Systems, statt Beachtung von bewährten Software-Design-Prinzipien, haben sich Wartungs- und Leistungsprobleme entwickelt. Diese Arbeit beschreibt diese Probleme, entwirft Anforderungen für das Refactoring des Systems und beschreibt und analysiert schließlich die resultierende Implementierung. Die Lösung involviert die Zusammenfassung von verstreuten und redundanten Informationen, aufsetzen von Unit- und funktionalen Test-Suiten und Inkrementalisierung der Busarchitektur von 101worker.
Die automatische Identifikation von Experten in einer speziellen technologischen Domäne, wie einer Bibliothek, Framework oder generellen Technologie, schafft einen großen Mehrwert in der gemeinsamen Entwicklung von Softwareprojekten. Daher soll in dieser Arbeit ein Vorgehen sowie ein Programm zur automatischen Identifikation von Experten entwickelt werden, die gewissen Skills besitzen. Hierbei wird speziell das Django-Framework betrachtet. Jedoch kann durch hinzufügen von weiteren Regeln unser Tool leicht auf andere Technologien angepasst werden. Abschließend wird eine case study auf ein Open Source Projekt durchgeführt.
Wir analysieren versionsbasierte Softwareprojekte, um den Entwicklern API- und Domänen-Wissen zuzuordnen. Genauer gesagt analysieren wir die einzelnen Commits in einem Repository in Hinblick auf die API-Nutzung. Auf dieser Grundlage können wir APIs (oder Teile davon) den Entwicklern zuordnen und dadurch auf die API-Erfahrung der Entwickler schließen. Im transitiven Schluss können wir auf Domänen-Erfahrung schließen, da jeder API eine Programmierdomäne zugewiesen wird.
Paketmanager für Quellcode wie zum Beispiel Cabal verwalten unter anderem die Abhängigkeiten zwischen Paketen. Softwareprojekte nutzen jedoch selten sämtliche Funktionalitäten, die ihre Abhängigkeiten bereitstellen. Das führt zur unnötigen Kompilation unbenutzter Code-Fragmente und zu vermeintlichen Versionskonflikten, wo gar keine Konflikte sind. In zwei Fallstudien zeigen wir, wie relevant diese zwei Probleme sind. Danach beschreiben wir, wie wir sie vermeiden können, indem wir Abhängigkeiten nicht zwischen ganzen Paketen, sondern zwischen einzelnen Code-Fragmenten feststellen.
Um unterschiedliche Anforderungen zu erfüllen, werden Softwaresysteme oft in Form einer Menge von Varianten entwickelt. Zwei gebräuchliche Ansätze für eine solche Softwareentwicklung sind das clone-and-owning und die Produktlinienentwicklung. Beide Ansätze haben Vor- und Nachteile. In vorheriger Arbeit mit anderen haben wir eine Idee vorgestellt bei der beide Ansätze verknüpft werden um Varianten, Ähnlichkeiten und Softwareklone zu verwalten. Diese Idee basiert auf einer virtuellen Plattform und Operatoren für Softwareklone. In der vorliegenden Arbeit stellen wir einen Ansatz vor um essentielle Metadaten für die Realisierung eines propagate-Operators zu aggregieren. Dafür haben wir ein System entwickelt um Ähnlichkeiten mit Annotationen zu versehen, wobei die Ähnlichkeiten aus der Historie eines Repositories extrahiert werden. Die Annotationen drücken aus wie eine Ähnlichkeit zukünftig gewartet werden soll. Abhängig vom Annotationstyp kann diese Wartung automatisiert ausgeführt oder sie muss vom Benutzer manuell betrieben werden. In dieser Arbeit beschreiben wir die automatisierte Extraktion von Metadaten und das System zur Annotation von Ähnlichkeiten; wir erklären wie das System in den Arbeitsfluss eines bestehenden Programms zur Versionierungverwaltung (Git) integriert werden kann; und abschließend stellen wir eine Fallstudie vor, die das 101haskell-System benutzt.