Newsgroup: it.comp.lang.c
Titolo: Riproviamo con le architeturre a sussunzione

Scusate... ma ho beccato due perditempo che hanno trasformato un semplice 
post in un inutile flame.
Ripeto la domanda e se qualcuno vuol cortesemente rispondere mi fa una 
cortesia.
Altrimenti grazie lo stesso.
Mi occorrerebbe visionare il codice in C di un qualsiasi agente reattivo in 
un'architettura a sussunzione.
Se qualcuno ha qualche link mi fa cosa gradita.
..

Purtroppo non ne ho, l'unico consiglio generale che posso darti (ma
probabilmente lo fai gia') e' cercare qualcosa di open source, ad
esempio googlando "subsumption architecture open source".  Con un po'
di fortuna trovi delle librerie, del codice scritto per progetti
universitari, per passatempo eccetera e messi online. D'altro canto
uno degli scopi dell'open source e' proprio quello di diffondere la
conoscenza il piu' possibile, no?
Pleg


Non ho link e, a dire il vero, neanche sapevo cosa fosse
un'architettura a sussunzione. Mi sono letto tra ieri e oggi un po' di
teoria su Internet e a quanto ho capito è solo un nome coatto per una
strutturazione particolare del software (che personalmente non trovo
neppure troppo intelligente - ma tant'è..).
<se dovessi farlo io>
Per realizzarlo in C direi che è abbastanza straight-forward, non ci
sono bisogno di molti esempi: il codice di ogni singola funzione
saranno cinque/sei righe e lettura dei sensori e azionamento degli
attuatori saranno diversi per ogni hardware, per cui non vedo come un
esempio potrebbe aiutarti.
Essendo una struttura a layer, ti devi scrivere le funzioni una sopra
l'altra in ordine di astrazione (partendo dal basso o dall'alto, come
ti trovi più comodo..). A questo punto ti scrivi stub, test unitari,
simulazioni e così via per quello che ti serve (su ogni funzione,
ovviamente).
Quando hai la struttura completa le funzioni "reattive" le schiaffi
più in basso possibile (nel ciclo di lettura dei sensori, nel main, o
addirittura su un interrupt), mentre le altre a ruota in un ciclo del
main (a occhio e croce).
</se dovessi farlo io>
Se trovi qualcosa comunque scrivi che son curioso anch'io :-)
Ciao!

 post in un inutile flame.
Eh sì, vagli a spiegare che uno di quei due hai cercato di farlo fesso, 
vagli a dire che l'hai insultato gratuitamente, vagli a spiegare che, 
nonostante ti abbia abbuonato l'insulto, la cosa migliore che hai saputo 
fare è stato mettere in discussione la sua competenza.
Guarda un po' qua:
http://fscode.altervista.org/ants.html
Giusto per farti venire il dubbio che, magari magari, uno di quei due 
sapeva esattamente di cosa avevi bisogno e ti avrebbe anche aiutato, se 
tu ti fossi comportato decentemente.
Sappi che le persone sono perfettamente in grado di trovare i post su 
Usenet di quei due, per farsi un'idea di cosa sanno fare. Le persone 
sono perfettamente in grado di trovare anche i TUOI di post, per farsi 
un'idea di che tipo di persona sei.
-- 
  FSC - 
http://userscripts.org/scripts/show/59948
 
http://fscode.altervista.org
 - 
http://sardinias.com

 neppure troppo intelligente - ma tant'č..).
No. Non e' particolarmente relativo a strutturazione del software
(ovvero software engineering), quanto alla creazione di agenti autonomi.
Ovviamente ci sono aspetti *anche* di software engineering.
Per inciso il modello, come tutti i modelli, ha dei difetti, delle
critiche, modelli alternativi che risolvono alcuni difetti e ne
introducono altri. 
-- 
-riko
http://www.enrico-franchi.org/
http://rik0-techtemple.blogspot.com/


A questo punto non ho capito a cosa si riferisce il nome: a quella
struttura software per quel determinato scopo o al risultato finale
indipendentemente dalla struttura software (o a quello specifico
automa che fa *quel* tipo di cosa con *quel* tipo di hardware/
software)? Con le definizioni già non sono mai stato forte, e
purtroppo i link che trovo sono tutto meno che formali..
Grazie, ciao!

 Se qualcuno ha qualche link mi fa cosa gradita.
Vedi, grazie a te ho capito che cosa sono ste benedette
architetture a sussunzione.
Comunque, vista la tua malleabilità in termini di linguaggi e
paradigmi di programmazione:
http://www.ifi.uzh.ch/groups/ailab/people/lambri/mitbook/myrmix/myrmix.html
questo è un esempio semplice semplice di implementazione in Java
(eh... 'purtroppo' Java e C++ sono gli utensili più ut(ens)ili
per questo genere di cose).
E' un caso molto specifico di robot che mangia ed evita gli ostacoli.
C'è una guida minimale in pseudocodice:
http://www.ifi.uzh.ch/ailab/people/lambri/mitbook/myrmix/myr_pseudocode.html
e del codice Java molto C-like, se non fosse per
il concetto di classe...
http://www.ifi.uzh.ch/ailab/people/lambri/mitbook/myrmix/Subsumption.java
Non è molto, ma è qualcosa il link era contenuto nelle slides:
http://www.google.it/url?sa=t&source=web&cd=13&ved=0CCIQFjACOAo&url=http%3A%2F%2Fwww.eecs.ucf.edu%2F~lboloni%2FTeaching%2FEEL6938_2005%2Fslides%2FPresentation_RyanFitzGibbon_SubsumptionArchitecture.ppt&rct=j&q=simple%20subsumption%20architecture%20implementation&ei=2YGHTIqvCsaBOMmKzaoE&usg=AFQjCNErquYOCqkoO3esPnhwTxmPcZbCMA
-- 
Vincenzo Mercuri

 software)?
A tutti e tre, occhio e croce ;-)
L'architettura sussuntiva è un tipo di architettura reattiva che 
definisce, in maniera astratta, sia una metodologia comportamentale che 
una implementativa. Definisce una metodologia comportamentale perché si 
basa sul comportamento reattivo (stimolo / risposta) e definisce una 
metodologia implementativa perché suddivide compiti astratti di alto 
livello (come raccogliere dei campioni) in compiti più pratici di basso 
livello (come evitare un ostacolo durante l'avvicinamento ad un campione 
o durante il ritorno al deposito).
Il problema per noi programmatori moderni è che un sacco di queste cose 
ci sembrano "scontate" e ovvie anche se non ne abbiamo mai lette le 
teorizzazioni e le definizioni formali, inoltre c'è un po' di confusione 
nella terminologia (per noi il semplice fatto di scrivere un if / then / 
else rappresenta già un qualcosa di deliberativo - in soldoni, fare una 
scelta in base a un qualche parametro - eppure tale tipo di costrutto 
logico viene ovviamente utilizzato sia nelle architetture reattive che 
in quelle deliberative), infine c'è il fatto che ad un programmatore 
potrebbe non fregargliene nulla di scomporre un programma in moduli 
indipendenti, farli girare in maniera concorrente generando thread 
separati e combinando le informazioni elaborate dai singoli thread ogni 
tot cicli per decidere cosa fare da qui al prossimo aggiornamento, 
mentre per costruire un robot bisogna per forza scontrarsi con problemi 
pratici di combinazione e comunicazione delle varie parti fisiche - la 
suddivisione modulare dell'architettura aiuta quindi a rappresentare 
meglio il problema (e aiuta a trovare le soluzioni).
Il discorso è estremamente più vasto e articolato di quanto chiunque 
possa scrivere in un singolo post e i confini tra le varie definizioni 
(reattivo, deliberativo, ibrido e quant'altro) non sono poi così nette e 
distinte - tendono a sfumare l'una nell'altra nelle applicazioni pratiche.
Vedi se questi link possono aiutarti a capire meglio di cosa si tratta, 
in generale:
http://www.vincenzomanzoni.com/wiki/pmwiki.php/Robotica/08-1L2-ArchitettureDiControlloReattive
http://www.vincenzomanzoni.com/wiki/pmwiki.php/Robotica/09-1L3-ArchitettureDiControlloDeliberative


 fare č stato mettere in discussione la sua competenza.
Che noia...
.. 

 Che noia...
Facciamo progressi! :-)


 Facciamo progressi! :-)
e che cosa ci si poteva aspettare da uno che ha come
indirizzo: maremma@mail... :-)
-- 
Vincenzo Mercuri

 purtroppo i link che trovo sono tutto meno che formali..
Non ho molto da aggiungere a quello che scrive Francesco.
Se non che (*per me*) l'aspetto predominante *non* e' quello di
struttura in quanto:
1. sono abituato a lavorare con agenti software, non robot
2. ci sono tool di livello un pochetto piu' alto in cui di fatto
   l'aspetto strutturativo e' piuttosto bypassato
Ovviamente e' il mio punto di vista, non necessariamente quello
dominante o "corretto". Se vuoi, posso darti puntatori agli articoli che
hanno definito la cosa a suo tempo. Ma potrebbe non essere
particolarmente interessante spararsi un po' di articoli scientifici per
levarsi un dubbietto. :) Se ti interessa, cerco.


 purtroppo i link che trovo sono tutto meno che formali..
Non ho molto da aggiungere a quello che scrive Francesco.
Se vuoi, posso darti puntatori agli articoli che
hanno definito la cosa a suo tempo. Ma potrebbe non essere
particolarmente interessante spararsi un po' di articoli scientifici per
levarsi un dubbietto. :) Se ti interessa, cerco.
-- 



Grazie mille ad entrambi, mi sono fatto un'idea :-)
Ciao!

 Grazie mille ad entrambi, mi sono fatto un'idea :-)
Ma allora li vuoi sti articoli o no? ;)


 Ma allora li vuoi sti articoli o no? ;)
Eh, io un paio di articoli al riguardo me li leggerei volentieri, quindi 
se li linki male non fa!



Idem. Me li leggerò molto volentieri!
Ciao!


E non nascondo che interessano anche a me ;-)
-- 
"Non puoi insegnare qualcosa ad un uomo.
  Lo puoi solo aiutare a scoprirla dentro di sé." (G. Galilei)
Vincenzo Mercuri


Poi c'e' anche intelligence without reasoning.



Anche questi due sono in realà lo stesso articolo. Il link
diretto al pdf però è:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.110.6657&rep=rep1&type=pdf



Chiedo scusa per i link a pagamento, io (per fortuna) ho gli abbonamenti
e di conseguenza sono abituato a cercare direttamente in mezzo alle
banche dati.


 banche dati.
Non devi scusarti, anzi ti ringrazio, almeno ora so da dove
cominciare se voglio studiare queste architetture.
Grazie ancora.




Grazie per i link/riferimenti, mi torneranno utili di sicuro!
