Aan de slag met CamScripter#
Overzicht#
Wat is het?#
De CamScripter is een hulpmiddel om je te helpen bij het schrijven en debuggen van aangepaste scripts voor de CMUcam3. Het maakt het mogelijk scripts te schrijven met de programmeertaal Lua. Met behulp van deze taal en de meegeleverde Lua API voor de CMUcam3 kun je de camera aanpassen voor bijna elk gebruik dat je kunt bedenken. In deze tutorial leiden we je door het installatieproces en ontwikkelen we vervolgens een voorbeeldscript om op de camera uit te voeren.
Voordat je begint#
Deze tutorial gaat ervan uit:
Je hebt al een CMUcam3
You’ve already gotten the camera working, using either the Quick Start Guide or the
SDK installation guideJe hebt alles wat nodig is om de camera op je computer aan te sluiten
Installatie, deel 1: Lua, seriële-poortcommunicatie#
Lua#
Met de CamScripter kun je de CMUcam3 programmeren met de programmeertaal Lua. Voordat we dat kunnen doen, moeten we deze taal op je computer installeren.
Download the appropriate ZIP binary. (For Windows: Lua-Windows or for other users https://luabinaries.sourceforge.net/download.html)
Pak de Lua-binary uit naar
C:\luaOpen een opdrachtprompt (selecteer in Windows “Run…” in het Start-menu en typ ‘cmd’).
cd naar waar je ook de Lua-bestanden hebt uitgepakt. Bij mij typ ik ‘cd C:lua’
Typ ‘luax.x.exe -v’ waarbij x de Lua-versie is
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).
Gebruik in Windows onder cygwin de volgende regels om te compileren:
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)#
Er is een Java Runtime Environment (versie 6 of hoger) nodig voor de CamScripter. Als je nog geen JRE hebt geïnstalleerd, kun je er hier een downloaden en installeren.
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.
Om te installeren (Alleen Windows - voor andere besturingssystemen, volg de instructies in het rxtx INSTALL-bestand):
Pak de RXTX-download uit en navigeer naar de resulterende map
Dubbelklik op Windows
Dubbelklik op i368-mingw32
Nu moet je uitzoeken waar je Java Run-time environment zich bevindt. Deze staat waarschijnlijk in
C:\Program Files\Java\jre<version number>. De mijne bevindt zich bijvoorbeeld inC:\Program Files\Java\jre1.6.0_01. Kopieer de bestandenrxtxSerial.dllenrxtxParallel.dlluit de RXTX i368-mingw32-map naar de mapjre/bin. In mijn voorbeeld plaats ik die twee bestanden dus in de mapC:\Program Files\Java\jre1.6.0_01\bin.
Installatie, deel 2: Eclipse#
Oké, we zijn bijna klaar om te beginnen! Nog een paar dingen te doen.
Als je het nog niet hebt, installeer Eclipse (versie 3.2 of nieuwer). Je kunt het installeren vanaf http://eclipse.org/downloads. Eclipse Classic is een veilige keuze, hoewel elk van de andere vermelde pakketten ook zou moeten werken. Om te installeren, pak je het door jou gekozen pakket eenvoudig uit in C:\Program Files\eclipse.
Nu Eclipse is geïnstalleerd, moeten we de CamScripter als een Eclipse-plug-in installeren:
Open Eclipse door te dubbelklikken op eclipse.exe in
C:\Program Files\eclipse\Druk op Enter om de standaardworkspace te accepteren
Open de Install/Update-wizard door Help -> Software Updates -> Find and Install te selecteren
Selecteer het keuzerondje “Search for new features to install” en klik op Next.
Klik op de knop “New Remote Site…”
For name, enter Camscripter, and for URL enter
http://cmucam.org/~juanpablo/. Click OK.Zorg dat het vakje naast Camscripter is aangevinkt en klik op de knop “Finish”.
Selecteer “Camscripter” als de te installeren functie en klik op Next.
Accepteer de licentieovereenkomst en klik op Volgende
Klik op Finish - Eclipse downloadt de plug-in voor je
Klik op “Install” om de Camscripter-plug-in te installeren.
Klik op Yes om het Eclipse Platform opnieuw te starten
Eclipse start vervolgens opnieuw op, met de Camscripter-plug-in voor je geïnstalleerd. Selecteer Window -> Show View -> Other… om te controleren of deze is geïnstalleerd.
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.
CamScripter-weergave
Consolepaneel waar tekstberichten worden weergegeven
Feedbackpaneel waar beeld- en grafische berichten worden weergegeven
Voert Lua-code uit. Je kunt ofwel een heel bestand uitvoeren of alleen geselecteerde coderegels.
Installeert Lua-code op de SD/MMC-kaart van de CMUcam3
Installatie#
We hebben alles geïnstalleerd! Nog een paar installatiestappen en dan gaan we de CamScripter programmeren.
Laad het camscripter-project op de camera#
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.
CamScripter-voorkeuren instellen#
Ga nu terug naar Eclipse en open het CamScripter Preferences-scherm: 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.Voor de geïnteresseerden: luac compileert simpelweg de lua-code, terwijl luax.x.exe de code daadwerkelijk interpreteert en uitvoert. We compileren de code in Eclipse en voeren die vervolgens uit op de camera – vandaar, luac.
Geef de naam op van de seriële poort waarop je je camera aansluit. Je kunt op de knop “See Serial Ports” klikken om een lijst met beschikbare seriële poorten te zien.
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.
Geef je project de naam “Hello” en klik op de knop Finish. Maak vervolgens een nieuw bestand door te klikken op File –> New –> File (In Eclipse 3.3 is dat File –> New –> Other –> General –> File). Voer in het bestandsnaamvak “hello_world.lua” in, met Hello als bovenliggende map. Klik op de knop Finish.
Controleer nogmaals of je camera is aangesloten op de seriële poort van je computer. Voordat je de camera aanzet, is het belangrijk de twee modi te begrijpen die de camera ondersteunt:
Standalone: de camera verwacht helemaal geen interactie met de pc. Standaard start de camera in deze modus.
Interactief: de camera ontvangt gecompileerde Lua-code van CamScripter in Eclipse en geeft feedback terug. Om de camera in de interactieve modus te zetten, zet je hem aan en wanneer je de oranje LED ziet branden, druk je op de cameraknop (je hebt 3 seconden om op de knop te drukken). Op dat moment knippert de oranje LED enkele keren om je te laten weten dat we de interactieve modus binnengaan. Als alles goed is gegaan, zie je het bericht Welcome to CamScripter Interactive mode. Click the execute button to run a script.
Laten we de camera in de interactieve modus starten zodat we ons eerste Lua-programma kunnen uitvoeren.
Voer in het editorvenster de coderegel in:
print("Hello, World!");
Sla het bestand op en klik op de knop Execute in de CamScripter-weergave. En voilà!! Je code is over de draad naar de camera gegaan, die het heeft uitgevoerd en het bericht dat je hebt afgedrukt heeft teruggestuurd.
Laten we nu iets interessanters proberen. Voeg drie extra coderegels toe, zodat je bestand hello_world.lua het volgende bevat:
print("Hello, World!");
take_picture("pic_name");
print_picture("pic_name");
print("It's a picture!");
Klik nu opnieuw op de knop Execute. Het uitvoeren zal deze keer langer duren, aangezien het verzenden van afbeeldingen via de seriële poort behoorlijk tijdrovend is. Zodra het klaar is, zou je echter je twee berichten in het Console-gebied van de CamScripter moeten zien, en de afbeelding die je met de camera hebt gemaakt in het Feedback-gebied (je hebt de lensdop toch wel verwijderd?)
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.
Nuttige links#
De CamScripter is nu volledig geïnstalleerd en geconfigureerd, en je hebt een klein voorbeeld gezien dat de functionaliteit ervan laat zien. Als je enkele grotere voorbeelden wilt zien die de Camscripter gebruiken, bekijk dan de voorbeeldprogramma’s die zijn opgenomen in de map camscripter/examples. Een paar andere opmerkingen en links die je kunnen helpen:
De CamScripter Lua API beschrijft de CMUcam3-functies die je in je Lua-programma’s kunt gebruiken om de acties van de CMUcam3 te besturen.
Hier zijn enkele links om je op weg te helpen met Lua. Merk op dat externe bibliotheken zoals de string- en math-bibliotheken niet zijn inbegrepen in de versie van Lua die op de CMUcam3 is geïnstalleerd. Ze moesten worden verwijderd om de Lua-interpreter in de beperkte ruimte op de CMUcam3 te laten passen.
Lua Tutorial Een tutorial om je op weg te helpen.
Lua Reference Manual: Volledige documentatie van Lua.
Lua Wiki Een handige plek om antwoorden te vinden. Voorbeeldcode, FAQ en links naar andere bronnen.
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.