Začínáme s CamScripterem#

Přehled#

Co to je?#

CamScripter je nástroj, který vám pomáhá při psaní a ladění přizpůsobených skriptů pro CMUcam3. Umožňuje psát skripty pomocí programovacího jazyka Lua. Pomocí tohoto jazyka a poskytnutého Lua API pro CMUcam3 můžete kameru přizpůsobit téměř jakémukoli použití, které vás napadne. V tomto tutoriálu vás provedeme procesem instalace a poté vyvineme ukázkový skript ke spuštění na kameře.

Než začnete#

Tento tutoriál předpokládá:

Instalace, část 1: Lua, komunikace přes sériový port#

Lua#

CamScripter vám umožňuje programovat CMUcam3 pomocí programovacího jazyka Lua. Než to budeme moci udělat, budeme muset tento jazyk nainstalovat na váš počítač.

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

  2. Rozbalte binární soubor Lua do C:\lua

  3. Otevřete příkazový řádek (ve Windows vyberte „Run…“ z nabídky Start a napište ‚cmd‘).

  4. cd tam, kam jste rozbalili soubory Lua. Já zadávám ‚cd C:lua‘

  5. Zadejte ‚luax.x.exe -v‘, kde x je verze 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).

Ve Windows pod cygwinem použijte ke kompilaci následující řádky:

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

Pro CamScripter je potřeba Java Runtime Environment (verze 6 nebo vyšší). Pokud ještě nemáte nainstalované JRE, můžete si jej stáhnout a nainstalovat zde.

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.

Chcete-li nainstalovat (pouze Windows – u jiných OS postupujte podle pokynů v souboru INSTALL rxtx):

  1. Rozbalte stažený RXTX a přejděte do výsledné složky

  2. Dvakrát klikněte na Windows

  3. Dvakrát klikněte na i368-mingw32

  4. Nyní budete muset zjistit, kde se nachází vaše prostředí Java Run-time. Pravděpodobně je v C:\Program Files\Java\jre<číslo verze>. To moje je například umístěno v C:\Program Files\Java\jre1.6.0_01. Zkopírujte soubory rxtxSerial.dll a rxtxParallel.dll ze složky RXTX i368-mingw32 do složky jre/bin. Takže v mém příkladu jsem tyto dva soubory umístil do složky C:\Program Files\Java\jre1.6.0_01\bin.

Instalace, část 2: Eclipse#

Dobře, jsme téměř připraveni! Zbývá jen několik věcí.

Pokud jej ještě nemáte, nainstalujte Eclipse (verze 3.2 nebo novější). Můžete jej nainstalovat z http://eclipse.org/downloads. Eclipse Classic je bezpečná volba, i když by měl fungovat i kterýkoli z ostatních uvedených balíčků. K instalaci jednoduše rozbalte zvolený balíček do C:\Program Files\eclipse.

Nyní, když je Eclipse nainstalováno, musíme nainstalovat CamScripter jako zásuvný modul Eclipse:

  1. Otevřete Eclipse dvojklikem na eclipse.exe v C:\Program Files\eclipse\

  2. Stisknutím Enter přijměte výchozí pracovní prostor

  3. Otevřete průvodce Install/Update výběrem Help -> Software Updates -> Find and Install

  4. Vyberte přepínač „Search for new features to install“ a klikněte na Next.

  5. Klikněte na tlačítko „New Remote Site…“

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

  7. Ujistěte se, že je zaškrtnuto políčko vedle Camscripter, a klikněte na tlačítko „Finish“.

  8. Vyberte „Camscripter“ jako funkci k instalaci a klikněte na Next.

  9. Přijměte licenční smlouvu a klikněte na Next

  10. Klikněte na Finish - Eclipse za vás zásuvný modul stáhne

  11. Kliknutím na „Install“ nainstalujte zásuvný modul Camscripter.

  12. Kliknutím na Yes restartujte platformu Eclipse

Eclipse se poté restartuje s nainstalovaným zásuvným modulem Camscripter. Chcete-li se ujistit, že je nainstalován, vyberte 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. Zobrazení CamScripter

  2. Panel konzole, kde se zobrazují textové zprávy

  3. Panel zpětné vazby, kde se zobrazují obrazové a grafické zprávy

  4. Spustí kód Lua. Můžete spustit buď celý soubor, nebo jen vybrané řádky kódu.

  5. Nainstaluje kód Lua na SD/MMC kartu CMUcam3

Nastavení#

Vše jsme nainstalovali! Ještě pár kroků nastavení a budeme programovat CamScripter.

Nahrajte projekt camscripter do kamery#

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.

Nastavte předvolby CamScripteru#

Nyní se vraťte do Eclipse a otevřete obrazovku předvoleb CamScripteru: 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.

    • Pro ty, kteří mají zájem, luac jednoduše zkompiluje kód lua, zatímco luax.x.exe kód skutečně interpretuje a spouští. Kód kompilujeme v Eclipse a poté jej spouštíme na kameře – proto luac.

  • Zadejte název sériového portu, ke kterému připojujete kameru. Kliknutím na tlačítko „See Serial Ports“ zobrazíte seznam dostupných sériových portů.

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.

Pojmenujte svůj projekt „Hello“ a klikněte na tlačítko Finish. Poté vytvořte nový soubor kliknutím na File –> New –> File (v Eclipse 3.3 je to File –> New –> Other –> General –> File). Do pole názvu souboru zadejte „hello_world.lua“ s Hello jako nadřazenou složkou. Klikněte na tlačítko Finish.

Ještě jednou zkontrolujte, zda je vaše kamera připojena k sériovému portu počítače. Než kameru zapnete, je důležité pochopit dva režimy, které kamera podporuje:

  • Samostatný: kamera vůbec neočekává žádnou interakci s PC. Ve výchozím nastavení se kamera spouští v tomto režimu.

  • Interaktivní: kamera přijímá zkompilovaný kód Lua z CamScripteru v Eclipse a vrací zpětnou vazbu. Chcete-li kameru uvést do interaktivního režimu, zapněte ji, a jakmile uvidíte svítící oranžovou LED, stiskněte tlačítko kamery (na stisknutí tlačítka máte 3 sekundy). V tu chvíli oranžová LED několikrát blikne, čímž vám dá vědět, že vstupujeme do interaktivního režimu. Pokud vše proběhlo v pořádku, uvidíte zprávu Welcome to CamScripter Interactive mode. Click the execute button to run a script.

Spustíme kameru v interaktivním režimu, abychom mohli spustit náš první program v Lua.

V okně editoru zadejte řádek kódu:

print("Hello, World!");

Uložte soubor a klikněte na tlačítko Execute v zobrazení CamScripter. A Voila!! Váš kód putoval po drátě do kamery, která jej provedla a poslala zpět zprávu, kterou jste vytiskli.

Nyní zkusme něco trochu zajímavějšího. Přidejte tři další řádky kódu, aby váš soubor hello_world.lua obsahoval:

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

Nyní znovu klikněte na tlačítko Execute. Tentokrát bude spuštění trvat déle, protože odesílání obrazů přes sériový port je docela časově náročné. Jakmile však skončí, měli byste vidět své dvě zprávy v oblasti konzole CamScripteru a obraz, který jste pořídili kamerou, v oblasti zpětné vazby (sundali jste krytku objektivu, že?)

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.