Как стать автором
Обновить

Easy-программирование танка-шпиона

Время на прочтение 5 мин
Количество просмотров 34K

Хочу рассказать Вам, как можно управлять айГаджетами с PC, да еще и программировать их. Все, что описано в статье применимо как к Brookstone Rover Spy Tank, так и к AR Drone Parrot. На «Хабре» уже ни раз были статьи о серии высокотехнологичных гаджетов AR Drone Parrot. Как-то мало интереса проявляется Brokstone Rover Spy Tank, хотя, как ни странно, эта игрушка хоть и не такая эффектная, в силу того, что не летает, зато более практичная. Во первых заряда 6 элементов пиатния серии АА хватает на несколько часов непрерывной работы. Во вторых, его можно использовать как гиковскую веб-камеру, с помощью которой можно следить за тем, что происходит дома с любого другого компьютера, ну и, как бонус, гонять своих домашних животных. Настроив доступ по RDP к домашнему компьютеру, можно управлять этим изделием, как мобильной веб-камерой, которая не просто показывает картинку, но еще и передвигается по помещению.


Начнем с того, что такое Brookstone Rover Spy Tank



Brookstone Rover Wireless Spy Tank — это беспроводной управляемый танк. В качестве пульта управления выступает iPhone или iPad Связь происходит напрямую, через созданную Wi-Fi точку. Устройство оснащено вмонтированной видео-камерой, с помощью которой вы сможете наблюдать за окружающими. Так же на устройстве находится микрофон и инфракрасный излучатель, для съемок в полной темноте. Питается чудо-танк от шести батареек АА. Для владельцев устрйоств на Android есть реализация RoverOpen и доступна для скачивания в GooglePlay маркете по адресу play.google.com/store/apps/details?id=org.almende.roveropen

Недавно на рынке появились танки второй версии. В них добавили пару улучшений. Добавлен сервопривод, с помощью которого угол поворота видеокамеры управляется из приложения и динамик, через который Вы можете воспроизводить звуки. Помимо всего перечисленного, в вездеход добавили встроенные фонари, яркостью которых так же можно управлять дистанционно через приложение. Для данной версии танка существуют официальные приложения в App Store и в Google Play.



Управляем с PC


Если у Вас нет айфона или андроид устройства, то Вы, скорее всего, вряд ли приобретет такой гаджет. Но если очень хочется? Что тогда?

Есть такой прекрасный программный комплекс — EZ-Builder, инструмент канадского товарища. В нем уже реализован протокол обмена с AR Drone Parrot и Brookstone Rover Spy Tank. Программа написана на C#. Управление проще паренной репы. Качаем софт отсюда

www.ez-robot.com/EZ-Builder

Установка проста и не требует описания.


Easy программирование на EZ-Script


В EZ-Builder есть возможность писать простые скрипты на встреонном скриптовом языке. Он чем-то напоминает бейсик. EZ-Builder позволяет запрограммировать поведение игрушки, не будучи профессиональным роботостроителем и инженером-программистом. На языке EZ-Script можно писать простейшие программы, с помощью которых можно управлять нашим ровером. Чтобы освоить их и понять принцип, добавляем на рабочий стол EZ-Builder консоль управления: “Script Console”. Для этого достаточно нажать F3 либо выбрать ее в пункте Add Control -> Scripting -> Script Console.

Разберем несколько команд:
  • Sleep (milliseconds) — Задать паузу в миллисекундах. Пример паузы на 1 секунду: Sleep(1000)
  • SleepRandom (lowMilliSec, highMilliSec) — Пауза на случайную величину. Пример: SleepRandom(1000, 5000)
  • Forward( [speed], [milliSeconds] ) — команда двигаться вперед. Принимает значение скорости от 0 до 255 и время работы двигателя в миллисекундах. По умолчанию — бесконечно. Примеры: Forward(), Forward(50), Forward(255, 5000)
  • Reverse( [speed], [milliSeconds] ) — обратное действие комнды Forward, т.е. движение назад.
  • Stop() — остановиться.
  • Left( [speed], [milliSeconds] ) — поворот влево. Принимает значение скорости и время работы в милисекундах..
  • Right( [speed], [milliSeconds] ) — поворот вправо
  • # — комментарии
  • :Label — метка для команды GOTO(LABEL). Пример: :MyLabel
  • Goto( label ) — переход на метку
  • Return() — выход из GOTO на продолжение программы
  • Halt() — прекратитьв ыполнение скрипта
  • HTTPGet( url ) — послать GET запрос по заданному адресу
  • Print( txt ) — вывести текст в отладочную консоль
  • Exec( EXE/Bat File, [parameters] ) — вызвать внешнюю программу Windows
  • Browser( url ) — запустить браузер по заданному адресу
  • Tweet( message ) — послать сообщение в сервис Twitter.com. Для этого нужно сконфигурировать Твит-модуль: File->Twitter Settings. Пример: Tweet(«I Love EZ-Robot!»). Пример отправки скриншота с камеры устроства в твиттер: ControlCommand( «Camera», CameraTweet, «Our New Image» )
  • ControlCommand(windowName, ControlCommandParameter, [values]) — выполнить команду, обратившись к компоненте по ее имени, где windowName — имя окна на рабочем столе EZ-Builder, ControlCommandParameter — команда, [values] — дополнительные необязательные параметры, зависящие от контекста вызова.


Получить справку по всем командам всегда можно на специальных вкладках либо вызвав соответствующий хелп через:

Help -> Print Script Manual

Учим следить за объектами


В разделе Tracking Types ставим галочку у пунтка Color. Кладем перед камерой нашего устройства яркий предмет (лучше всего красного цвета). Переключаемся во вкладку Color, выбираем минимальный размер детектируемого предмета (Min Object Size) и выставляем яркость объекта (Object Brightness). Как только предмет будет опознан, наш танк начнет поворачиваться в его сторону, если мы попытаемся его передвинуть. Я бы посоветовал в настройках в разделе Tracking Quadrant Settings сдвинуть вертикальные линии немного ближе к краю, чтобы робот более адекватно реагировал на передвижения объекта. Далее, играясь разными параметрами Вы сможете самостоятельно добиться нужных настроек и оптимальных значений.


Простая программа



Теперь, агрегируя полученную информацию, связываем все воедино. Добавляем на рабочий стол EZ-Builder компоненту Script Manager: Ad Control -> Scripting -> EZ-Script Manager. В открывшемся окне нажимаем кнопку Add Script. В поле Name пишем: PursuitTarget. Это будет название нашей программы, отвечающей за движение. Она будет очень проста и состоять из одной строчки. Вообще надо сказать что в EZ-Builder все компоненты между собой связываются по именам окон и названиям скриптов. Пишем программу следующего содержания:

forward(255)

Это нам нужно только для того, чтобы выставить скорость движения вперед на максимум, так как в программе поиска цели мы ее снизим. Снова жмем Add Script, в поле Name пишем: FindTarget и, соответственно сам текст программы:

$findTargetSpeed = 100
$iteration = 0

:Loop1

 reverse($findTargetSpeed,1000)

 # Процесс осмотра
 left($findTargetSpeed, 2000)
 right($findTargetSpeed, 4000)
 left($findTargetSpeed, 2000)

 $iteration = $iteration + 1

 if ($iteration > 4)
   return()

goto(Loop1)

stop()


Теперь жмем кнопку Config на панели Camera, переходим на вкладку Scripts и в разделе Tracking Scripts в поле Tracking Start пишем вызов нашего срипта PursuitTarget:

ControlCommand( "Script Manager", ScriptStart, "PursuitTarget" )

а в поле Tracking End вписываем:

ControlCommand( "Script Manager", ScriptStart, "FindTarget" )

Переходим на вкладку Tracking Settings в раздел Movement Tracking и ставим галочку у соответствующей надписи. Так же ставим галочку у надписи Allow Left/Right Movement. Сохраняем. Жмем Refresh Device List, выбираем Video Device: Brookstone_Rover, ставим галочку на Debug и на Color. Переходим на вкладку Color и выставляем размер и яркость преследуемого объекта. Теперь достаточно кинуть красный мячик перед “носом” нашего терминатора, как он тут же распознает его и активируется. После чего он начнет его преследование. Как только робот будет наталкиваться на него, то мячик, скорее всего, будет откатываться в сторону. Робот будет поворачиваться в его строну, а если он его вовсе потеряет из виду, то он начнет отъезжать назад, поворачиваясь из стороны в сторону и пытаясь найти преследуемую цель.

Программирование AR Drone Parrot


Оно ничем не отличается. Добавляются только команды запуска двигателей и посадки.


Что дальше?


В следующей статье есть желание описать пример работы на C#, при этом прикручиваем лазерный фонарик и в купе с вебкамерой превращаем его в лазерный дальномер.


P.S.: Спасибо icases.ru за любезно-предоставленные гаджеты для тестирования
Теги:
Хабы:
+11
Комментарии 16
Комментарии Комментарии 16

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн