Primeiros Passos com o CamScripter#

Visão Geral#

O que é?#

O CamScripter é uma ferramenta para ajudá-lo a escrever e depurar scripts personalizados para a CMUcam3. Ele torna possível escrever scripts usando a linguagem de programação Lua. Usando essa linguagem e a API Lua fornecida para a CMUcam3, você pode personalizar a câmera para quase qualquer uso que você possa imaginar. Neste tutorial, vamos guiá-lo pelo processo de instalação e depois desenvolver um script de exemplo para rodar na câmera.

Antes de Começar#

Este tutorial pressupõe:

  • Você já tem uma CMUcam3

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

  • Você tem tudo o que é necessário para conectar a câmera ao seu computador

Instalação, Parte 1: Lua, Comunicação da Porta Serial#

Lua#

O CamScripter permite que você programe a CMUcam3 usando a linguagem de programação Lua. Antes de podermos fazer isso, precisaremos instalar essa linguagem no seu computador.

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

  2. Descompacte o binário do Lua em C:\lua

  3. Abra um prompt de comando (no Windows, selecione “Run…” no menu Iniciar e digite ‘cmd’).

  4. cd até onde você descompactou os arquivos Lua. No meu caso, digito ‘cd C:lua’

  5. Digite ‘luax.x.exe -v’ onde x é a versão do 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).

No windows sob o cygwin, use as seguintes linhas 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)#

Um Java Runtime Environment (versão 6 ou superior) é necessário para o CamScripter. Se você ainda não tem um JRE instalado, você pode baixar e instalar um aqui.

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 (Somente Windows - para outros SOs, siga as instruções no arquivo INSTALL do rxtx):

  1. Descompacte o download do RXTX e navegue até a pasta resultante

  2. Dê um duplo clique em Windows

  3. Dê um duplo clique em i368-mingw32

  4. Agora você terá que descobrir onde o seu Java Run-time environment está localizado. Provavelmente está em C:\Program Files\Java\jre<version number>. O meu, por exemplo, está localizado em C:\Program Files\Java\jre1.6.0_01. Copie os arquivos rxtxSerial.dll e rxtxParallel.dll da pasta RXTX i368-mingw32 para a pasta jre/bin. Então, no meu exemplo, coloquei esses dois arquivos na pasta C:\Program Files\Java\jre1.6.0_01\bin.

Instalação, Parte 2: Eclipse#

Certo, estamos quase prontos! Faltam apenas algumas coisas a fazer.

Se você ainda não o tiver, instale o Eclipse (versão 3.2 ou mais recente). Você pode instalá-lo a partir de http://eclipse.org/downloads. O Eclipse Classic é uma aposta segura, embora qualquer um dos outros pacotes listados também deva funcionar. Para instalar, basta descompactar o pacote escolhido em C:\Program Files\eclipse.

Agora que o Eclipse está instalado, precisamos instalar o CamScripter como um plugin do Eclipse:

  1. Abra o Eclipse dando um duplo clique em eclipse.exe em C:\Program Files\eclipse\

  2. Pressione Enter para aceitar o workspace padrão

  3. Abra o assistente de Instalação/Atualização selecionando Help -> Software Updates -> Find and Install

  4. Selecione o botão de opção “Search for new features to install” e clique em Next.

  5. Clique no botão “New Remote Site…”

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

  7. Certifique-se de que a caixa ao lado de Camscripter está marcada e clique no botão “Finish”.

  8. Selecione “Camscripter” como o recurso a instalar e clique em Next.

  9. Aceite o contrato de licença e clique em Next

  10. Clique em Finish - o Eclipse baixará o plug-in para você

  11. Clique em “Install” para instalar o plug-in do Camscripter.

  12. Clique em Yes para reiniciar a Plataforma Eclipse

O Eclipse então reiniciará, com o plugin Camscripter instalado para você. Para garantir que ele esteja instalado, selecione 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. Visualização do CamScripter

  2. Painel de console onde as mensagens de texto são exibidas

  3. Painel de feedback onde mensagens de imagem e gráficas são exibidas

  4. Executa código Lua. Você pode executar um arquivo inteiro ou apenas linhas de código selecionadas.

  5. Instala o código Lua no cartão SD/MMC da CMUcam3

Configuração#

Instalamos tudo! Apenas mais alguns passos de configuração e estaremos programando o CamScripter.

Carregue o projeto camscripter na câmera#

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.

Definir Preferências do CamScripter#

Agora volte ao Eclipse e abra a tela de Preferências do 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 os interessados, o luac simplesmente compila o código lua, enquanto o luax.x.exe realmente interpreta e executa o código. Estamos compilando o código no Eclipse e depois executando-o na câmera – daí, luac.

  • Forneça o nome da porta serial à qual você conecta sua câmera. Você pode clicar no botão “See Serial Ports” para ver uma lista de portas seriais disponíveis.

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.

Nomeie seu projeto como “Hello” e clique no botão Finish. Em seguida, crie um novo arquivo clicando em File –> New –> File (No Eclipse 3.3, é File –> New –> Other –> General –> File). Na caixa de nome do arquivo, digite “hello_world.lua”, com Hello como a pasta pai. Clique no botão Finish.

Verifique novamente se a sua câmera está conectada à porta serial do seu computador. Antes de ligar a câmera, é importante entender os dois modos que a câmera suporta:

  • Standalone: a câmera não espera nenhuma interação com o PC. Por padrão, a câmera inicia neste modo.

  • Interativo: a câmera recebe código Lua compilado do CamScripter no Eclipse e retorna feedback. Para colocar a câmera no modo interativo, ligue-a e, quando você vir o LED laranja aceso, pressione o botão da câmera (você tem 3 segundos para pressionar o botão). Nesse momento, o LED laranja piscará várias vezes, informando que estamos entrando no modo interativo. Se tudo correr bem, você verá a mensagem Welcome to CamScripter Interactive mode. Click the execute button to run a script.

Vamos iniciar a câmera no modo interativo para que possamos executar nosso primeiro programa Lua.

Na janela do editor, insira a linha de código:

print("Hello, World!");

Salve o arquivo e clique no botão Execute na visualização do CamScripter. E Voilà!! Seu código terá ido pelo fio até a câmera, que o executou e enviou de volta a mensagem que você imprimiu.

Agora vamos tentar algo um pouco mais interessante. Adicione três linhas de código adicionais, de modo que seu arquivo hello_world.lua contenha:

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

Agora clique no botão Execute novamente. Levará mais tempo para executar desta vez, pois enviar imagens pela porta serial consome bastante tempo. Quando terminar, porém, você deve ver suas duas mensagens na área do Console do CamScripter, e a imagem que você tirou com a câmera na área de Feedback (você removeu a tampa da lente, não removeu?)

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.