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á:
Již máte CMUcam3
You’ve already gotten the camera working, using either the Quick Start Guide or the
SDK installation guideMáte vše potřebné k připojení kamery k počítači
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č.
Download the appropriate ZIP binary. (For Windows: Lua-Windows or for other users https://luabinaries.sourceforge.net/download.html)
Rozbalte binární soubor Lua do
C:\luaOtevřete příkazový řádek (ve Windows vyberte „Run…“ z nabídky Start a napište ‚cmd‘).
cd tam, kam jste rozbalili soubory Lua. Já zadávám ‚cd C:lua‘
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):
Rozbalte stažený RXTX a přejděte do výsledné složky
Dvakrát klikněte na Windows
Dvakrát klikněte na i368-mingw32
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 vC:\Program Files\Java\jre1.6.0_01. Zkopírujte souboryrxtxSerial.dllarxtxParallel.dllze složky RXTX i368-mingw32 do složkyjre/bin. Takže v mém příkladu jsem tyto dva soubory umístil do složkyC:\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:
Otevřete Eclipse dvojklikem na eclipse.exe v
C:\Program Files\eclipse\Stisknutím Enter přijměte výchozí pracovní prostor
Otevřete průvodce Install/Update výběrem Help -> Software Updates -> Find and Install
Vyberte přepínač „Search for new features to install“ a klikněte na Next.
Klikněte na tlačítko „New Remote Site…“
For name, enter Camscripter, and for URL enter
http://cmucam.org/~juanpablo/. Click OK.Ujistěte se, že je zaškrtnuto políčko vedle Camscripter, a klikněte na tlačítko „Finish“.
Vyberte „Camscripter“ jako funkci k instalaci a klikněte na Next.
Přijměte licenční smlouvu a klikněte na Next
Klikněte na Finish - Eclipse za vás zásuvný modul stáhne
Kliknutím na „Install“ nainstalujte zásuvný modul Camscripter.
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.
Zobrazení CamScripter
Panel konzole, kde se zobrazují textové zprávy
Panel zpětné vazby, kde se zobrazují obrazové a grafické zprávy
Spustí kód Lua. Můžete spustit buď celý soubor, nebo jen vybrané řádky kódu.
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.
Užitečné odkazy#
CamScripter je nyní plně nainstalován a nakonfigurován a viděli jste malý příklad předvádějící jeho funkčnost. Pokud si chcete prohlédnout některé větší příklady používající CamScripter, podívejte se na ukázkové programy zahrnuté v adresáři camscripter/examples. Několik dalších poznámek a odkazů, které vám mohou pomoci:
CamScripter Lua API popisuje funkce CMUcam3, které můžete použít ve svých programech Lua k řízení akcí CMUcam3.
Zde je několik odkazů, které vám pomohou začít používat Lua. Všimněte si, že externí knihovny, jako jsou knihovny string a math, nejsou zahrnuty ve verzi Lua nainstalované na CMUcam3. Musely být odstraněny, aby se interpret Lua vešel do omezeného prostoru na CMUcam3.
Lua Tutorial Tutoriál, který vám pomůže začít.
Lua Reference Manual: Kompletní dokumentace jazyka Lua.
Lua Wiki Užitečné místo pro hledání odpovědí. Ukázkový kód, FAQ a odkazy na další zdroje.
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.