Робокамеры begins

Наконец-то! Я ее наладил более менее. (А это было не легко)

Итак, перед вами вебкамера, установленная на поворотное устройство с двумя степенями свободы, вещает изображение в домашнюю Wi-Fi сеть, управляется через браузер с компьютера.

Компоненты блока камеры и поворотного устройства:
— Creative Live! Cam Sync
— Рама самодельная из алюминиевого профиля
— 2 серво-привода Avionix (самые дешевые)
— Коммуникационная плата (самодельная)

Блок управления:
— Роутер TP-Link MR3020 с прошивкой OR-WRT 0.76
— Конвертер уровней для UART 3.3 В — 5 В (самодельный)
— Arduino (Freeduino 2009) с контролером ATmega328
— Коммуникационная плата (самодельная)
— Двухканальный стабилизатор напряжения 5 В с воздушным охлаждением (самодельный)
— Обычный блок питания 12 В на 1 А

Известные проблемы: на ярком свету камера дает помехи и дохнет (стрим падает).
Еще необходимо подправить init скрипты, а то приходится каждый раз запускать UART через SSH

Планирую сделать камеру интеллектуальной: она будет следить за источниками движения.

Теплый ламповый

Осень. Пасмурно. Надоела работа… Сделай перерыв!

Super Mario Bros. запущена на эмуляторе Nestopia под Mac OS X 10.8.5 на хакинтоше. Используется геймпад от PS3. Кстати, на Маке есть уже драйвер для этого геймпада, а виндводам остается мучаться с их неполноценной системой, пытаясь скачать кривой драйвер с левых формумов. Я раньше пробовал, ничего не вышло.

dendy

 

Решение проблемы с неудаляемыми играми

Существует официальный баг в Game Center API, когда из списка не удаляется GKTurnBasedMatch. Баг достаточно распространенный, он происходит главным образом тогда, когда активный участник покидает игру (вызов participantQuitInTurnWithOutcome:…) и удаляет ее из своего списка матчей. Игра получает какое-то неверное состояние, после чего остальные игроки не могут ее удалить из списка. Причем не могут как из интерфейса матч-мэйкера, так и вызовом removeWithCompletionHandler:… Возвращается ошибка номер 17 (Error=17) о том, что какие-то параметры заданы неверно. При этом сам матч может иметь уже статус завершенного GKTurnBasedMatchStatusEnded!

Как я уже отметил, Apple призналась в баге, но не исправила до сих пор.

Баг замечен, например, в игре Ой Ё. Об этом было сказано в их блоге. Мы тоже достаточно быстро столкнулись с этой проблемой, и она висела нерешенной почти два месяца. Тут, наконец-то, изучая многочисленные форумы мне удалось найти решение.

Суть в том, чтобы несмотря на завершенность матча попытаться (в случае возникновения ошибки) завершить свой ход, передав его любому другому участнику, затем выйти из игры ВНЕ хода и снова отправить запрос на завершения матча. Этот workaround помог мне со всеми неудаляемыми играми!

Вот код:

- (void) removeGameFromGC
{

    [_match removeWithCompletionHandler:
     ^(NSError *error) {
         if(!error)
         {
             DLog(@"match removed!");
         }
         else
         {
             [self reportError:error];

             GKTurnBasedParticipant *nextParticipant = nil;
             for (GKTurnBasedParticipant *participant in _match.participants)
             {
                 participant.matchOutcome = GKTurnBasedMatchOutcomeTied;
                 if(![TurnBasedHelper isHeLocal:participant.playerID])
                     nextParticipant = participant;
             }

             [_match endTurnWithNextParticipants:@[nextParticipant]
                                     turnTimeout:GKTurnTimeoutDefault
                                       matchData:nil
                               completionHandler:
              ^(NSError *error)
              {
                  if (error)
                  {
                      [self reportError:error];
                  }

                  [_match participantQuitOutOfTurnWithOutcome:GKTurnBasedMatchOutcomeQuit
                                        withCompletionHandler:
                   ^(NSError *error)
                   {
                       if (error)
                       {
                           [self reportError:error];
                       }
                       [_match removeWithCompletionHandler:^(NSError *error)
                        {
                            if (error)
                            {
                                [self reportError:error];
                            }
                        }];
                   }];
              }];
         }

     }];
}

Эрудит с Друзьями

Вот над чем мы сейчас трудимся!

942281_4246864669905_1003189680_n

Bioshock Infinite

Bioshock Infinite – лучшее, во что я играл за последние несколько лет 🙂 Настолько все круто, красочно. История, геймплей, сеттинг. Просто офигаеть. Ну и Элизабет, конечно 🙂 Короче стоило того, чтобы собрать под это дело SLI из GTX 670 =)

Элизабет всех достала, поэтому пик рилэйтед будет второй по симпатичности персонаж игры – Захария Хейл Комсток.

Comstock

Игра Study Maths

ТЕМА НА GAMEDEV.RU

Мне лень писать что-то, так что копирую оттуда.

Всем привет.
Мне тут вздумалось погрузиться в дебри нейросетей и запилить быстренько приложение, которое позволяет распозновать рукописные (нарисованные на сенсорном экране пальцем или еще чем-то) цифры. Самая простая идея: игра – обучение/тренировка арифметике. Игроку предлагается некий простенький пример, он решает его и пишет ответ, система распознает и говорит «верно»/»неверно». Можно еще добавить очки или ограничить время. Тут недавно была похожая тема, но у меня акцент именно на рукописном способе ввода.

Название: Study Maths (рабочее, возможно, сменится)
Жанр: обучающая головоломка
Начало разработки: 19 февраля 2013 года
Текущий статус: есть демка с базовым функционалом
Язык, API: Obj-C, Cocos2D-iPhone

Пока поддерживаются операции сложения (от 0 до 19), вычитания (без отрицательных), умножения (до 10 * 10), деления (на ноль нельзя!).

На алгоритм распознавания потратил очень много времени: почти неделю. Но пока он далек от совершенства. Я использую 5 слойную сверточную нейросеть, наученную на базе рукописных цифр (MNIST, 600000 цифр). Отсюда вытекает главная проблема: в базе цифры написаны ручкой на бумаге, потом отсканированы. У меня же они пишутся пальцем на экране, рендерятся в текстуру и идут на нейросеть. После нейросети есть еще пара хаков: например, моя рукописная 6 всегда почти распознается, как 5. Пришлось использовать некоторые свойства кривых, чтобы различать их. И то, не всегда успешно. Также алгоритм разделения кривых на цифры, который я придумал сегодня утром, иногда сбоит и нуждается в явной доработке. Хочу добавить еще знаки «+» и «-«, позже «.».

Еще есть концептуальная идея прикрутить к этому делу CMU Sphinx и какой-нить text-to-speech, получим, таким образом, и чисто голосовой вариант. Игра читает игроку пример, игрок отвечает голосом, получает одобрение или наоборот. Обязательно попробую в скором времени, если пойдет гладко (справлюсь менее, чем за неделю), то 100% включу в проект.

Дневник разработки:
19.02.2013 Начало

26.02.2013 Добавлена озвука примеров и результата на аглийском Flite text-to-speech

27.02.2013 Добавлена поддержка распознования голоса (см. видео со звуком):

К сожалению, результат меня сильно не устраивает. Слишком мала точность, требуется тишина, трудно сделать русский язык, приложение очень сильно разбухает в объеме. Так что в первом релизе скорее всего распознования голоса не будет. Я пока не знаю, как улучшить распознования голоса, т.к. использую сторонний API.

Распознование рукописных цифр на iPhone

Фуф! Наконец-то, я добился того, чтобы оно работало более менее нормально. Итак, распознавание рукописных цифр на iPhone. Используется 5-слойная сверточная нейронная сеть.  Сеть натренерована на базе MNIST, которая содержит 60000 образцов рукописных цифр (на каждую, вроде бы, итого 600000). Вдохновлялся этой статьей. Сеть написал сам, но тренеровал ее программой из статьи. Пришлось поднять виртуальную WinXp, поставить на ней VC++ 6, собрать проект, дописать нормальный экспортер данных (по умолчанию был на MFC – CArchive, который вообще некорректно работал и не загружал тестовые данные). Очень долго шло обучение, понадобилось несколько часов. И оно все еще идет… Я периодически скидываю дамп нейросети себе в проект.

Конечно, результат далек от совершенства. Например, эта сеть отказывается воспринимать мою цифру 6, всегда говорит 5. Пришлось писать специальный твик (по-русски – костыль), которые анализирует кривую и по некоторым статистическим данным различает шестерку и пятерку. У программы много параметров, и мне предстоит с ними еще поиграться, чтобы достичь максимальной точности. Планирую скрестить несколько алгоритмов и заставить их работать, как суд присяжных.

Tris: распил тетриса

Я еще не загружал этот скриншот?

Он иллюстрирует, как в Tris разрезаются фигуры при сокращении ряда.

[singlepic id=932]

Свидетельство на Resonator Studio

 

СвидКольцов2 Еще одно свидетельсво прислали, на этот раз на Resonator Studio (это такая программа для расчета открытых лазерных резонаторов, я написал ее в рамках своего диплома в ННГУ). Теперь у меня два оффициальных документа, что я умею хэллоувердить 😎

Картинка кликабельная, можно посмотреть в полном формате.

 

Свидетельство о регистрации Rays

СвидКольцов  Вот, наконец, сделали одно из двух свидетельств.