Introdução ao CamScripter#
Visão Geral#
O que é?#
O CamScripter é uma ferramenta para o ajudar a escrever e depurar scripts personalizados para a CMUcam3. Torna possível escrever scripts utilizando a linguagem de programação Lua. Utilizando esta linguagem e a Lua API fornecida para a CMUcam3, pode personalizar a câmara para quase qualquer utilização que consiga imaginar. Neste tutorial, vamos guiá-lo através do processo de instalação e depois desenvolver um script de exemplo para correr na câmara.
Antes de Começar#
Este tutorial assume:
Já tem uma CMUcam3
You’ve already gotten the camera working, using either the Quick Start Guide or the
SDK installation guideTem tudo o que é necessário para ligar a câmara ao seu computador
Instalação, Parte 1: Lua, Comunicação por Porta Série#
Lua#
O CamScripter permite-lhe programar a CMUcam3 utilizando a linguagem de programação Lua. Antes de o podermos fazer, precisamos de instalar esta linguagem no seu computador.
Download the appropriate ZIP binary. (For Windows: Lua-Windows or for other users https://luabinaries.sourceforge.net/download.html)
Descompacte o binário do Lua para
C:\luaAbra uma linha de comandos (no Windows, selecione «Run…» no menu Iniciar e escreva “cmd”).
faça cd para onde quer que tenha descompactado os ficheiros Lua. No meu caso, escrevo “cd C:lua”
Escreva “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, utilize 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)#
É necessário um Java Runtime Environment (versão 6 ou superior) para o CamScripter. Se ainda não tiver um JRE instalado, pode transferir 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 (apenas Windows - para outros SO, siga as instruções no ficheiro INSTALL do rxtx):
Descompacte a transferência do RXTX e navegue até à pasta resultante
Faça duplo clique em Windows
Faça duplo clique em i368-mingw32
Agora terá de descobrir onde está localizado o seu Java Run-time environment. Provavelmente está em
C:\Program Files\Java\jre<version number>. O meu, por exemplo, está localizado emC:\Program Files\Java\jre1.6.0_01. Copie os ficheirosrxtxSerial.dllerxtxParallel.dllda pasta RXTX i368-mingw32 para a pastajre/bin. Assim, no meu exemplo, coloquei esses dois ficheiros na pastaC:\Program Files\Java\jre1.6.0_01\bin.
Instalação, Parte 2: Eclipse#
Ok, estamos quase prontos! Faltam apenas algumas coisas.
Se ainda não o tiver, instale o Eclipse (versão 3.2 ou mais recente). 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 de instalar o CamScripter como um plugin do Eclipse:
Abra o Eclipse fazendo duplo clique em eclipse.exe em
C:\Program Files\eclipse\Prima Enter para aceitar o workspace predefinido
Abra o assistente de Instalar/Atualizar selecionando Help -> Software Updates -> Find and Install
Selecione o botão de opção «Search for new features to install» e clique em Next.
Clique no botão «New Remote Site…»
For name, enter Camscripter, and for URL enter
http://cmucam.org/~juanpablo/. Click OK.Certifique-se de que a caixa junto a Camscripter está marcada e clique no botão «Finish».
Selecione «Camscripter» como a funcionalidade a instalar e clique em Next.
Aceite o contrato de licenciamento e clique em Next
Clique em Finish - o Eclipse transferirá o plug-in por si
Clique em «Install» para instalar o plug-in do Camscripter.
Clique em Yes para reiniciar a Plataforma Eclipse
O Eclipse reiniciará então, com o plugin do Camscripter instalado por si. Para garantir que está 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.
Vista do CamScripter
Painel de consola onde são apresentadas mensagens de texto
Painel de feedback onde são apresentadas mensagens de imagem e gráficas
Executa código Lua. Pode executar um ficheiro inteiro ou apenas linhas de código selecionadas.
Instala o código Lua no cartão SD/MMC da CMUcam3
Configuração#
Instalámos tudo! Apenas alguns passos de configuração e estaremos a programar o CamScripter.
Carregar o projeto camscripter na 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.
Definir as Preferências do CamScripter#
Agora volte ao Eclipse e abra o ecrã 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 efetivamente interpreta e executa o código. Estamos a compilar o código no Eclipse e depois a executá-lo na câmara – daí, luac.
Forneça o nome da porta série à qual liga a sua câmara. Pode clicar no botão «See Serial Ports» para ver uma lista das portas série 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.
Dê ao seu projeto o nome «Hello» e clique no botão Finish. Depois crie um novo ficheiro clicando em File –> New –> File (no Eclipse 3.3 é File –> New –> Other –> General –> File). Na caixa do nome do ficheiro, introduza «hello_world.lua», com Hello como pasta pai. Clique no botão Finish.
Verifique novamente se a sua câmara está ligada à porta série do seu computador. Antes de ligar a câmara, é importante compreender os dois modos que a câmara suporta:
Standalone: a câmara não espera qualquer interação com o PC. Por predefinição, a câmara inicia neste modo.
Interativo: a câmara recebe código Lua compilado a partir do CamScripter no Eclipse e devolve feedback. Para colocar a câmara em modo interativo, ligue-a e, quando vir o LED laranja aceso, prima o botão da câmara (tem 3 segundos para premir o botão). Nessa altura, o LED laranja piscará várias vezes, indicando-lhe que estamos a entrar em modo interativo. Se tudo correr bem, verá a mensagem Welcome to CamScripter Interactive mode. Click the execute button to run a script.
Vamos iniciar a câmara no modo interativo para podermos executar o nosso primeiro programa Lua.
Na janela do editor, introduza a linha de código:
print("Hello, World!");
Guarde o ficheiro e clique no botão Execute na vista do CamScripter. E Voilà!! O seu código terá sido enviado pelo fio até à câmara, que o executou e devolveu a mensagem que imprimiu.
Agora vamos experimentar algo um pouco mais interessante. Adicione três linhas de código adicionais, para que o seu ficheiro hello_world.lua contenha:
print("Hello, World!");
take_picture("pic_name");
print_picture("pic_name");
print("It's a picture!");
Agora clique novamente no botão Execute. Desta vez demorará mais tempo a executar, uma vez que enviar imagens através da porta série é bastante moroso. No entanto, quando terminar, deverá ver as suas duas mensagens na área de Consola do CamScripter e a imagem que tirou com a câmara na área de Feedback (retirou a tampa da lente, não retirou?)
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.
Ligações Úteis#
O CamScripter está agora totalmente instalado e configurado, e viu um pequeno exemplo que demonstra a sua funcionalidade. Se quiser ver alguns exemplos maiores utilizando o Camscripter, dê uma olhada nos programas de exemplo incluídos no diretório camscripter/examples. Algumas outras notas e ligações que o podem ajudar:
A Lua API do CamScripter descreve as funções da CMUcam3 que pode utilizar nos seus programas Lua para controlar as ações da CMUcam3.
Aqui estão algumas ligações para o ajudar a começar a usar o Lua. Note que as bibliotecas externas, como as bibliotecas string e math, não estão incluídas na versão do Lua instalada na CMUcam3. Tiveram de ser removidas para que o interpretador Lua coubesse no espaço limitado da CMUcam3.
Tutorial de Lua Um tutorial para o ajudar a começar.
Manual de Referência de Lua: Documentação completa de Lua.
Lua Wiki Um local útil para encontrar respostas. Código de exemplo, FAQ e ligações para outros recursos.
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.