Всем доброго времени суток!
Хотелось бы рассказать об одной идее (она является частью большего, но пока только об этом) и о том, что получилось на данный момент.
Идея: разработка GUI для управления самоходными роботами достаточно однотипная (движение, управление какими-либо доп. характеристиками). Можно реализовать определенный набор стандартных компонент (кнопки управления, аккумуляторы, видео, геопозиционирование и пр.) и механизмов их удобного создания / конфигурирования без изменения исходного кода. Для GUI из 3-4 кнопок это конечно погоды не сделает, но для более сложных, где количество управляемых характеристик более 7-10 должен быть выигрыш по времени / усилиям.
Так как основной интерес для апробирования здесь представляет ПО, то для экспериментов была выбрана максимально готовая платформа. Так сложилось, что это оказался радиоуправляемый танк-шпион LT-728 4-CH Wi-Fi. В принципе на его месте мог оказаться любой аналогичный робот с поддержкой WiFi и вебкамеры.
Оставим за кадром процесс "взлома" протокола команд (для управления есть стандартные приложения), это сейчас не суть.
Суть в том, что было сделано:
- Разработано Qt приложение (Dispatcher) для создания конфигурируемого GUI. создан минимальный базовый набор виджетов - кнопки, набор вебкамер, вебкамера, аккумулятор.
- Разработана библиотека(network_lib) для сетевых взаимодествий. Цель библиотеки - скрыть детали сетевого взаимодействия. Конкретно для танка-шпиона поток команд шел в UDP
- Разработана библиотека (multispy) реализующая логику управления роботом. Данные о действиях пользователя получаются от Dispatcher и передаются роботу посредством network_lib
- Создан конфигурационный файл для описания GUI для данного робота
Вуаля! Это позволило управлять танком-шпионом из своего десктоп приложения. Для создания GUI для нового конкретного робота необходимо только создать конфиг и реализовать библиотеку с логикой(все это подключается в Dispatcher). В приложении пример конфигурационного файла для танка-шпиона и скриншот окна приложения.
Что интересно было бы получить от уважаемых форумчан:
- Отзывы и комментарии о идее
- Если кого-то заинтересовало озвученное выше, то возможно рассмотреть различные варианты взаимодействия - попробовать данный подход / ПО для Ваших роботов, помочь с написанием конфига, библиотеки с логикой.