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 guide

  • Je 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.

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

  2. Pak de Lua-binary uit naar C:\lua

  3. Open een opdrachtprompt (selecteer in Windows “Run…” in het Start-menu en typ ‘cmd’).

  4. cd naar waar je ook de Lua-bestanden hebt uitgepakt. Bij mij typ ik ‘cd C:lua’

  5. 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):

  1. Pak de RXTX-download uit en navigeer naar de resulterende map

  2. Dubbelklik op Windows

  3. Dubbelklik op i368-mingw32

  4. 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 in C:\Program Files\Java\jre1.6.0_01. Kopieer de bestanden rxtxSerial.dll en rxtxParallel.dll uit de RXTX i368-mingw32-map naar de map jre/bin. In mijn voorbeeld plaats ik die twee bestanden dus in de map C:\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:

  1. Open Eclipse door te dubbelklikken op eclipse.exe in C:\Program Files\eclipse\

  2. Druk op Enter om de standaardworkspace te accepteren

  3. Open de Install/Update-wizard door Help -> Software Updates -> Find and Install te selecteren

  4. Selecteer het keuzerondje “Search for new features to install” en klik op Next.

  5. Klik op de knop “New Remote Site…”

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

  7. Zorg dat het vakje naast Camscripter is aangevinkt en klik op de knop “Finish”.

  8. Selecteer “Camscripter” als de te installeren functie en klik op Next.

  9. Accepteer de licentieovereenkomst en klik op Volgende

  10. Klik op Finish - Eclipse downloadt de plug-in voor je

  11. Klik op “Install” om de Camscripter-plug-in te installeren.

  12. 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.

  1. CamScripter-weergave

  2. Consolepaneel waar tekstberichten worden weergegeven

  3. Feedbackpaneel waar beeld- en grafische berichten worden weergegeven

  4. Voert Lua-code uit. Je kunt ofwel een heel bestand uitvoeren of alleen geselecteerde coderegels.

  5. 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.