Глава 28. Работа Arduino с USB-устройствами
379
if(lr<50)
{int left=min(255,max(0,fb1-lr1/2));
int right=min(255,fb1+lr1/2)}
else
{int right=min(255,max(0,fb1-lr1/2));
int left=min(255,fb1+lr1/2)}
analogWrite(9, left);
analogWrite(10, right);
}
Полностью данные скетчи можно найти в папках
examples/_28_1
и
examples/_28_2
сопровождающего книгу электронного архива.
28.6. Подключение к Arduino Android-устройства
через USB
Host Shield
В 2011 г. корпорация Google представила стандарт Android Open Accessory (AOA),
который обеспечивает взаимосвязь между внешними USB-устройствами (Arduino-
подобными платами и др.) и Android-устройством. Начиная с версии Android 3.1
(поддержка AOA портирована и в Android 2.3.4) по замыслу Google все устройства
должны поддерживать USB-соединение в режиме "accessory mode". В этом режиме
подключенное устройство (к примеру плата Arduino) является хостом (в т. ч. питает
шину 5 В/500 мА), а Android-устройство — периферией.
Данная взаимосвязь между устройством на базе Android и Arduino-подобными пла-
тами открывает массу возможностей для разработчика и радиолюбителя: управле-
ние сервоприводами,
двигателями, индикацией с Android-телефона, считывание
состояния датчиков на Android-телефоне или планшете — таких, как гироскоп,
акселерометр, компас, GPS, передача данных через модуль GPRS/HDSPA планшета
и многое другое.
Г Л А В А
29
Arduino и
ROS
29.1. Что такое ROS?
ROS (Robot Operating System, операционная система для роботов) — это структура
программной системы (фреймворк), предоставляющая функционал для распреде-
ленной работы по программированию роботов. ROS (под названием Switchyard)
была первоначально разработана в 2007 году в Лаборатории искусственного интел-
лекта Стэнфордского университета.
При разработке робота обычно приходится
реализовывать свою архитектуру, свой
протокол обмена сообщениями, драйвер пульта управления, логику навигации и пр.
И даже если имеется возможность использовать для этих задач различные готовые
библиотеки, то все равно остается серьезная проблема — объединить их для робота
в единую систему. Разработчики ROS позиционируют свою систему именно как
операционную — для программ взаимодействия и управления
роботом ROS играет
роль операционной системы, предоставляя программам управления свои интерфей-
сы, библиотеки и готовые приложения. ROS работает под уже готовой OC (Ubuntu
Linux), в которой реализует свой дополнительный слой абстракции — конкретно
для управления роботами. ROS обеспечивает стандартные службы операционной
системы, такие как аппаратную абстракцию, низкоуровневый
контроль устройств,
реализацию часто используемых функций, передачу сообщений между процессами
и управление пакетами.
ROS развивается в двух направлениях: в качестве уже описанной здесь операцион-
ной системы и в виде поддерживаемых пользователями пакетов (ros-pkg), органи-
зованных в наборы (
стеки), реализующие различные функции робототехники. Так,
ROS содержит вспомогательные библиотеки и приложения для роботов: преобра-
зование
систем координат, утилиты для визуализации данных и распознавания объ-
ектов, стек навигации и многое другое. Реализованы для ROS и драйверы, позво-
ляющие единым образом работать со многими устройствами: джойстиками, уст-
ройствами GPS, камерами, лазерными дальномерами и пр.
ROS
основан на архитектуре
графов, где обработка данных происходит в узлах,
которые могут получать и передавать между собой сообщения (структурированные