Pierwsze kroki z CamScripter#
Przegląd#
Co to jest?#
CamScripter to narzędzie, które pomaga w pisaniu i debugowaniu niestandardowych skryptów dla CMUcam3. Umożliwia pisanie skryptów przy użyciu języka programowania Lua. Używając tego języka i dostarczonego API Lua dla CMUcam3, możesz dostosować kamerę do niemal każdego zastosowania, jakie przyjdzie Ci do głowy. W tym samouczku przeprowadzimy Cię przez proces instalacji, a następnie opracujemy przykładowy skrypt do uruchomienia na kamerze.
Zanim zaczniesz#
Ten samouczek zakłada, że:
Masz już CMUcam3
You’ve already gotten the camera working, using either the Quick Start Guide or the
SDK installation guideMasz wszystko, co potrzebne, aby podłączyć kamerę do komputera
Instalacja, część 1: Lua, komunikacja przez port szeregowy#
Lua#
CamScripter pozwala programować CMUcam3 przy użyciu języka programowania Lua. Zanim będziemy mogli to zrobić, musimy zainstalować ten język na Twoim komputerze.
Download the appropriate ZIP binary. (For Windows: Lua-Windows or for other users https://luabinaries.sourceforge.net/download.html)
Rozpakuj plik binarny Lua do
C:\luaOtwórz wiersz poleceń (w Windows wybierz „Run…” z menu Start i wpisz «cmd»).
cd do miejsca, gdzie rozpakowałeś pliki Lua. U mnie wpisuję «cd C:lua»
Wpisz «luax.x.exe -v», gdzie x to wersja 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).
W systemie Windows pod cygwin użyj następujących linii, aby skompilować:
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)#
Do CamScripter wymagane jest środowisko Java Runtime Environment (wersja 6 lub nowsza). Jeśli nie masz jeszcze zainstalowanego JRE, możesz je pobrać i zainstalować tutaj.
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.
Aby zainstalować (tylko Windows - dla innych systemów operacyjnych postępuj zgodnie z instrukcjami w pliku rxtx INSTALL):
Rozpakuj pobrany plik RXTX i przejdź do powstałego folderu
Kliknij dwukrotnie Windows
Kliknij dwukrotnie i368-mingw32
Teraz musisz ustalić, gdzie znajduje się Twoje środowisko uruchomieniowe Java. Prawdopodobnie znajduje się w
C:\Program Files\Java\jre<version number>. Moje na przykład znajduje się wC:\Program Files\Java\jre1.6.0_01. Skopiuj plikirxtxSerial.dllirxtxParallel.dllz folderu RXTX i368-mingw32 do folderujre/bin. Więc w moim przykładzie umieściłem te dwa pliki w folderzeC:\Program Files\Java\jre1.6.0_01\bin.
Instalacja, część 2: Eclipse#
Dobrze, prawie jesteśmy gotowi! Zostało jeszcze kilka rzeczy do zrobienia.
Jeśli jeszcze go nie masz, zainstaluj Eclipse (wersja 3.2 lub nowsza). Możesz go zainstalować z http://eclipse.org/downloads. Eclipse Classic to bezpieczny wybór, chociaż każdy z pozostałych wymienionych pakietów również powinien działać. Aby zainstalować, po prostu rozpakuj wybrany pakiet do C:\Program Files\eclipse.
Teraz, gdy Eclipse jest zainstalowany, musimy zainstalować CamScripter jako wtyczkę Eclipse:
Otwórz Eclipse, klikając dwukrotnie eclipse.exe w
C:\Program Files\eclipse\Naciśnij Enter, aby zaakceptować domyślny obszar roboczy
Otwórz kreatora Install/Update, wybierając Help -> Software Updates -> Find and Install
Zaznacz przycisk opcji „Search for new features to install” i kliknij Next.
Kliknij przycisk „New Remote Site…”
For name, enter Camscripter, and for URL enter
http://cmucam.org/~juanpablo/. Click OK.Upewnij się, że pole obok Camscripter jest zaznaczone, i kliknij przycisk „Finish”.
Wybierz „Camscripter” jako funkcję do zainstalowania i kliknij Next.
Zaakceptuj umowę licencyjną i kliknij Dalej
Kliknij Finish - Eclipse pobierze wtyczkę za Ciebie
Kliknij „Install”, aby zainstalować wtyczkę Camscripter.
Kliknij Yes, aby ponownie uruchomić platformę Eclipse
Eclipse następnie uruchomi się ponownie, z zainstalowaną wtyczką Camscripter. Aby upewnić się, że jest zainstalowana, wybierz 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.
Widok CamScripter
Panel konsoli, w którym wyświetlane są komunikaty tekstowe
Panel informacji zwrotnej, w którym wyświetlane są obrazy i komunikaty graficzne
Wykonuje kod Lua. Możesz wykonać cały plik lub tylko wybrane linie kodu.
Instaluje kod Lua na karcie SD/MMC CMUcam3
Konfiguracja#
Zainstalowaliśmy wszystko! Jeszcze kilka kroków konfiguracyjnych i będziemy programować CamScripter.
Wczytaj projekt camscripter na kamerę#
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.
Ustaw preferencje CamScripter#
Teraz wróć do Eclipse i otwórz ekran preferencji 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.Dla zainteresowanych: luac po prostu kompiluje kod lua, podczas gdy luax.x.exe faktycznie interpretuje i uruchamia kod. Kompilujemy kod w Eclipse, a następnie uruchamiamy go na kamerze – stąd luac.
Podaj nazwę portu szeregowego, do którego podłączasz kamerę. Możesz kliknąć przycisk „See Serial Ports”, aby zobaczyć listę dostępnych portów szeregowych.
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.
Nazwij swój projekt „Hello” i kliknij przycisk Finish. Następnie utwórz nowy plik, klikając File –> New –> File (w Eclipse 3.3 jest to File –> New –> Other –> General –> File). W polu nazwy pliku wpisz „hello_world.lua”, z Hello jako folderem nadrzędnym. Kliknij przycisk Finish.
Upewnij się dokładnie, że kamera jest podłączona do portu szeregowego Twojego komputera. Zanim włączysz kamerę, ważne jest zrozumienie dwóch trybów, które kamera obsługuje:
Samodzielny: kamera w ogóle nie oczekuje żadnej interakcji z komputerem PC. Domyślnie kamera uruchamia się w tym trybie.
Interaktywny: kamera odbiera skompilowany kod Lua z CamScripter w Eclipse i zwraca informacje zwrotne. Aby przełączyć kamerę w tryb interaktywny, włącz ją, a gdy zobaczysz zapaloną pomarańczową diodę LED, naciśnij przycisk kamery (masz 3 sekundy na naciśnięcie przycisku). W tym momencie pomarańczowa dioda LED zamiga kilka razy, informując Cię, że przechodzimy w tryb interaktywny. Jeśli wszystko poszło dobrze, zobaczysz komunikat Welcome to CamScripter Interactive mode. Click the execute button to run a script.
Uruchommy kamerę w trybie interaktywnym, abyśmy mogli wykonać nasz pierwszy program w Lua.
W oknie edytora wpisz linię kodu:
print("Hello, World!");
Zapisz plik i kliknij przycisk Execute w widoku CamScripter. I voilà!! Twój kod zostanie przesłany po przewodzie do kamery, która go wykona i odeśle komunikat, który wypisałeś.
Teraz spróbujmy czegoś trochę bardziej interesującego. Dodaj trzy dodatkowe linie kodu, aby Twój plik hello_world.lua zawierał:
print("Hello, World!");
take_picture("pic_name");
print_picture("pic_name");
print("It's a picture!");
Teraz kliknij ponownie przycisk Execute. Tym razem wykonanie potrwa dłużej, ponieważ wysyłanie obrazów przez port szeregowy jest dość czasochłonne. Gdy jednak się zakończy, powinieneś zobaczyć swoje dwa komunikaty w obszarze konsoli CamScripter oraz obraz, który zrobiłeś kamerą, w obszarze informacji zwrotnej (zdjąłeś osłonę obiektywu, prawda?)
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.
Przydatne linki#
CamScripter jest teraz w pełni zainstalowany i skonfigurowany, a Ty zobaczyłeś mały przykład prezentujący jego funkcjonalność. Jeśli chcesz zobaczyć większe przykłady wykorzystujące Camscripter, zajrzyj do przykładowych programów zawartych w katalogu camscripter/examples. Kilka innych uwag i linków, które mogą Ci pomóc:
Dokument CamScripter Lua API opisuje funkcje CMUcam3, których możesz używać w swoich programach Lua do sterowania działaniami CMUcam3.
Oto kilka linków, które pomogą Ci zacząć korzystać z Lua. Zwróć uwagę, że zewnętrzne biblioteki, takie jak biblioteki string i math, nie są dołączone do wersji Lua zainstalowanej na CMUcam3. Trzeba było je usunąć, aby interpreter Lua zmieścił się w ograniczonej przestrzeni CMUcam3.
Lua Tutorial Samouczek, który pomoże Ci zacząć.
Lua Reference Manual: Kompletna dokumentacja Lua.
Lua Wiki Przydatne miejsce do znajdowania odpowiedzi. Przykładowy kod, FAQ i linki do innych zasobów.
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.