5 agosto 2010
Procrastinazione informatica
Giornata all’insegna della procrastinazione quella di oggi. Il codice per i controller e’ stato sistemato ieri ed ora sono in attesa della prossima sessione di test per metterlo alla prova. Oggi, causa maltempo piuttosto serio, le prove sul campo sono saltate. Cosi’ ne ho approfittato per preparare qualche script Matlab da utilizzare per l’analisi automatica dei files di log generati dai MAVs (piu’ che altro script che si occupano di riformattare tutti i dati raccolti in una maniera piu’ organizzata e riutilizzabile), fare qualche modifica di poco conto al simulatore e provare a risolvere ancora una volta l’ormai annosa questione con la WNDA 3100 e piu’ in generale la compilazione del codice per i controller.

Per fare il quadro della situazione riepilogo brevemente le “problematiche” software che sto affrontando quando si tratta di programmare i controller. Innanzitutto, il processore utilizzato sui mini-computer installati sui MAVs e’ un ARM. Il che implica che i controller, scritti in C++, devono essere compilati appunto per processori ARM. Essendo che il PC che utilizzo gira con un classico processore Intel si rende necessario il ricorso a tool di cross-compiling. Questi tool sono molto diffusi in ambiente Linux, meno su Mac, decisamente poco su Windows. Ragion per cui la ragazza con cui lavoro mi ha passato una copia di una sua macchina virtuale Linux che ho installato sul mio computer, con gia’ installati/configurati tutti gli strumenti necessari per il cross-compiling. Il problema e’ che Linux non e’ certo famoso per la portabilita’, cosi’ che la virtual machine in questione ha problemi da un punto di vista grafico (icone e font giganteschi e che si risettano in maniera random dopo mie modifiche, pezzi di desktop che di tanto in tanto spariscono, ecc…), non rendendola particolarmente confortevole per elaborare il codice. Ho provato ad installare ex-novo una nuova macchina virtuale Linux, sono riuscito ad installare i tool per il cross-compiling, ma mi sono poi arenato sulla configurazione dell’adattatore Wi-Fi che, pensavo, fosse un elemento fondamentale nel contesto dell’intero setup. Il trasferimento dei binari dal computer ai MAVs avviene infatti tramite connessione senza fili, sfruttando una rete Wi-Fi dedicata che ciascun MAV crea automaticamente al momento dell’accensione. Con l’adattatore ci si allaccia a questa rete, ci si connette via SSH al robot di turno e si trasferiscono i dati. Semplice e lineare. Il problema e’ che Linux in virtual machine via Parallels sembra non vedere in alcun modo l’adattatore wireless del Mac, cosi’ che e’ necessario utilizzare un dongle esterno. Su quest’ultima tematica oggi ho avuto la folgorazione. Perche’ non allacciarmi alla rete wireless da MacOS ed interagire con i robot via terminal? Ho fatto qualche prova e tutto e’ filato liscio. A patto che io crei la rete wireless prima di accendere i robot, altrimenti il Mac non mi lascia creare la rete in quanto ne vede gia’ una presente con il medesimo nome (devo controllare se creare la rete con comandi del terminale mi permetta o meno di girare attorno a questa issue). Il problema consiste comunque nel fatto che in laboratorio mi devo connettere ad Internet via wireless, non essendoci un socket Ethernet vicino alla mia scrivania. Quindi, nel momento in cui devo trasferire file, mi tocca staccare tutto, cambiare IP, ecc… e poi rifare il procedimento inverso una volta finito. Niente di insormontabile, ma comunque una discreta rogna. E comunque devo utilizzare sia MacOS che la macchina virtuale. Nel tentativo di risolvere la questione in maniera definitiva ho provato oggi ad installare i tool di cross-compiling su MacOS (seguendo le istruzioni trovate qui) (approfitto pure per segnalare quest’altra pagina, che contiene i codici ASCII di alcuni caratteri strani che spesso risultano essere utili), ma non sono riuscito nell’impresa, causa problemi di warnings being treated as errors in fase di compilazione che non sono stato in grado di risolvere neppure agendo manualmente sui Makefiles.
Morale della favola, ancora mi trovo a dover utilizzare la macchina virtuale Linux per il compiling, trasferire sorgenti e binari via Parallels, e poi attivare/disattivare/riconfigurare l’AirPort ogni qualvolta devo uploadare dei nuovi controller. Una situazione non certo terribile, ma che mi piacerebbe riuscire a risolvere eliminando del tutto (almeno) la necessita’ di utilizzare la virtual machine.
Comments(2)


Ma usare VMWARE?
Mah… VMWare non l’ho mai usato, pero’ il problema non mi sembra dovuto a Parallels (per quanto non possa escluderlo a priori).