Kom igång med CamScripter#

Översikt#

Vad är det?#

CamScripter är ett verktyg som hjälper dig att skriva och felsöka anpassade skript för CMUcam3. Det gör det möjligt att skriva skript med programmeringsspråket Lua. Med hjälp av detta språk och det medföljande Lua-API:et för CMUcam3 kan du anpassa kameran för nästan vilken användning du kan tänka dig. I den här handledningen går vi igenom installationsprocessen och utvecklar sedan ett exempelskript att köra på kameran.

Innan du börjar#

Denna handledning förutsätter:

Installation, del 1: Lua, seriell portkommunikation#

Lua#

CamScripter gör att du kan programmera CMUcam3 med programmeringsspråket Lua. Innan vi kan göra det måste vi installera detta språk på din dator.

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

  2. Packa upp Lua-binären i C:\lua

  3. Öppna en kommandotolk (i Windows, välj ”Run…” från Start-menyn och skriv ’cmd’).

  4. cd till var du än packade upp Lua-filerna. För mig skriver jag ’cd C:lua’

  5. Skriv ’luax.x.exe -v’ där x är Lua-versionen

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

I Windows under cygwin, använd följande rader för att kompilera:

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)#

En Java Runtime Environment (version 6 eller senare) behövs för CamScripter. Om du inte redan har en JRE installerad kan du ladda ner och installera en här.

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.

För att installera (Endast Windows - för andra operativsystem, följ instruktionerna i rxtx INSTALL-filen):

  1. Packa upp RXTX-nedladdningen och navigera in i den resulterande mappen

  2. Dubbelklicka på Windows

  3. Dubbelklicka på i368-mingw32

  4. Nu måste du lista ut var din Java-körtidsmiljö finns. Den ligger förmodligen i C:\Program Files\Java\jre<version number>. Min ligger till exempel i C:\Program Files\Java\jre1.6.0_01. Kopiera filerna rxtxSerial.dll och rxtxParallel.dll från RXTX i368-mingw32-mappen till mappen jre/bin. Så i mitt exempel lägger jag de två filerna i mappen C:\Program Files\Java\jre1.6.0_01\bin.

Installation, del 2: Eclipse#

Okej, vi är nästan redo att köra! Bara några få saker kvar att göra.

Om du inte redan har det, installera Eclipse (version 3.2 eller nyare). Du kan installera det från http://eclipse.org/downloads. Eclipse Classic är ett säkert val, även om vilket som helst av de andra listade paketen bör fungera lika bra. För att installera, packa helt enkelt upp ditt valda paket i C:\Program Files\eclipse.

Nu när Eclipse är installerat måste vi installera CamScripter som ett Eclipse-insticksprogram:

  1. Öppna Eclipse genom att dubbelklicka på eclipse.exe i C:\Program Files\eclipse\

  2. Tryck på Enter för att acceptera standardarbetsytan

  3. Öppna Install/Update-guiden genom att välja Help -> Software Updates -> Find and Install

  4. Välj radioknappen ”Search for new features to install” och klicka på Next.

  5. Klicka på knappen ”New Remote Site…”

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

  7. Se till att rutan bredvid Camscripter är markerad och klicka på knappen ”Finish”.

  8. Välj ”Camscripter” som funktionen att installera och klicka på Next.

  9. Acceptera licensavtalet och klicka på Next

  10. Klicka på Finish - Eclipse laddar ner insticksprogrammet åt dig

  11. Klicka på ”Install” för att installera Camscripter-insticksprogrammet.

  12. Klicka på Yes för att starta om Eclipse-plattformen

Eclipse startar sedan om, med Camscripter-insticksprogrammet installerat åt dig. För att säkerställa att det är installerat, välj 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. CamScripter-vy

  2. Konsolpanel där textmeddelanden visas

  3. Återkopplingspanel där bild- och grafikmeddelanden visas

  4. Kör Lua-kod. Du kan antingen köra en hel fil eller bara utvalda kodrader.

  5. Installerar Lua-kod på CMUcam3:s SD/MMC-kort

Installation#

Vi har installerat allt! Bara ett par konfigurationssteg så programmerar vi CamScripter.

Ladda camscripter-projektet till kameran#

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.

Ställ in CamScripter-inställningar#

Gå nu tillbaka till Eclipse och öppna inställningsskärmen för 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.

    • För den som är intresserad, luac kompilerar helt enkelt lua-koden, medan luax.x.exe faktiskt tolkar och kör koden. Vi kompilerar koden i Eclipse och kör den sedan på kameran – därav luac.

  • Ange namnet på den seriella port som du ansluter din kamera till. Du kan klicka på knappen ”See Serial Ports” för att se en lista över tillgängliga seriella portar.

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.

Namnge ditt projekt ”Hello” och klicka på Finish-knappen. Skapa sedan en ny fil genom att klicka på File –> New –> File (I Eclipse 3.3. Det är File –> New –> Other –> General –> File). I filnamnsrutan, ange ”hello_world.lua”, med Hello som överordnad mapp. Klicka på Finish-knappen.

Dubbelkolla att din kamera är ansluten till datorns seriella port. Innan du slår på kameran är det viktigt att förstå de två lägen som kameran stöder:

  • Fristående: kameran förväntar sig ingen interaktion med datorn alls. Som standard startar kameran i detta läge.

  • Interaktivt: kameran tar emot kompilerad Lua-kod från CamScripter i Eclipse och returnerar återkoppling. För att sätta kameran i interaktivt läge, slå på den och när du ser den orange lysdioden lysa, tryck på kameraknappen (du har 3 sekunder på dig att trycka på knappen). I det ögonblicket blinkar den orange lysdioden flera gånger för att meddela dig att vi går in i interaktivt läge. Om allt gick bra ser du meddelandet Welcome to CamScripter Interactive mode. Click the execute button to run a script.

Låt oss starta kameran i interaktivt läge så att vi kan köra vårt första Lua-program.

I redigeringsfönstret, ange kodraden:

print("Hello, World!");

Spara filen och klicka på Execute-knappen i CamScripter-vyn. Och voilà!! Din kod kommer att ha gått över tråden till kameran, som körde den och skickade tillbaka meddelandet du skrev ut.

Låt oss nu prova något lite mer intressant. Lägg till tre ytterligare kodrader, så att din fil hello_world.lua innehåller:

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

Klicka nu på Execute-knappen igen. Det tar längre tid att köra den här gången, eftersom det är ganska tidskrävande att skicka bilder genom den seriella porten. När den är klar bör du dock se dina två meddelanden i CamScripters konsolområde, och bilden du tog med kameran i återkopplingsområdet (du tog väl av linsskyddet?)

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.