Primeros pasos con CamScripter#

Descripción general#

¿Qué es?#

El CamScripter es una herramienta para ayudarle a escribir y depurar scripts personalizados para la CMUcam3. Hace posible escribir scripts usando el lenguaje de programación Lua. Usando este lenguaje y la API Lua proporcionada para la CMUcam3, puede personalizar la cámara para casi cualquier uso que pueda imaginar. En este tutorial le guiaremos a través del proceso de instalación y luego desarrollaremos un script de muestra para ejecutar en la cámara.

Antes de comenzar#

Este tutorial asume:

Instalación, Parte 1: Lua, comunicación por puerto serie#

Lua#

El CamScripter le permite programar la CMUcam3 usando el lenguaje de programación Lua. Antes de poder hacer eso, necesitaremos instalar este lenguaje en su computadora.

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

  2. Descomprima el binario de Lua en C:\lua

  3. Abra un símbolo del sistema (en Windows, seleccione «Run…» en el menú Inicio y escriba “cmd”).

  4. cd a dondequiera que haya descomprimido los archivos de Lua. En mi caso, escribo “cd C:lua”

  5. Escriba “luax.x.exe -v” donde x es la versión de 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).

En Windows bajo cygwin, use las siguientes líneas para compilar:

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

Se necesita un Java Runtime Environment (versión 6 o superior) para el CamScripter. Si aún no tiene un JRE instalado, puede descargar e instalar uno aquí.

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.

Para instalar (solo Windows - para otros sistemas operativos, siga las instrucciones del archivo INSTALL de rxtx):

  1. Descomprima la descarga de RXTX y navegue hasta la carpeta resultante

  2. Haga doble clic en Windows

  3. Haga doble clic en i368-mingw32

  4. Ahora tendrá que averiguar dónde se encuentra su entorno de ejecución de Java. Probablemente esté en C:\Program Files\Java\jre<número de versión>. El mío, por ejemplo, se encuentra en C:\Program Files\Java\jre1.6.0_01. Copie los archivos rxtxSerial.dll y rxtxParallel.dll de la carpeta RXTX i368-mingw32 en la carpeta jre/bin. Así, en mi ejemplo, pongo esos dos archivos en la carpeta C:\Program Files\Java\jre1.6.0_01\bin.

Instalación, Parte 2: Eclipse#

¡Bien, casi estamos listos! Solo quedan algunas cosas por hacer.

Si aún no lo tiene, instale Eclipse (versión 3.2 o más reciente). Puede instalarlo desde http://eclipse.org/downloads. Eclipse Classic es una apuesta segura, aunque cualquiera de los otros paquetes listados también debería funcionar. Para instalarlo, simplemente descomprima el paquete que elija en C:\Program Files\eclipse.

Ahora que Eclipse está instalado, necesitamos instalar el CamScripter como un complemento de Eclipse:

  1. Abra Eclipse haciendo doble clic en eclipse.exe en C:\Program Files\eclipse\

  2. Presione Intro para aceptar el workspace predeterminado

  3. Abra el asistente de instalación/actualización seleccionando Help -> Software Updates -> Find and Install

  4. Seleccione el botón de opción «Search for new features to install» y haga clic en Next.

  5. Haga clic en el botón «New Remote Site…»

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

  7. Asegúrese de que la casilla junto a Camscripter esté marcada y haga clic en el botón «Finish».

  8. Seleccione «Camscripter» como la característica a instalar y haga clic en Next.

  9. Acepte el acuerdo de licencia y haga clic en Next

  10. Haga clic en Finish - Eclipse descargará el complemento por usted

  11. Haga clic en «Install» para instalar el complemento Camscripter.

  12. Haga clic en Yes para reiniciar la Eclipse Platform

Eclipse se reiniciará entonces, con el complemento Camscripter instalado para usted. Para asegurarse de que está instalado, seleccione 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. Vista de CamScripter

  2. Panel de consola donde se muestran los mensajes de texto

  3. Panel de retroalimentación donde se muestran los mensajes de imagen y gráficos

  4. Ejecuta código Lua. Puede ejecutar un archivo completo o solo líneas de código seleccionadas.

  5. Instala el código Lua en la tarjeta SD/MMC de la CMUcam3

Configuración#

¡Hemos instalado todo! Solo un par de pasos de configuración y estaremos programando el CamScripter.

Cargue el proyecto camscripter en la cámara#

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.

Establecer las preferencias de CamScripter#

Ahora vuelva a Eclipse y abra la pantalla de preferencias de 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.

    • Para los interesados, luac simplemente compila el código lua, mientras que luax.x.exe realmente interpreta y ejecuta el código. Estamos compilando el código en Eclipse y luego ejecutándolo en la cámara – de ahí, luac.

  • Proporcione el nombre del puerto serie al que conecta su cámara. Puede hacer clic en el botón «See Serial Ports» para ver una lista de los puertos serie disponibles.

¡Hola, Mundo!#

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.

Nombre su proyecto «Hello» y haga clic en el botón Finish. Luego cree un nuevo archivo haciendo clic en File –> New –> File (en Eclipse 3.3 es File –> New –> Other –> General –> File). En el cuadro del nombre del archivo, introduzca «hello_world.lua», con Hello como carpeta principal. Haga clic en el botón Finish.

Compruebe de nuevo que su cámara esté conectada al puerto serie de su computadora. Antes de encender la cámara, es importante entender los dos modos que admite la cámara:

  • Autónomo: la cámara no espera ninguna interacción con el PC en absoluto. De forma predeterminada, la cámara arranca en este modo.

  • Interactivo: la cámara recibe código Lua compilado de CamScripter en Eclipse y devuelve retroalimentación. Para poner la cámara en el modo interactivo, enciéndala y cuando vea encendido el LED naranja, presione el botón de la cámara (tiene 3 segundos para presionar el botón). En ese momento, el LED naranja parpadeará varias veces para indicarle que estamos entrando en el modo interactivo. Si todo salió bien, verá el mensaje Welcome to CamScripter Interactive mode. Click the execute button to run a script.

Iniciemos la cámara en el modo interactivo para poder ejecutar nuestro primer programa Lua.

En la ventana del editor, introduzca la línea de código:

print("Hello, World!");

Guarde el archivo y haga clic en el botón Execute en la vista de CamScripter. ¡¡Y voilá!! Su código habrá viajado por el cable hasta la cámara, que lo ejecutó y devolvió el mensaje que imprimió.

Ahora intentemos algo un poco más interesante. Añada tres líneas de código adicionales, de modo que su archivo hello_world.lua contenga:

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

Ahora haga clic de nuevo en el botón Execute. Esta vez tardará más en ejecutarse, ya que enviar imágenes a través del puerto serie lleva bastante tiempo. Sin embargo, una vez que termine, debería ver sus dos mensajes en el área de consola de CamScripter, y la imagen que tomó con la cámara en el área de retroalimentación (¿le quitó la tapa al objetivo, verdad?)

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.