Frage

Das Abhängigkeitsarchitektur, Vorgeschlagen von Rodney Brooks im Jahr 1986 ist ein "Bottom-up" -Ansatz, bei dem Roboter mit einfachen hierarchischen Modellen entwickelt werden. Diese Modelle bauen die unteren Module auf und subsumieren, um ein Endprodukt zu bilden. Beispielsweise kann einem Roboter ein "Find -Öffnen" -Modul erhalten werden, das von einem abstrakteren "Findetür" -Modul subsumiert wird, das dann selbst von einem "Ausgangsspielfeld" -Modul subsumiert wird.

In einem "objektorientierteren" Design hätten wir das Design offensichtlich mit dem "Verlassen des Spielfeldmoduls" beginnen können, nehmen jedoch einige der primitiveren Komponenten an (als "Funktionen"), die einige der primitiveren Komponenten (als "Funktionen") annehmen werden werden werden werden werden. Wahrscheinlich in anderen höheren Konzepten wiederverwendet werden.

Die Erkenntnis, dass die Implementierung dieses Roboters in einer prozeduralen Sprache (oder einer funktionalen) das einfachste sein könnte, aber ist es kontraproduktiv, einen von Subsumbildern architekturbasierten Roboter in einem objektorientierten Programmierparadigma zu erkennen? (Erkennen Sie auch, dass es möglicherweise schwierig ist, ein Software -Engineering -Paradigma gegen eine Robotik zu wiegen), um eine Lösung zu erhalten, gibt es eine Form von "Adapter", die implementiert werden kann, um die Wirksamkeit der Verwendung von zwei widersprüchlichen Paradigmen zu erhöhen?

War es hilfreich?

Lösung

Ich möchte dies in ein gemeinsameres Szenario verallgemeinern. Dies ist meiner Meinung nach sinnvoll, da die Einzelheiten der Subsums-Architektur möglicherweise kein Hauptaspekt in der Frage sind (und die gleichen Probleme treten auch in nicht-robotischen Bereichen auf).

In der allgemeinen Software-Arztitecture gibt es einen bidirektionalen Ansatz oder einen Multi-Paradigm-Ansatz, wie in der Frage. Die unterste Ebene einer Betriebsumgebung ist im Allgemeinen unten nach oben geschrieben. Sehr spezifische Code -Bits werden in Treiber sehr spezifische Hardwareelemente im System geschrieben. Diese werden dann kombiniert, um Komponenten auf höherer Ebene zu bilden. Ich vermute, wir könnten dies leicht als einen Subsums -Ansatz beschreiben, wenn wir unseren Roboter einfach als System selbst und die Ziele zur Kontrolle spezifischer Aspekte dieses Systems beschreiben. Obwohl ich nicht sicher bin, ob es unprotant ist, dies zu tun.

Aus den Top-Down-Anwendungen werden die meisten Anwendungen in Sprachen auf höherer Ebene geschrieben oder als abstrakte Maschine beschrieben. Dies ist ziemlich weit entfernt von den meisten Bibliotheken, die tatsächlich die Arbeit erledigen.

Irgendwann müssen sich diese beiden Schichten treffen - tatsächlich treffen sie sich an vielen Orten in verschiedenen Szenarien. Hier müssen Sie die Schichten "anpassen", um für die andere Ebene geeignet zu sein. Der Begriff "Adapter" hier ist zu 100% korrekt. Es gibt tatsächlich ein Softwaremuster namens "Adapter", das für diesen Zweck verwendet wird.

Abgesehen von bestimmten Adaptern können wir tatsächlich die gesamte Toolchain in jeder modernen Programmierung berücksichtigen. Der Compiler selbst ist zusammen mit dem Liner und einer Ausführungs -VM die primäre Schnittstelle zwischen den beiden Schichten. Das heißt, eine hochstufige Sprache ist in einer Domäne geschrieben, und der Compiler ermöglicht es ihm, in den Domänen auf niedrigerer Ebene zu arbeiten.

Wenn Sie sich speziell auf die Paradigmen-Effektivität suchen, sollten Sie sich auf hohe Sprachen für die imperative Programmierung (C ++), die funktionelle Programmierung (Haskell) und die deklarative Programmierung (Prolog) befinden. Diese Paradigmen funktionieren letztendlich auf denselben zugrunde liegenden Bibliotheken auf niedriger Ebene.

Ist die Frage in Robotik sehr unterschiedlich? Nein, ich glaube es nicht. In der Tat, wenn heute die gleichen Ideen formuliert würden, glaube ich nicht, dass sie einen roboterspezifischen Begriff (Subsums -Architektur) haben würden, da es keinen starken Unterschied zu normaler Softwarearchitektur gibt. Sie geben sogar in Ihrem letzten Absatz sowohl ein funktionales als auch ein imperatives Paradigma für die Kontrolle eines Roboters an. Ich würde jedoch eine domänenspezifische Sprache verwenden, um zu verwenden - und wiederum ist das riesige Sortiment an domänenspezifischen Sprachen ein weiterer Beweis dafür, dass mehrere Paradigmen effizient an einander angepasst werden können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit cs.stackexchange
scroll top