Bubot

Материал из razgovorov.ru
Версия от 10:54, 28 февраля 2015; Разговоров Михаил (обсуждение | вклад) (Новая страница: «Bubot - фреймворк на Python 3 основное предназначение которого это домашняя автоматизация (умн…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Bubot - фреймворк на Python 3 основное предназначение которого это домашняя автоматизация (умный дом, роботы).

Концепция фреймворка

Файл:Файл:Bubot.png

  • Фреймворк состоит из сервисов (buject) реализованных на основе класса process модуля multiprocessing.
  • Каждая железяка это отдельный процесс (buject)
  • Процессы между собой обмениваются при помощи сообщений. Сообщения делятся на события и запросы. Сообщения событий от запросов отличаются только тем что запрос предназначен конкретному адресату, а событие предназначается всем заинтересованным процессам. Сообщения реализованы как очереди Redis. Почему Redis? - это сильно упростило реализацию.
  • Разделяемая память реализована также при помощи Redis
  • Конфигурация и отладка системы производится при помощи веб конфигуратора доступного по адресу [ip:port]/ui/studio

основой фрейсворка является конфигуратор который позволяет создать нового бубота путем набрасывания сервисов . это явлется и основным способом отладки - вы можете быстро сконфигурировать робота состоящего из одного двух компонентов и их отладить. по мимо указания параметров сервисов конфигуратор позволяет отправлять сервисам запросы и сообщения, изменять находу свойства серсиов, перезапускать бубота. также в конфигураторе выводится консоль сообшений и ошибок.

Структура каталогов

  • buject - каталог где находятся доступные сервисы
  • config - конфигурации роботов
  • lib - сторонние библиотеки и модули необходимые для работы
  • static - веб компоненты
    • ui - пользовательский интерфейс bubot

порядок разработки разработка своего бубота сводится к добавлению своих сервисов (buject), которые должны быть унаследованы от любого имеющегося сервиса (за исключением сервиса bubot)

проще всего с фреймворком можно познакомится на примере создания говорящего робота фотографа и системы умного дома.


бобот - говорящий робот фотограф. Покупаем железо. Из доступных платформ на которых работает питон была выбрана raspberry pi. Была куплена последняя на тот момент версия B+ Самым доступным шасси является недорогая китайская радиоуправляемая игрушка. Она должна быть достаточно крупной чтобы увезти все железо с батарей. для того чтобы сделать робота фотограа на колесном шасси нам понадобится контроллер мотора - был выбран контроллер серв. - распберри не имеет ... а робот должен уметь врашать камерой, кроме всего прочего в китайских игрушках рулевое управление было таже заменено на сервуБ для более плавного регулирования поворотов. управляться робот будет п wifi по этому был приобретен usb свисток. робот должен чем то видеть. и здесь наилучшим образом подходит камера. рекомендую брать сразу камеру с широкойгольным объективом (рыбьим глазом) и инфракрасной подсветкой чтобы робот мог видеть в темноте. два стабилизатора питания. для воспроизведения звука были куплены самые маленькие активные колонки. начинка которых была установлена на шасси Собираем железо Устанавливаем необходимый софт Учим бубота фотографа ездить Для управления роботом буду придерживаьтся классической схемы - wsad для движения - мышкой движение камерой. итак начнем с движения. для начала сделаем простую веб страницу с четырьмя кнопками. включем на ней скрипт для обмена с боботом. для того чтобы отправить буботу событие из веб интерфейса достаточно вызвать функцию send_message которой передать параметры сообщения.

т.е для того чтобы поехать вперед нам надо на нажатие кнопки послать сообщение нажали кнопку вперед, но поскольку в будущем мы захотим регулировать скорость машины то правильнее будет дать команду установить мощность мотора 100%. Ну а чтобы наша машина остановилась когда мы кнопку отпустим, на отжетие кнопки вешаем событие установить мощность мотора 0%. Движение назад у нас будет -100%. С поворотами тоже самое, только там делаем установку угла поворота +- 100%

Учим бубота фотографа крутить камерой камерой хочется крутить как башней у танка в одной популярной игре. поэтому был релизован драгабле контрол смысл которого передавать проценты отклонения вверх вниз от центральной позиции. Пример кода приводить не буду - с ним можно ознакомиться Учим бобота фотографа говорить и проигрывать музыку