Noțiuni introductive despre CamScripter#

Prezentare generală#

Ce este?#

CamScripter este un instrument care vă ajută la scrierea și depanarea scripturilor personalizate pentru CMUcam3. Face posibilă scrierea de scripturi folosind limbajul de programare Lua. Folosind acest limbaj și API-ul Lua furnizat pentru CMUcam3, puteți personaliza camera pentru aproape orice utilizare la care vă puteți gândi. În acest tutorial, vă vom ghida prin procesul de instalare și apoi vom dezvolta un script de exemplu care să ruleze pe cameră.

Înainte de a începe#

Acest tutorial presupune:

  • Aveți deja un CMUcam3

  • You’ve already gotten the camera working, using either the Quick Start Guide or the SDK installation guide

  • Aveți tot ce este necesar pentru a conecta camera la computerul dumneavoastră

Instalare, partea 1: Lua, comunicare prin portul serial#

Lua#

CamScripter vă permite să programați CMUcam3 folosind limbajul de programare Lua. Înainte de a putea face acest lucru, va trebui să instalăm acest limbaj pe computerul dvs.

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

  2. Dezarhivați binarul Lua în C:\lua

  3. Deschideți un prompt de comandă (în Windows, selectați „Run…” din meniul Start și tastați «cmd»).

  4. cd în locul unde ați dezarhivat fișierele Lua. Pentru mine, tastez «cd C:lua»

  5. Tastați «luax.x.exe -v» unde x este versiunea 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).

În windows, sub cygwin, folosiți următoarele linii pentru a compila:

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

Un Java Runtime Environment (versiunea 6 sau mai mare) este necesar pentru CamScripter. Dacă nu aveți deja un JRE instalat, puteți descărca și instala unul de aici.

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.

Pentru a instala (Numai Windows - pentru alte sisteme de operare, urmați instrucțiunile din fișierul INSTALL al rxtx):

  1. Dezarhivați descărcarea RXTX și navigați în folderul rezultat

  2. Faceți dublu clic pe Windows

  3. Faceți dublu clic pe i368-mingw32

  4. Acum va trebui să aflați unde se află mediul dvs. Java Run-time. Probabil se află în C:\Program Files\Java\jre<version number>. Al meu, de exemplu, se află în C:\Program Files\Java\jre1.6.0_01. Copiați fișierele rxtxSerial.dll și rxtxParallel.dll din folderul RXTX i368-mingw32 în folderul jre/bin. Deci, în exemplul meu, am pus acele două fișiere în folderul C:\Program Files\Java\jre1.6.0_01\bin.

Instalare, partea 2: Eclipse#

Bine, suntem aproape gata! Mai sunt doar câteva lucruri de făcut.

Dacă nu îl aveți deja, instalați Eclipse (versiunea 3.2 sau mai nouă). Îl puteți instala de la http://eclipse.org/downloads. Eclipse Classic este o alegere sigură, deși oricare dintre celelalte pachete listate ar trebui să funcționeze la fel de bine. Pentru a instala, pur și simplu dezarhivați pachetul ales în C:\Program Files\eclipse.

Acum că Eclipse este instalat, trebuie să instalăm CamScripter ca plugin Eclipse:

  1. Deschideți Eclipse făcând dublu clic pe eclipse.exe în C:\Program Files\eclipse\

  2. Apăsați Enter pentru a accepta spațiul de lucru implicit

  3. Deschideți expertul Install/Update selectând Help -> Software Updates -> Find and Install

  4. Selectați butonul radio „Search for new features to install” și faceți clic pe Next.

  5. Faceți clic pe butonul „New Remote Site…”

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

  7. Asigurați-vă că este bifată caseta de lângă Camscripter și faceți clic pe butonul „Finish”.

  8. Selectați „Camscripter” ca funcție de instalat și faceți clic pe Next.

  9. Acceptați acordul de licențiere și faceți clic pe Next

  10. Faceți clic pe Finish - Eclipse va descărca pluginul pentru dvs.

  11. Faceți clic pe „Install” pentru a instala pluginul Camscripter.

  12. Faceți clic pe Yes pentru a reporni platforma Eclipse

Eclipse va reporni apoi, cu pluginul Camscripter instalat pentru dvs. Pentru a vă asigura că este instalat, selectați 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. Vizualizarea CamScripter

  2. Panoul de consolă unde sunt afișate mesajele text

  3. Panoul de feedback unde sunt afișate mesajele de imagine și grafice

  4. Execută cod Lua. Puteți executa fie un fișier întreg, fie doar liniile de cod selectate.

  5. Instalează codul Lua pe cardul SD/MMC al CMUcam3

Configurare#

Am instalat totul! Doar câțiva pași de configurare și vom programa CamScripter-ul.

Încărcați proiectul camscripter pe cameră#

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.

Setați preferințele CamScripter#

Acum reveniți la Eclipse și deschideți ecranul de preferințe 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.

    • Pentru cei interesați, luac pur și simplu compilează codul lua, în timp ce luax.x.exe interpretează și rulează efectiv codul. Compilăm codul în Eclipse, apoi îl rulăm pe cameră – de aici, luac.

  • Furnizați numele portului serial la care conectați camera. Puteți face clic pe butonul „See Serial Ports” pentru a vedea o listă de porturi seriale disponibile.

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.

Denumiți proiectul „Hello” și faceți clic pe butonul Finish. Apoi creați un fișier nou făcând clic pe File –> New –> File (În Eclipse 3.3 este File –> New –> Other –> General –> File). În caseta pentru numele fișierului, introduceți „hello_world.lua”, cu Hello ca folder părinte. Faceți clic pe butonul Finish.

Verificați din nou că camera dvs. este conectată la portul serial al computerului. Înainte de a porni camera, este important să înțelegeți cele două moduri pe care le suportă camera:

  • Independent: camera nu așteaptă deloc vreo interacțiune cu PC-ul. În mod implicit, camera pornește în acest mod.

  • Interactiv: camera primește cod Lua compilat de la CamScripter în Eclipse și returnează feedback. Pentru a pune camera în modul interactiv, porniți-o și când vedeți LED-ul portocaliu aprins, apăsați butonul camerei (aveți 3 secunde pentru a apăsa butonul). În acel moment, LED-ul portocaliu va clipi de mai multe ori, anunțându-vă că intrăm în modul interactiv. Dacă totul a decurs bine, veți vedea mesajul Welcome to CamScripter Interactive mode. Click the execute button to run a script.

Să pornim camera în modul interactiv pentru a putea executa primul nostru program Lua.

În fereastra editorului, introduceți linia de cod:

print("Hello, World!");

Salvați fișierul și faceți clic pe butonul Execute din vizualizarea CamScripter. Și Voila!! Codul dvs. va fi ajuns prin cablu la cameră, care l-a executat și a trimis înapoi mesajul pe care l-ați tipărit.

Acum să încercăm ceva puțin mai interesant. Adăugați trei linii de cod suplimentare, astfel încât fișierul dvs. hello_world.lua să conțină:

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

Acum faceți clic din nou pe butonul Execute. De data aceasta va dura mai mult să se execute, deoarece trimiterea imaginilor prin portul serial consumă destul de mult timp. Totuși, odată ce se termină, ar trebui să vedeți cele două mesaje ale dvs. în zona Consolă a CamScripter și imaginea pe care ați făcut-o cu camera în zona Feedback (ați scos capacul lentilei, nu-i așa?)

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.