воскресенье, 1 апреля 2012 г.

Программируем под мозг на QML/Javascript

Когда Я разбирался с программами написанными под Neurosky задался вопросом, "Почему у Emotiv есть хорошее железо и под него почти нет программ,а у NeuroSky посредственная железка а программ на порядок больше". Такое ощущение что в Emotiv сидят хорошие электронщики, а в NeuroSky - программисты.

Более вдумчивое сопоставление SDK обоих фирм дало следующий ответ: Emotiv предлагает SDK под среды разработки Microsoft Visual Studio C++, C# или Java.
Большинство же мелких программ у Neurosky разработаны на платформе Flash, хотя есть библиотеки на C# и C++.

Следующей мыслью было: "Было бы классно если бы под Emotiv была такая библиотечка которая упростила бы и ускорила процесс создания программ, JavaScript или Flash."

Поискав и не найдя ничего кроме платной библиотечки под Unity3D(стоимостью 79$). Вроде и не дорого, но для его использования как я понял нужно иметь коммерческую версию Unity стоимостью 1500$). И это в век победившего freeware, GPL и opensource?

Все это подвигло меня на написания своего движка. Итак встречайте EQT (Emotiv Quick Toolbox) или по-русски ЯКУТ :).
На сегодняшний день, движок представляет собой EXE-модуль, который позволяет запускать программы на языке QML/JavaScript с поддержкой функций шлема Emotiv EPOC.

В первую очередь движок предназначен для дизайнеров и smallgame-разработчиков, которых заинтересовала область разработки приложений для Emotiv EPOC, но которые не имеют навыков работы на C++, C#, Java.

Что надо для того чтобы начать работать с движком?
1) Скачать и установить QT SDK c сайта qt.nokia.com
Конечно QML файлы можно писать и в редакторе NotePad, но редактор идущий в комплекте QTDesigner делает процесс гораздо нагляднее.
2) Скачать и установить (любую!) версию Emotiv SDK с сайта emotiv.com
Если у Вас есть шлем (то c можно скачать бесплатный SDK LITE).
3) Скачать и установить последнюю версию библиотеки EQT (code.google.com)

Изучайте примеры и документацию и разрабатывайте свое приложение.
Для вдохновения советую посмотреть это видео компьютерной игры исключительно разработанной на QML/JavaScript



Я написал на QML свою программу что делать дальше?
Конечно практичных разработчиков заинтересует как извлечь из своих действий прибыль. Т.к. этот движок распространяется по лицензии LGPL (Less General Public License) вы имеете право поставлять Вашу программу в комплекте с ним. Т.е. Вы просто создаете дистрибутив в программах создания инсталляторов(платные InstallShild, GhostInstaller) можете в принципе размещать и продавать его в EmoStore.

У такого решения есть ряд проблем и ограничений:
1) Ваш QML/JavaScript код и картинки будут доступны в открытом виде.
2) Никак не будет реализована защита от копирования и модификации.
3) Есть необходимость приобретения и разбирательства с программой создания установок(конечно есть и бесплатные).
4) Работа только с функциями уровня Developer SDK (т.е. не возможность работы с ЭЭГ данными на прямую)
5) Работа с программой требует запущенного приложения Emotiv Control Panel.

В связи с этим предлагается следующая схема коммерческого взаимодействия у которой данные недостатки отсутствуют.
Вы присылаете исходники мне :) Я на их упаковываю в исполняемый файл и собираю и высылаю вам setup.exe который Вы спокойно размещаете в магазине Emotiv. А вот упаковать это все в EXE не думаю, что будет стоить дороже 50-100$ за одну программу. Если программа будет продаваться за 15$ (5$ уйдет в Emotiv, то после продажи 5-10 экземпляров программы дальше пойдет профит). Ну это в перспективе а на текущем этапе пока библиотека находится в стадии альфа-тестирования, первым клиентам процедура будет бесплатна :)

Так же коммерческое сотрудничество будет интересно тем пользователям версии Research SDK кто хочет реализовать свой алгоритм обработки ЭЭГ данных, например использование амплитуды альфа-ритмов, или пространственной фильтрация. Реализовывать данные функции на JavaScript нет никого смысла. По защите от копирования это отдельная песня. Стоимость данных работ будет определятся по отдельной договоренности.


UPD: Не смотря на достаточно бодро начало разработки движка на создание примеров и движка ушло не больше 2-3 недель. Сейчас достаточно настрой достаточно скептический. Документировать движок на языке Шекспира - просто лень. :) В общем если в ближайшее время бодрое настроение не вернется, и Я не возьмусь документировать функции движка и никто не обратится с предложением о его коммерческого применения то просто выложу исходники, может кому-то пригодятся. Конечно Unity3D он не забодает, но как основа для мини-игр с биофидбек протоколом лучше - не найти.

Еще немного о достоинствах движка:
1) Бесплатная среда разработки и отладки проекта. Вы платите только на стадии старта продаж приложения.
Все используемые продукты и компоненты находятся под лицензией LGPL. И доступны для использования в коммерческих проектах.
2) Простой и понятный язык разработки и функции взаимодействия со шлемом.
Движок берет на себя черную работу по соблюдению порядка вызова низкоуровневых функций, разбора типов. На верхнем уровне Вы работаете только со строками и значениями параметров.
Например: для работы с мысленным действием PUSH Вам необходимо делать только опрос переменной eePUSH, для тренировки действия достаточно вызвать функцию eeTrainPush.
3) Динамическое связывание с библиотеками Emotiv.
Т.к. движок сам обнаруживает на компьютере установленное EDK нет необходимости поставки программы вместе с библиотеками Emotiv, следовательно если у Вас нет желания делится с Emotiv 30% прибыли, за их услуги как магазина. То можно с ними уже и не делится.
4) Кросс-платформенность решения.
Ваша программа в перспективе может работать на любой операционной системе. Пока движок тестировался только на Windows. Но возможности технологии и по мере выхода Emotiv SDK на платформы Linux и MacOS могут быть выпущены соответствующие версии движка.

Что еще можно почитать:
1) Сайт коммьюнити разработчиков под QML вообще
2) Статья о QML на Wiki-педии.
3) Тут можно почитать о том как создавалась эта игра FlyingBus и скачать исходники

3 комментария:

  1. привет.
    интересуюсь написанием программ для bci, шлемов, в частности emotiv epoc.C++ знаю средне-хорошо,(тяжело через текст передать уровень, поэтому напишу "умные слова": деревья, классы, наследование, переопределение оператов, winapi,opengl(в процессе), из опыта прог:писал графический интерфейс, наноgcc, работаю щас над графикой openGL и по мелочи много, токо с dll особо не знаком)
    (если удобно отвечай на noking007@mail.ru или можешь статью сделать)
    несколько вопросов:
    шлем еще не купил.
    1) про sdk для epoc и с++, что надо чтобы начать писать
    2) погрешность измерений ээг,

    ОтветитьУдалить
    Ответы
    1. Привет,

      Прежде чем начать писать программу(да и вообще что-то начинать делать) надо определиться что в итоге хочется получить.

      Если хочется:
      1) Освоить новое оборудование, потренироваться в программировании для него.
      То в придачу к шлему потребуется понимающий или человек разбирающийся в работе мозга, и математических методах обработки ЭЭГ .
      Человек ставит задачу , ты ее реализуешь на требуемом техническом уровне.

      2) Если такого человека на примете нет, то придется начать разбираться с работой мозга самому , это тоже интересная задача,
      к программированию отношения имеющая мало. Но тоже очень интересная. Книг и программ уже написано не мало.

      3) Разработать свою крутую программу и заработать на ней куча денег. :)
      Ну для начала надо изучить что уже продается для шлемов. И рынок этих приложений.
      А еще начать подыскивать художника, иллюстратора. Чтобы программа (скорее всего игра) имела товарный вид.

      4) Придумать алгоритм который научится читать мысли ... математика. Нужно идти курить книжки
      со словами Фурье, корреляционный, статистический, вейвлет-анализ. Попробовать, поиграться, осознать.
      Может фракталы прилепить сюда как-то получится - надо пробовать.

      Все варианты по своему интересны :)

      На счет погрешности ЭЭГ
      всегда мне приходит на ум такая картина (не помню писал уже или нет)

      Мозг - это ОГРОМНЫЙ СТАДИОН.
      На котором идет матч, а болельщики еще умудряются говорить между собой по телефону.
      На разных точках установлены микрофоны. Языка мы не знаем.
      Над стадионом идет дождь , с периодическими раскатами грома.
      Что мы можем узнать по записи с этих микрофонов?

      1) Ну например зная где сидят чьи болельщики мы можем понять чья команда выигрывает :)
      2) Сопоставляя различные фрагменты записей научимся отличать звук грома от звука забитого гола.

      Тоже самое можно сказать о ЭЭГ и ее погрешности - очень похоже :)

      Шлем приобрести наверно стоит причем именно за 750$.
      Тогда жаба давит сильнее и стимулов больше :)

      Удалить