21
1/42 http:\\homes.dsi.unimi.it\borghese\ A.A. 2006-2007 Robotica e Animazione Digitale Introduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi 2/42 http:\\homes.dsi.unimi.it\borghese\ A.A. 2006-2007 Cos'è Open-R The OPEN-R SDK is a cross-development environment based on gcc (C++) with which you can make software that works on AIBO (ERS-7, ERS-210, ERS-220, ERS-210A, and ERS-220A). E' un SDK per la programmazione degli Aibo in C++ basato sui tool di GNU/Linux (disponibile in Windows e MacOs sotto il semi-emulatore Linux Cygwin). Si basa sui concetti di programmazione concorrente e parallela. Permette un controllo assoluto sul robot.

E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

1/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Robotica e Animazione DigitaleIntroduzione

Prof. Alberto BorgheseDott. Gilberto Decaro

Dott. Fabio MelziCarlo Colombi

2/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Cos'è Open-R

The OPEN-R SDK is a cross-development environment based on gcc (C++) with which you can make software that works on AIBO (ERS-7, ERS-210, ERS-220, ERS-210A, and ERS-220A).

E' un SDK per la programmazione degli Aibo in C++

basato sui tool di GNU/Linux (disponibile in Windows

e MacOs sotto il semi-emulatore Linux Cygwin).

Si basa sui concetti di programmazione concorrente

e parallela.

Permette un controllo assoluto sul robot.

Page 2: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

3/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Trovare Open-R

Sony has discontinued the OPEN-R SDK and is no longer distributing the system binaries and header files. An useful guide is available athttp://www.cs.cmu.edu/~tekkotsu/openr-install.htmlScaricare l'ambiente di sviluppo (SDK)Nell'area Download sono presenti questi file, seguiti dalla guida per l’installazione:• build-aibo-toolchain-3.3.6-r1.sh

• gcc-3.3.6.tar.bz2 (22.9MB, do not unzip)

• binutils-2.15.tar.bz2 (11.0MB, do not unzip)

• newlib-1.15.0.tar.gz (10.2MB, do not unzip)

• OPEN_R_SDK-1.1.5-r5.tar.gz (11.9MB, do not unzip)

4/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Da cosa è composto Open-R

• Open-r è basato sui tool di sviluppo base forniti con Linux.

– Gcc: compilatore C/C++ GNU

– Binutils: utility per la gestione dei file.

– Newlib: libreria standard C embedded, sviluppate

da RedHat

Page 3: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

5/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Da cosa è composto Open-R

• E' necessario creare un ambiente di sviluppo (cross-develop) per processori MIPS in ambiente Linux.

6/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Da cosa è composto Open-R

Essendo basati su tool GNU distribuiti con GPL, è possibile creare un ambiente di sviluppo per i seguenti sistemi:

Linux: standardWindows: con emulatore (Cygwin)MacOs: con emulatore (Cygwin)

Page 4: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

7/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Supporto per i programmi

Sistema Operativo: Aperios, Real Time sorgenti non disponibili.Supporto per dati e programmi: Aibo Programmable Memory Stick, rosa, da 8 o 16MB

SW applicativo

8/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Terminologia Open-R

• Oggetto Open-R: thread di elaborazione concorrente realtime.

• Comunicazione inter-object: sistema di comunicazione tra

oggetti Open-R.

• Servizio: gate (porta) di comunicazione di un oggetto Open-R.

– Observer: servizio in ricezione.

– Subject: servizio in spedizione.

Page 5: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

9/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Oggetti Open-R

• Gli oggetti Open-R sono simili a thread realtime in ambiente Linux, eseguiti in parallelo.

• Ereditano dalla classe OObject.

• Oggetti di sistema (e.g.

OVirtualRobotComm,OVirtualRobotAudioComm, IPStack)

• Oggetti creati dall’Utente

10/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

OObject.hclass OObject {

public:

OObject();

virtual ~OObject();

void Init (const OSystemEvent& event);

void Start (const OSystemEvent& event);

void Stop (const OSystemEvent& event);

void Destroy(const OSystemEvent& event);

virtual OStatus DoInit (const OSystemEvent& event);

virtual OStatus DoStart (const OSystemEvent& event);

virtual OStatus DoStop (const OSystemEvent& event);

virtual OStatus DoDestroy(const OSystemEvent& event);

Page 6: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

11/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

OObject.h

protected:

OID myOID_;

OStatus RegisterServiceEntry(const OServiceEntry& entry, const char* name);

private:

static OObjectManagerProxy objectManager_;

static OServiceManagerProxy serviceManager_;

// These method are forbidden.

OObject(const OObject&);

OObject& operator=(const OObject&);

};

12/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Comunicazione inter-object

Gli oggetti comunicano tra loro (e con gli oggetti di sistema) mediante:

Memoria condivisa (classe RCRegion)

Scambio di messaggi (tipi predefiniti, struct, array,

oggetti non polimorfici)

Page 7: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

13/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Servizi•Ogni oggetto offre dei servizi di spedizione e ricezione dei messaggi (gate):

•Servizi subject: spediscono il messaggio verso observer, ricevono

Assert Ready da parte di observer.

•Servizi observer: ricevono un messaggio spedito da un subject,

spediscono Assert Ready ai subject.

Sintassi dei servizi:

<nome oggetto Open-R>.<nome del servizio>.<tipo di dato

scambiato>.

14/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Classi per la comunicazione

Classi per i Subject

Classe OSubject: classe per la gestione runtime dei servizi subject dell'oggetto; offre metodi utili alla loro gestione.

Classe OReadyEvent: oggetto passato come parametro alle entry point invocate al ricevimento di un Assert Ready.

Classi per gli Observer

Classe Oobserver: classe per la gestione runtime dei servizi observer dell'oggetto.

Classe ONotifyEvent: oggetto passato come parametro all'entry point invocata al ricevimento di un messaggio; contiene tra i vari campi il messaggio stesso.

Page 8: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

15/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Esempi di comunicazione

• Esempio spedizione messaggio:

• subject[sbjMotionControl]

->SetData(&mStandCommand,sizeof(Motion::MotionCommand));

subject[sbjMotionControl]->NotifyObservers();

• Esempio ricezione messaggio:

• void IRSensor::Sensing(const ONotifyEvent& event){

OSensorFrameVectorData* sensorVec =

reinterpret_cast<OSensorFrameVectorData*>(const_cast<void*>(even

t.Data(0)));

...

observer[event.ObsIndex()]->AssertReady();

16/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

stub.cfg

Dichiara i servizi offerti dall’Oggetto in compilazione.

ObjectName: GeneraMoveNumOfOSubject: 1NumOfOObserver: 1Service: "GeneraMove.MotionControl.MotionCommand.S",

null, Ready()Service: "GeneraMove.DummyObserver.INT.O", null, null

Extra: TimerEnd()

.O sta per Observer.

.S sta per Subject.

Page 9: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

17/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Tipi di Entry Point

Tipi di Entry Point di un oggetto Open-R:Standard: DoInit(), DoStart(), DoStop(), DoDestroy().Dei servizi: Ready().Extra Entry Point TimerEnd().

18/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

CONNECT.CFG

Definisce i canali di comunicazione tra gli Oggetti eseguiti mettendo in relazione i vari servizi.Inserito nella directory:OPEN-R\MW\CONF.Caricato all’avvio da Aperios.

# GeneraMove <--> Motion

#

GeneraMove.MotionControl.MotionCommand.S MotionObject.Control.MotionCommand.O

Page 10: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

19/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

OS da caricare

3 tipi di sistema utilizzabili WBASIC: senza accesso alla rete WirelessWLAN: con accesso alla rete WirelessWCONSOLE: con rete Wireless e console Telnet per il debug (porta 59000)

Vengono scritte la prima volta sulla memory stick.

20/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Ormai tutti siamo dotati di un computer portatile con una schedawireless incorporata, Ora andremo a spiegare come configurare una connessione Ad Hoc (peer-to-peer) tra il nostro computer e AIBO con caricato il software W3AIBO (reperibile su http://homes.dsi.unimi.it/~borghese/Research/LinesResearch/Robotics/AIBO/Software/W3AIBOmodified.tar.gz )

permettendo così di monitorare il log di debug creato da AIBO tramite TELNET e visualizzare tramite un browser le immagini della telecamera di AIBO

Modalità configurazione accessomodalità Ad-hoc

Page 11: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

21/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Come prima cosa visualizziamo le reti disponibili per la connessione, e andiamo a cliccare su “cambia impostazioni avanzate”.

1

22/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Nel nuovo pannello aperto dobbiamo andare a creare la connessione ad Hoc, clicchiamo quindi su “Reti senza fili”

2

Page 12: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

23/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Clicchiamo su aggiungi

3

24/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

4

Compiliamo le informazioni richieste come indicato nella figura:

Nome della rete: RETEAIBO

Autenticazione: aperto

Cifratura dati: disabilitata

Spuntare l’opzione in basso per far riconoscere che è una connessione ad hoc.

Page 13: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

25/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

6

5Chiusa la finestra precedente ritorniamo nelle impostazioni generali e con doppio click su “protocollo internet(TCP/IP)”andiamo a modificare l’indirizzo IP della nostra scheda.

26/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

7

Inseriamo l’indirizzo IP da noi scelto 192.168.3.1 e subnetmask 255.255.255.0

E confermiamo la nostra scelta.

Page 14: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

27/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

8

Ora dovremmo poter visualizzare la rete appena creata.

Viene segnata come “non connesso”perché nessun AIBO è al momento connesso alla rete, ma comunque questa è attiva e pronta a ricevere connessioni.

28/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

9

Ora possiamo modificare le impostazioni relative alla connessione da parte di AIBO.

All’interno della memoryStickci posizioniamo nella cartella OPEN-R\SYSTEM\CONF e apriamo il file wlanconf.txt

Page 15: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

29/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Andiamo a modificare il file con i parametri corretti per la connessione con il PC

HOSTNAME: il nome dell'AIBO sul network stabilito

ETHER IP: l'indirizzo IP del robot

ETHER NETMASK: la maschera della subnet

IP GATEWAY: l'indirizzo IP del gateway in uso

ESSID: il nome della rete a cui si vuole collegare AIBO

WEPENABLE: se impostato a 1 questo parametro attiva la crittograa WEP in caso contrario lo si lascia a 0

APMODE: questo parametro specifica la tipologia di rete utilizzata per connettersi e ha 3 settaggi: 0 per ad-hoc, 1 per infrastruttura e 2 per rilevare la modalità automaticamenteCHANNEL: canale usato nella modalità ad-hoc il suo valore può variare da 1a 11Altri parametri possibili ma non utilizzati

30/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Posizionare su ON l’interruttore WLANsugli AIBO che all’accensione si collegherà alla nostra rete ad hoc.

Page 16: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

31/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

I due principali utilizzi sono tramite:

-TELNET, per monitorare i log di AIBO.

“telnet IPAIBO 59000”

IPAIBO nel nostro caso è 192.168.3.2

-Browser per visualizzare le immagini catturate da aibo“http://IPAIBO:60080/”

32/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Configurazione Rete WiFi modalità Access Point

WLANCONF.TXT Sulla memory stick nella directory: OPEN-R/SYSTEM/CONF

HOSTNAME = AIBOETHER_IP = 172.16.1.192ETHER_NETMASK = 255.255.255.0IP_GATEWAY = 172.16.1.180ESSID = AibonetWEPENABLE = 1WEPKEY = AIBO2APMODE = 2CHANNEL = 3#DNS_SERVER_1=10.0.1.1#DNS_DEFDNAME=example.net#USEDHCP = 1

Page 17: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

33/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Configurazione Rete WiFi

HOSTNAME: il nome dell’Aibo in rete (massimo 8 caratteri).ETHER_IP: indirizzo IP dell’Aibo (da impostare nel caso non venga utilizzato il DHCP).ETHER_NETMASK: specifica la subnetmask dell’Aibo.IP_GATEWAY: l’indirizzo IP del Gateway.ESSID: il nome della rete Wireless a cui accedere (massimo 32 caratteri).WEPENABLE: 0 disattiva la cifratura dei dati WEP, 1 la attiva.WEPKEY: chiave di cifratura da utilizzare nel caso WEP sia attivato. E’ supportato il WEP64 (chiave a 40 bit o 5 caratteri) e WEP128 (chiave a 104bit o 13 caratteri). APMODE: specifica la modalità di rete Wireless da utilizzare: 0 per la modalità AdHoc, 1 per la modalità Infrastructured, 2 per il rilevamento automatico.

34/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Configurazione Rete WiFi

CHANNEL: cancale di comunicazione Wireless da utilizzare nella modalità Ad Hoc (sono permessi I canali compresi tra 1 e 11); per usare più Aibo in modalità Ad Hoc è necessario configurare entrambi sullo stesso canale.DNS_SERVER: specifica l’IP del server DNS da utilizzare (da specificare se non viene utilizzato il DHCP).DNS_DEFDNAME: specifica il nome di dominio di default.USEDHCP: 0 disabilita il DHCP, 1 lo abilita.

Page 18: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

35/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Debugging

Macro: OSYSDEBUG((...)); equivalente ad una printf di C.

telnet <ip aibo> 59000 per la lettura degli output di OSYSDEBUG.-DOPENR_DEBUG:flag di compilazione per attivare la macro OSYSDEBUG(());

Se si hanno crash del processore (e.g. memory violation), viene salvato lo stato del processore nel file emon.log.

36/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Libreria “Motion” della Carnegie MellonUseremo la libreria di di gestione dei movimenti della Carnegie Mellon (www.cmu.edu).

Sviluppata per la loro squadra di RobocupBasata su cinematica inversa Ottimizzata con algoritmi geneticiGestisce tutti i servo motori dell'Aibo, il sottosistema audio e i LED

Page 19: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

37/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Libreria Motion della Carnegie

Mellon• Sul sito dell'Aislab (ais-lab.dsi.unimi.it) sono

presenti:

Sorgenti dell'oggetto

Manuale di utilizzo

38/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Motion della Carnegie MellonOffre il servizio observer MotionObject.Control.MotionCommand.O per l'esecuzione di comandi di movimento.

I comandi di movimento sono specificati nella struct MotionCommand (descritta nel

file MotionInterface.h nella directory dell'oggetto Motion). Permette di specificare:

Direzione e velocità di spostamento dell'Aibo.

Movimento della testa.

Accensione dei LED (utili per Debug o per fornire maggiori informazioni di

esecuzione).

Suono di file audio predefiniti.

L'oggetto Motion non fornisce feed-back:

al ricevimento di un comando, manda un Assert Ready, quindi esegue il comando

fino al ricevimento di un altro comando.

Page 20: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

39/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Esempio: GeneraMove

Oggetto GeneraMoveUtilizza gli oggetti:

Motion: dellaCarnegie Mellon per i movimentiPowerMonitor: per la gestione dell'alimentazione del caneShMemMgr: utilizzato internamente da Motion per la gestione della memoria condivisa.

Alla pressione del sensore posteriore dell'Aibo effettua un tiro di testa.

40/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Esempio: GeneraMove

Page 21: E 01 Introduzione - unimi.itIntroduzione Prof. Alberto Borghese Dott. Gilberto Decaro Dott. Fabio Melzi Carlo Colombi A.A. 2006-2007 2/42 http:\\homes.dsi.unimi.it\∼borghese\ Cos'è

41/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Esempio: Compilazione

•Nella root del progetto digitare:

•Make all

•Compila tutti gli oggetti del progetto

•Make install

•Installa tutti gli oggetti nella directory MS

42/42 http:\\homes.dsi.unimi.it\∼borghese\A.A. 2006-2007

Esempio: Installazione

La directory MS contiene l'albero delle directory da copiare nella memorystick.

Una volta copilato e installato il progetto (make install) èsufficiente copiare il contenuto di MS nella memorystick