Guida introduttiva a CamScripter#

Panoramica#

Cos’è?#

CamScripter è uno strumento per assisterti nella scrittura e nel debug di script personalizzati per la CMUcam3. Rende possibile scrivere script utilizzando il linguaggio di programmazione Lua. Utilizzando questo linguaggio e la Lua API fornita per la CMUcam3, puoi personalizzare la fotocamera per quasi qualsiasi uso ti venga in mente. In questo tutorial ti guideremo attraverso il processo di installazione e poi svilupperemo uno script di esempio da eseguire sulla fotocamera.

Prima di iniziare#

Questo tutorial presuppone:

  • Hai già una CMUcam3

  • You’ve already gotten the camera working, using either the Quick Start Guide or the SDK installation guide

  • Hai tutto il necessario per collegare la telecamera al tuo computer

Installazione, Parte 1: Lua, comunicazione della porta seriale#

Lua#

CamScripter ti consente di programmare la CMUcam3 utilizzando il linguaggio di programmazione Lua. Prima di poterlo fare, dovremo installare questo linguaggio sul tuo computer.

  1. Download the appropriate ZIP binary. (For Windows: Lua-Windows or for other users https://luabinaries.sourceforge.net/download.html)

  2. Decomprimi il binario di Lua in C:\lua

  3. Apri un prompt dei comandi (in Windows, seleziona «Run…» dal menu Start e digita “cmd”).

  4. cd nella posizione in cui hai decompresso i file Lua. Per me, digito “cd C:lua”

  5. Digita “luax.x.exe -v” dove x è la versione di Lua

Assuming everything went smoothly in your installation, you should see the Lua version number printed out on your screen.

If possible, you should install lua from the CMUcam3 web site. If you want to recompile it on your own, you need to first patch the normal lua source to not use floating point (lua-5.1-no-fp.patch).

In Windows sotto cygwin, usa le seguenti righe per compilare:

cd src
make LUAC_T=luac.exe MYCFLAGS=-mno-cygwin MYLDFLAGS=-mno-cygwin luac.exe
...
make LUA_T=lua.exe MYCFLAGS=-mno-cygwin MYLDFLAGS=-mno-cygwin lua.exe

Java Runtime Environment (JRE)#

Per il CamScripter è necessario un Java Runtime Environment (versione 6 o superiore). Se non hai già installato un JRE, puoi scaricarne e installarne uno qui.

RXTX#

The CamScripter uses the RXTX serial communication library to communicate with the CMUcam3 over your computer’s serial port. This library will have to be installed on your computer. First, download RXTX (at least version 2.1). Version 2.1.7 is here: http://rxtx.qbang.org/pub/rxtx/rxtx-2.1-7-bins-r2.zip.

Per installare (solo Windows - per altri sistemi operativi, segui le istruzioni nel file INSTALL di rxtx):

  1. Decomprimi il download di RXTX e naviga nella cartella risultante

  2. Fai doppio clic su Windows

  3. Fai doppio clic su i368-mingw32

  4. Ora dovrai capire dove si trova il tuo Java Run-time environment. Probabilmente è in C:\Program Files\Java\jre<version number>. Il mio, ad esempio, si trova in C:\Program Files\Java\jre1.6.0_01. Copia i file rxtxSerial.dll e rxtxParallel.dll dalla cartella RXTX i368-mingw32 nella cartella jre/bin. Quindi nel mio esempio, ho messo quei due file nella cartella C:\Program Files\Java\jre1.6.0_01\bin.

Installazione, Parte 2: Eclipse#

Bene, siamo quasi pronti! Restano solo poche cose da fare.

Se non lo hai già, installa Eclipse (versione 3.2 o più recente). Puoi installarlo da http://eclipse.org/downloads. Eclipse Classic è una scelta sicura, anche se dovrebbe funzionare anche uno qualsiasi degli altri pacchetti elencati. Per installare, decomprimi semplicemente il pacchetto scelto in C:\Program Files\eclipse.

Ora che Eclipse è installato, dobbiamo installare CamScripter come plugin di Eclipse:

  1. Apri Eclipse facendo doppio clic su eclipse.exe in C:\Program Files\eclipse\

  2. Premi Invio per accettare il workspace predefinito

  3. Apri la procedura guidata Install/Update selezionando Help -> Software Updates -> Find and Install

  4. Seleziona il pulsante di opzione «Search for new features to install» e fai clic su Next.

  5. Fai clic sul pulsante «New Remote Site…»

  6. For name, enter Camscripter, and for URL enter http://cmucam.org/~juanpablo/. Click OK.

  7. Assicurati che la casella accanto a Camscripter sia selezionata e fai clic sul pulsante «Finish».

  8. Seleziona «Camscripter» come funzionalità da installare e fai clic su Next.

  9. Accetta il contratto di licenza e fai clic su Next

  10. Fai clic su Finish - Eclipse scaricherà il plug-in per te

  11. Fai clic su «Install» per installare il plug-in Camscripter.

  12. Fai clic su Yes per riavviare la Eclipse Platform

Eclipse si riavvierà quindi, con il plugin Camscripter installato per te. Per assicurarti che sia installato, seleziona Window -> Show View -> Other…

Click the plus sign next to CMUcam3, select «CamScripter», and click OK. You should see the CamScripter view at the bottom of Eclipse (the area surrounded in red). You can expand the bottom area if it is too small.

  1. Vista CamScripter

  2. Riquadro della console dove vengono visualizzati i messaggi di testo

  3. Riquadro di feedback dove vengono visualizzati messaggi di immagini e grafici

  4. Esegue codice Lua. Puoi eseguire un intero file o solo le righe di codice selezionate.

  5. Installa il codice Lua sulla scheda SD/MMC della CMUcam3

Configurazione#

Abbiamo installato tutto! Solo un paio di passaggi di configurazione e saremo pronti a programmare CamScripter.

Carica il progetto camscripter sulla fotocamera#

Now that we have everything installed, we need to load the camera with our CamScripter project. Run make on the camscripter project located in projects/camscripter (in the source code tree you checked out in Quick Start Guide), and then load the hex file onto the camera. Turn the camera off once the file is loaded.

Imposta le preferenze di CamScripter#

Ora torna a Eclipse e apri la schermata delle preferenze di CamScripter: Window –> Preferences –> CamScripter Setup.

  • Set the Luac location to point to your luacx.x.exe (where x is the Lua version) file (note the “c”) wherever you installed Lua in Installation, Part 1: Lua, Serial Port Communication.

    • Per gli interessati, luac semplicemente compila il codice lua, mentre luax.x.exe interpreta ed esegue effettivamente il codice. Stiamo compilando il codice in Eclipse, poi lo eseguiamo sulla fotocamera – da cui, luac.

  • Fornisci il nome della porta seriale a cui colleghi la fotocamera. Puoi fare clic sul pulsante «See Serial Ports» per vedere un elenco delle porte seriali disponibili.

Hello, World!#

Now that we have everything installed and configured properly, let’s tackle the obligatory Hello, World program. First, you’ll have to create a new project. Select File –> New –> Project… You’ll get a box allowing you to select the type of project you’d like to create. Double-click «General», select «Project», and click the Next button.

Assegna al tuo progetto il nome «Hello» e fai clic sul pulsante Finish. Poi crea un nuovo file facendo clic su File –> New –> File (In Eclipse 3.3 è File –> New –> Other –> General –> File). Nella casella del nome file, inserisci «hello_world.lua», con Hello come cartella superiore. Fai clic sul pulsante Finish.

Ricontrolla che la tua fotocamera sia collegata alla porta seriale del computer. Prima di accendere la fotocamera è importante comprendere le due modalità supportate dalla fotocamera:

  • Autonoma: la fotocamera non si aspetta alcuna interazione con il PC. Per impostazione predefinita la fotocamera si avvia in questa modalità.

  • Interattiva: la fotocamera riceve il codice Lua compilato da CamScripter in Eclipse e restituisce un riscontro. Per mettere la fotocamera in modalità interattiva, accendila e quando vedi il LED arancione acceso, premi il pulsante della fotocamera (hai 3 secondi per premere il pulsante). A quel punto, il LED arancione lampeggerà diverse volte per farti sapere che stiamo entrando in modalità interattiva. Se tutto è andato bene, vedrai il messaggio Welcome to CamScripter Interactive mode. Click the execute button to run a script.

Avviamo la fotocamera in modalità interattiva così possiamo eseguire il nostro primo programma Lua.

Nella finestra dell’editor, inserisci la riga di codice:

print("Hello, World!");

Salva il file e fai clic sul pulsante Execute nella vista CamScripter. E voilà!! Il tuo codice sarà passato via cavo alla fotocamera, che lo ha eseguito e ha rimandato indietro il messaggio che hai stampato.

Ora proviamo qualcosa di un po” più interessante. Aggiungi altre tre righe di codice, in modo che il tuo file hello_world.lua contenga:

print("Hello, World!");
take_picture("pic_name");
print_picture("pic_name");
print("It's a picture!");

Ora fai di nuovo clic sul pulsante Execute. Questa volta impiegherà più tempo a eseguire, poiché l’invio di immagini attraverso la porta seriale richiede parecchio tempo. Una volta terminato, però, dovresti vedere i tuoi due messaggi nell’area Console di CamScripter e l’immagine che hai scattato con la fotocamera nell’area Feedback (hai rimosso il coperchio dell’obiettivo, vero?)

You’ll notice that it’s a pretty low resolution image. The camera is set to take low resolution pictures by default in the CamScripter, as it takes quite a bit longer to send high resolution images through the serial port. However, you can change the camera to high resolution using function LuaApiFunctions.