Начало работы с CamScripter#

Обзор#

Что это такое?#

CamScripter — это инструмент для помощи вам в написании и отладке пользовательских скриптов для CMUcam3. Он позволяет писать скрипты с использованием языка программирования Lua. Используя этот язык и предоставленный Lua API для CMUcam3, вы можете настроить камеру практически для любого использования, которое только можете придумать. В этом руководстве мы проведём вас через процесс установки, а затем разработаем пример скрипта для запуска на камере.

Прежде чем начать#

Это руководство предполагает:

  • У вас уже есть CMUcam3

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

  • У вас есть всё необходимое для подключения камеры к компьютеру

Установка, часть 1: Lua, связь через последовательный порт#

Lua#

CamScripter позволяет программировать CMUcam3 с использованием языка программирования Lua. Прежде чем мы сможем это сделать, нам нужно установить этот язык на ваш компьютер.

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

  2. Распакуйте бинарный файл Lua в C:\lua

  3. Откройте командную строку (в Windows выберите «Run…» в меню Start и введите „cmd“).

  4. перейдите (cd) туда, куда вы распаковали файлы Lua. Для меня я ввожу „cd C:lua“

  5. Введите „luax.x.exe -v“, где x — версия 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).

В Windows под cygwin используйте следующие строки для компиляции:

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

Для CamScripter требуется среда выполнения Java (версии 6 или выше). Если у вас ещё не установлена JRE, вы можете загрузить и установить её здесь.

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.

Для установки (только Windows — для других ОС следуйте инструкциям в файле INSTALL rxtx):

  1. Распакуйте загруженный RXTX и перейдите в получившуюся папку

  2. Дважды щёлкните по Windows

  3. Дважды щёлкните по i368-mingw32

  4. Теперь вам нужно выяснить, где находится ваша среда выполнения Java. Вероятно, она находится в C:\Program Files\Java\jre<version number>. Моя, например, находится в C:\Program Files\Java\jre1.6.0_01. Скопируйте файлы rxtxSerial.dll и rxtxParallel.dll из папки RXTX i368-mingw32 в папку jre/bin. Так, в моём примере я поместил эти два файла в папку C:\Program Files\Java\jre1.6.0_01\bin.

Установка, часть 2: Eclipse#

Хорошо, мы почти готовы! Осталось сделать всего несколько вещей.

Если у вас его ещё нет, установите Eclipse (версии 3.2 или новее). Вы можете установить его с http://eclipse.org/downloads. Eclipse Classic — надёжный выбор, хотя любой из других перечисленных пакетов также должен подойти. Для установки просто распакуйте выбранный пакет в C:\Program Files\eclipse.

Теперь, когда Eclipse установлен, нам нужно установить CamScripter как плагин Eclipse:

  1. Откройте Eclipse, дважды щёлкнув eclipse.exe в C:\Program Files\eclipse\

  2. Нажмите Enter, чтобы принять рабочую область по умолчанию

  3. Откройте мастер Install/Update, выбрав Help -> Software Updates -> Find and Install

  4. Выберите переключатель «Search for new features to install» и нажмите Next.

  5. Нажмите кнопку «New Remote Site…»

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

  7. Убедитесь, что флажок рядом с Camscripter установлен, и нажмите кнопку «Finish».

  8. Выберите «Camscripter» в качестве компонента для установки и нажмите Next.

  9. Примите лицензионное соглашение и нажмите Next

  10. Нажмите Finish — Eclipse загрузит плагин за вас

  11. Нажмите «Install», чтобы установить плагин Camscripter.

  12. Нажмите Yes, чтобы перезапустить платформу Eclipse

Затем Eclipse перезапустится с установленным для вас плагином Camscripter. Чтобы убедиться, что он установлен, выберите 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. Представление CamScripter

  2. Панель консоли, где отображаются текстовые сообщения

  3. Панель обратной связи, где отображаются изображения и графические сообщения

  4. Выполняет код Lua. Вы можете выполнить как весь файл, так и только выбранные строки кода.

  5. Устанавливает код Lua на SD/MMC-карту CMUcam3

Настройка#

Мы всё установили! Всего пара шагов настройки, и мы будем программировать CamScripter.

Загрузите проект camscripter на камеру#

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.

Настройте параметры CamScripter#

Теперь вернитесь в Eclipse и откройте экран настроек 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.

    • Для тех, кому интересно: luac просто компилирует код lua, тогда как luax.x.exe фактически интерпретирует и выполняет код. Мы компилируем код в Eclipse, а затем запускаем его на камере — отсюда и luac.

  • Укажите имя последовательного порта, к которому вы подключаете камеру. Вы можете нажать кнопку «See Serial Ports», чтобы увидеть список доступных последовательных портов.

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.

Назовите свой проект «Hello» и нажмите кнопку Finish. Затем создайте новый файл, выбрав File –> New –> File (в Eclipse 3.3 это File –> New –> Other –> General –> File). В поле имени файла введите «hello_world.lua», указав Hello в качестве родительской папки. Нажмите кнопку Finish.

Ещё раз убедитесь, что ваша камера подключена к последовательному порту компьютера. Прежде чем включить камеру, важно понять два режима, которые она поддерживает:

  • Автономный: камера вообще не ожидает какого-либо взаимодействия с ПК. По умолчанию камера запускается в этом режиме.

  • Интерактивный: камера получает скомпилированный код Lua от CamScripter в Eclipse и возвращает обратную связь. Чтобы перевести камеру в интерактивный режим, включите её и, когда увидите горящий оранжевый светодиод, нажмите кнопку камеры (у вас есть 3 секунды, чтобы нажать кнопку). В этот момент оранжевый светодиод несколько раз мигнёт, давая вам знать, что мы входим в интерактивный режим. Если всё прошло хорошо, вы увидите сообщение Welcome to CamScripter Interactive mode. Click the execute button to run a script.

Давайте запустим камеру в интерактивном режиме, чтобы мы могли выполнить нашу первую программу на Lua.

В окне редактора введите строку кода:

print("Hello, World!");

Сохраните файл и нажмите кнопку Execute в представлении CamScripter. И вуаля!! Ваш код будет передан по проводу камере, которая выполнит его и отправит обратно сообщение, которое вы вывели.

Теперь давайте попробуем что-нибудь более интересное. Добавьте три дополнительные строки кода, чтобы ваш файл hello_world.lua содержал:

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

Теперь снова нажмите кнопку Execute. На этот раз выполнение займёт больше времени, так как отправка изображений через последовательный порт довольно трудоёмка. Однако после завершения вы должны увидеть два ваших сообщения в области Console программы CamScripter, а также изображение, снятое камерой, в области Feedback (вы ведь сняли крышку объектива, не так ли?)

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.