Domanda

Il architettura subsumption , proposta da Rodney Brooks nel 1986, è un "bottom-up" approccio, in cui i robot sono progettati utilizzando semplici modelli gerarchici. Questi modelli si basano sui e sussumono moduli inferiori per formare un prodotto finale. Ad esempio, un robot può essere dato un modulo di "trovare apertura", che viene sussunto da un modulo più astratto "trovare porta", che è poi si sussunti da un modulo di "uscire dal campo di gioco".

Ora, ovviamente, in un design più "object-oriented", che avrebbe potuto iniziare il progetto con il "uscire dal modulo campo di gioco", ma per amor di discussione, assumere alcuni dei componenti più primitive (come "funzioni ") probabilmente riutilizzati in altri concetti più elevati.

Comprendendo che l'applicazione del robot in un linguaggio procedurale (o uno funzionale, per questo) potrebbe essere il più semplice, ma è controproducente cercare di concepire un robot basato su architettura sussunzione in un paradigma di programmazione orientata agli oggetti? (Rendendosi conto anche che è forse difficile da pesare un paradigma di ingegneria del software contro uno di robotica) Per ottenere una soluzione, v'è una qualche forma di "adattatore" che può essere implementata per aumentare l'efficacia dell'utilizzo di ciò che può essere di due paradigmi contrastanti?

È stato utile?

Soluzione

Vorrei generalizzare questo in uno scenario più comune. Questa Credo senso poiché i particolari dell'architettura sussunzione non sono forse un aspetto primario nella questione (e gli stessi problemi si verificano in campi non robotici pure).

In archtitecture software generale, v'è un approccio bidirezionale, o multi-paradigma di approccio, come nella questione. Lo strato più basso di un ambiente operativo è generalmente scritto in fondo. bit di codice molto specifiche vengono scritti molto specifici elementi hardware driver nel sistema. Questi sono poi combinati per formare componenti di livello superiore. Ho il sospetto che potremmo facilmente descrivere questo come un approccio sussunzione se ci limitiamo a descrivere il nostro robot come il sistema stesso, e gli obiettivi ad aspetti specifici di controllo di tale sistema. Anche se non sono sicuro che è improtant di farlo.

Dalle top-down maggior parte delle applicazioni sono scritte in linguaggi di livello superiore, o descritta in termini di una macchina astratta. Questo è abbastanza lontana dal fondo maggior parte delle biblioteche che saranno effettivamente facendo il lavoro.

Ad un certo punto questi due strati devono soddisfare - in realtà si incontrano in molte località in una varietà di scenari. Questo dove si deve "adattarsi" gli strati di essere adatto per l'altro strato. Il termine "adattatore" qui è corretta al 100%. V'è infatti un modello di software chiamato "adattatore", che viene utilizzato per questo scopo.

A parte adattatori specifici si può effettivamente considerare l'intera toolchain di alcuna programmazione moderna. Compilatore stesso, insieme con il liner e un'esecuzione VM, sono l'interfaccia principale tra i due strati. Cioè, un linguaggio di alto livello è scritto in un dominio, e il compilatore è quello che consente di lavorare nei domini di livello inferiore.

Se siete alla ricerca specificamente per effectivness paradigma, si consideri che esistono linguaggi di alto livello per la programmazione imperativa (C ++), programmazione funzionale (Haskell), e la programmazione dichiarativa (Prolog). Questi paradigmi tutti definitiva lavoro sulle stesse librerie di basso livello sottostanti.

È la domanda in robotica molto diverso? No, non lo credo. Infatti, se le stesse idee sono state formulate oggi non credo che avrebbero avuto un termine specifico robotico (architettura sussunzione) in quanto non v'è una forte differenza rispetto normale architettura software. È anche indicare nel tuo ultimo punto sia un paradigma funzionale e indispensabile per il controllo di un robot. Vorrei però usare un linguaggio specifico dominio da utilizzare -. E ancora, il vasto assortimento di linguaggi specifici del dominio è un'ulteriore prova che più paradigmi possono essere efficacemente adattati gli uni agli altri

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a cs.stackexchange
scroll top