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 guideHai 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.
Download the appropriate ZIP binary. (For Windows: Lua-Windows or for other users https://luabinaries.sourceforge.net/download.html)
Decomprimi il binario di Lua in
C:\luaApri un prompt dei comandi (in Windows, seleziona «Run…» dal menu Start e digita “cmd”).
cd nella posizione in cui hai decompresso i file Lua. Per me, digito “cd C:lua”
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):
Decomprimi il download di RXTX e naviga nella cartella risultante
Fai doppio clic su Windows
Fai doppio clic su i368-mingw32
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 inC:\Program Files\Java\jre1.6.0_01. Copia i filerxtxSerial.dllerxtxParallel.dlldalla cartella RXTX i368-mingw32 nella cartellajre/bin. Quindi nel mio esempio, ho messo quei due file nella cartellaC:\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:
Apri Eclipse facendo doppio clic su eclipse.exe in
C:\Program Files\eclipse\Premi Invio per accettare il workspace predefinito
Apri la procedura guidata Install/Update selezionando Help -> Software Updates -> Find and Install
Seleziona il pulsante di opzione «Search for new features to install» e fai clic su Next.
Fai clic sul pulsante «New Remote Site…»
For name, enter Camscripter, and for URL enter
http://cmucam.org/~juanpablo/. Click OK.Assicurati che la casella accanto a Camscripter sia selezionata e fai clic sul pulsante «Finish».
Seleziona «Camscripter» come funzionalità da installare e fai clic su Next.
Accetta il contratto di licenza e fai clic su Next
Fai clic su Finish - Eclipse scaricherà il plug-in per te
Fai clic su «Install» per installare il plug-in Camscripter.
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.
Vista CamScripter
Riquadro della console dove vengono visualizzati i messaggi di testo
Riquadro di feedback dove vengono visualizzati messaggi di immagini e grafici
Esegue codice Lua. Puoi eseguire un intero file o solo le righe di codice selezionate.
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.
Link utili#
CamScripter è ora completamente installato e configurato, e hai visto un piccolo esempio che ne mostra le funzionalità. Se vuoi vedere alcuni esempi più grandi che utilizzano Camscripter, dai un’occhiata ai programmi di esempio inclusi nella directory camscripter/examples. Alcune altre note e link che potrebbero aiutarti:
La Lua API di CamScripter descrive le funzioni della CMUcam3 che puoi utilizzare nei tuoi programmi Lua per controllare le azioni della CMUcam3.
Ecco alcuni link per aiutarti a iniziare a usare Lua. Nota che le librerie esterne come le librerie string e math non sono incluse nella versione di Lua installata sulla CMUcam3. Hanno dovuto essere rimosse per far entrare l’interprete Lua nello spazio limitato della CMUcam3.
Tutorial di Lua Un tutorial per aiutarti a iniziare.
Manuale di riferimento di Lua: Documentazione completa di Lua.
Lua Wiki Un posto utile per trovare risposte. Codice di esempio, FAQ e link ad altre risorse.
LuaEclipse is a useful Eclipse plug-in that you may find helpful. It provides syntax highlighting and other facilities to make writing Lua code easier.