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:

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.

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

  2. Rozpakuj plik binarny Lua do C:\lua

  3. Otwórz wiersz poleceń (w Windows wybierz „Run…” z menu Start i wpisz «cmd»).

  4. cd do miejsca, gdzie rozpakowałeś pliki Lua. U mnie wpisuję «cd C:lua»

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

  1. Rozpakuj pobrany plik RXTX i przejdź do powstałego folderu

  2. Kliknij dwukrotnie Windows

  3. Kliknij dwukrotnie i368-mingw32

  4. 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ę w C:\Program Files\Java\jre1.6.0_01. Skopiuj pliki rxtxSerial.dll i rxtxParallel.dll z folderu RXTX i368-mingw32 do folderu jre/bin. Więc w moim przykładzie umieściłem te dwa pliki w folderze C:\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:

  1. Otwórz Eclipse, klikając dwukrotnie eclipse.exe w C:\Program Files\eclipse\

  2. Naciśnij Enter, aby zaakceptować domyślny obszar roboczy

  3. Otwórz kreatora Install/Update, wybierając Help -> Software Updates -> Find and Install

  4. Zaznacz przycisk opcji „Search for new features to install” i kliknij Next.

  5. Kliknij przycisk „New Remote Site…”

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

  7. Upewnij się, że pole obok Camscripter jest zaznaczone, i kliknij przycisk „Finish”.

  8. Wybierz „Camscripter” jako funkcję do zainstalowania i kliknij Next.

  9. Zaakceptuj umowę licencyjną i kliknij Dalej

  10. Kliknij Finish - Eclipse pobierze wtyczkę za Ciebie

  11. Kliknij „Install”, aby zainstalować wtyczkę Camscripter.

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

  1. Widok CamScripter

  2. Panel konsoli, w którym wyświetlane są komunikaty tekstowe

  3. Panel informacji zwrotnej, w którym wyświetlane są obrazy i komunikaty graficzne

  4. Wykonuje kod Lua. Możesz wykonać cały plik lub tylko wybrane linie kodu.

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