Начало работы с 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. Прежде чем мы сможем это сделать, нам нужно установить этот язык на ваш компьютер.
Download the appropriate ZIP binary. (For Windows: Lua-Windows or for other users https://luabinaries.sourceforge.net/download.html)
Распакуйте бинарный файл Lua в
C:\luaОткройте командную строку (в Windows выберите «Run…» в меню Start и введите „cmd“).
перейдите (cd) туда, куда вы распаковали файлы Lua. Для меня я ввожу „cd C:lua“
Введите „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):
Распакуйте загруженный RXTX и перейдите в получившуюся папку
Дважды щёлкните по Windows
Дважды щёлкните по i368-mingw32
Теперь вам нужно выяснить, где находится ваша среда выполнения 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:
Откройте Eclipse, дважды щёлкнув eclipse.exe в
C:\Program Files\eclipse\Нажмите Enter, чтобы принять рабочую область по умолчанию
Откройте мастер Install/Update, выбрав Help -> Software Updates -> Find and Install
Выберите переключатель «Search for new features to install» и нажмите Next.
Нажмите кнопку «New Remote Site…»
For name, enter Camscripter, and for URL enter
http://cmucam.org/~juanpablo/. Click OK.Убедитесь, что флажок рядом с Camscripter установлен, и нажмите кнопку «Finish».
Выберите «Camscripter» в качестве компонента для установки и нажмите Next.
Примите лицензионное соглашение и нажмите Next
Нажмите Finish — Eclipse загрузит плагин за вас
Нажмите «Install», чтобы установить плагин Camscripter.
Нажмите 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.
Представление CamScripter
Панель консоли, где отображаются текстовые сообщения
Панель обратной связи, где отображаются изображения и графические сообщения
Выполняет код Lua. Вы можете выполнить как весь файл, так и только выбранные строки кода.
Устанавливает код 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.
Полезные ссылки#
CamScripter теперь полностью установлен и настроен, и вы увидели небольшой пример, демонстрирующий его функциональность. Если вы хотите увидеть более крупные примеры использования CamScripter, взгляните на примеры программ, включённые в каталог camscripter/examples. Несколько других заметок и ссылок, которые могут вам помочь:
CamScripter Lua API описывает функции CMUcam3, которые вы можете использовать в своих программах на Lua для управления действиями CMUcam3.
Вот несколько ссылок, которые помогут вам начать работу с Lua. Обратите внимание, что внешние библиотеки, такие как библиотеки string и math, не входят в версию Lua, установленную на CMUcam3. Их пришлось убрать, чтобы интерпретатор Lua поместился в ограниченном пространстве CMUcam3.
Учебник по Lua Учебник, который поможет вам начать.
Справочное руководство Lua: Полная документация по Lua.
Lua Wiki Полезное место для поиска ответов. Примеры кода, FAQ и ссылки на другие ресурсы.
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.