Управление iRobot Create с помощью беспроводного геймпада через Arduino

Робот iRobot Create — программируемый робот. В 2007 году разработан компанией iRobot на базе платформы робота пылесоса Roomba


Электронный интерфейс включает 7 pin mini-DIN и DB-25 разъемы для обмена данными, электронные датчики, световые индикаторы. Программный интерфейс позволяет управлять поведением робота. Он позволяет считывать информацию с сенсоров при помощи серии команд, включает команды режима, команды привода, звуковые команды, демонстрационные команды и команды опроса сенсоров. Эти команды можно посылать на последовательный порт робота с компьютера или микроконтроллера.На базе irobot_create у меня собран Turtlebot, но на данный момент необходимость использовать эту конструкцию в других целях (помощь в торжественном вручении цветов).

Необходимо управлять движением данной конструкции, а также отправка дополнительных команд на irobot_create с помощью джойстика.

Использую беспроводной  геймпад Defender Scorpion RS3

Джойстик подключен к плате Ard​uino через USB_Host_Shield

Плата расширения USB Host Shield 2.0  позволяет Arduino выступать Arduino в роли родительского USB-устройства для множества  имеющейся USB-периферии. С этой платой открывается масса новых возможностей для создания интересных устройств. В настоящее время платой USB Host Shield 2.0 поддерживаются следующие классы устройств щит:

  • HID -устройства, такие как клавиатуры, мыши, джойстики и др.;
  • игровые устройства -: Sony PS3, Nintendo Wii, Xbox360;
  • USB преобразователи -: FTDI, PL-2303, ACM, а также некоторые аппараты и GPS- приемники;
  • Android -устройства;
  • цифровые фотоаппараты -: Canon (EOS, PowersShot), Nikon. 

С этой платой открывается масса новых возможностей для создания интересных устройств. Для программирования USB Host Shield используется специальная библиотека, скачать которую можно со страницы – https://github.com/felis/USB_Host_Shield_2.0. Спецификацию и примеры использования этой библиотеки можно найти на сайте Circuits@Home –  http://www.circuitsathome.com/arduino_usb_host_shield_projects.

В библиотеке имеется пример для беспроводного джойстика PS3, C геймпадом  Defender Scorpion RS3 пример сразу не заработал. После правки самого примера и правки заголовочного файла PS3Enums.h, входящего в библиотеку, джойстик стал работать приемлемо, возникла проблема лишь с установкой светодиодов на джойстике (периодически зависал), но мне это не особенно нужно, поэтому от управления светодиодами отказался.

Cкетч на Arduino отслеживает состояние кнопок и джойстиков выполняет отправку команд на irobot_create.

Программный интерфейс irobot_create позволяет манипулировать его поведением. Он считывает информацию с сенсоров при помощи серии команд, включает команды режима, команды привода, звуковые команды, демонстрационные команды и команды опроса сенсоров. Эти команды посылаются на последовательный порт irobot_create.

По ссылке http://www.irobot.com/filelibrary/pdfs/hrd/create/Create%20Open%20Interface_v2.pdf можно скачать описание открытого интерфейса.

Я подсоединял плату Arduino к 25-контактному разъему грузового отсека с помощью спаянного переходника.

 
irobot_creater
Arduino
 1 
  1 (Rx)
  4
 2
  2 (Tx)
  3
 3
  14 (GND)
  GND
 4
   8  (+5В)
  Vin

Назначение кнопок геймпада:
Для управления движением использую правый джойстик геймпада
Кнопка Start/10 — для перевода irobot_create в режим full — полное управление
Кнопка Select/9 — для перевода irobot_create в пассивный режим 
R1 и R2 — для проигрывания мелодий irobot_create
L1, L2 — для установки светодиодов irobot_create
Кнопка 4 (квадрат) — выполнение скрипта движения по квадрату

Скетч на Arduino (подправленная библиотека Usb_Host) — пример PS3USB1.


Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.