roboforum.ru

Технический форум по робототехнике.

Конфигуриемое GUI для управления самоходными роботами

Конфигуриемое GUI для управления самоходными роботами

abukirev » 24 дек 2013, 14:30

Всем доброго времени суток!

Хотелось бы рассказать об одной идее (она является частью большего, но пока только об этом) и о том, что получилось на данный момент.
Идея: разработка 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). В приложении пример конфигурационного файла для танка-шпиона и скриншот окна приложения.

Что интересно было бы получить от уважаемых форумчан:
  • Отзывы и комментарии о идее
  • Если кого то заинтересовало озвученное выше, то возможено рассмотреть различные варианты взаимодействия - попробовать данный подход / ПО для их роботов, помочь с написанием конфига, библиотеки с логикой.

P.S. / offtop / бага
Запостить тему с первого раза не получилось - при попытке предпросмотра/сохранения/отправки происходило перенаправление на список форумов, без пояснения причины. Позже стало понятно, что это происходит при наличии в тексте знака больше/меньше. Не экранируется - ок, но такое поведение - какая то подлянка по отношению к пользователю.
Вложения
multispy.cfg.txt
Пример конфигурационного файла
(1.91 КиБ) Скачиваний: 408
multispy_sample_gui.png
Скриншот полученного GUI

Re: Конфигуриемое GUI для управления самоходными роботами

SkyStorm » 26 дек 2013, 16:29

Звучит интересно, но описание не сильно понятное.
Это работает только по WiFi?
Если на роботе микроконтроллер а не ОС?
В текстовике что приложен конфигурация кнопок.

PS: Ну и стандартное - что профиль не заполнен? Город какой?

Re: Конфигуриемое GUI для управления самоходными роботами

linvinus » 26 дек 2013, 17:37

Про такой проект слышали? http://ru.wikipedia.org/wiki/ROS_%28%D0 ... C%D0%B0%29
там уже всё есть.

Re: Конфигуриемое GUI для управления самоходными роботами

abukirev » 26 дек 2013, 17:49

Из описания возможно не все понятно - задавайте вопросы, с радостью отвечу.

Конкретно этот робот работает по WiFi - у него там dir-300 внутри. Но тут главное что бы просто была сеть. Физически робот находится в Сарове, а я в Гомеле. Чел, у которого робот - делал для пробы проброс портов для команд/видео, в результате у меня была возможность увидеть видео и передать команды. Но с этим пока не все гладко - в локалке гораздо лучше:)

В принципе рассматриваем варианты расширения способов передачи. Например, если робот будет принимать команды по bluetooth или еще как - можно реализовать поддержку и для этого.

Микроконтроллер vs. ОС - тут нужно смотреть конкретнее, как реализован обмен данными с роботом. В случае с ОС как то все проще - если есть поддержка стека протоколов Tcp/ip, то это здорово.

В тестовике по идее могут быть описаны и другие элементы при необходимости. Его назначение - позволить получить нужное GUI без влезания в исходный код. Данные о действиях пользователя(для этого и нужны id у элементов) передаются в плагин-библиотеку реализующую логику робота по определенным интерфейсам, так же проходят данные для отображения на элементах (аккамулятор - уровень заряда).

PS: профиль - исправим

Добавлено спустя 6 минут 29 секунд:
linvinus писал(а):Про такой проект слышали? http://ru.wikipedia.org/wiki/ROS_%28%D0 ... C%D0%B0%29
там уже всё есть.

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

Re: Конфигуриемое GUI для управления самоходными роботами

linvinus » 26 дек 2013, 18:00


Re: Конфигуриемое GUI для управления самоходными роботами

abukirev » 26 дек 2013, 18:49

linvinus писал(а):http://wiki.ros.org/rqt
http://wiki.ros.org/rviz

Спасибо за ссылки. Немного посмотрел поближе. Есть интересные моменты и в какой то степени схожесть идеологии.
Rviz на сколько я понял не подходит под описанную идею, а вот rqt - это очень интересно. Но с полнотой документации конечно пока плохо. Еще смущает то, что пакет переведен в состояние поддержки и то что там используется старенькая Qt ( 4.8 ). Обновлений на джитхабе нет 3 месяца.

А вы разрабатывали что-нибудь с помощью ROS? В том числе и с rqt?

Re: Конфигуриемое GUI для управления самоходными роботами

linvinus » 27 дек 2013, 09:42

Немного ковырял, сделал модуль для мониторинга состояния аккумулятора, но потом решил что без робота там особо ковырять нечего.
Планирую вскоре вернуться.
С qt вряд ли буду работать, я предпочитаю gtk.

Re: Конфигуриемое GUI для управления самоходными роботами

elmot » 27 дек 2013, 12:42

а как насчет какого-нибудь фремворка на основе html? гибкость, многоплатформенность(включая всемобильные платформы), любой может подпилить это дело?

Re: Конфигуриемое GUI для управления самоходными роботами

linvinus » 27 дек 2013, 14:16

Блин, не нужно пихать html во все дыры.

Re: Конфигуриемое GUI для управления самоходными роботами

elmot » 27 дек 2013, 14:25

Аргументы?

Re: Конфигуриемое GUI для управления самоходными роботами

abukirev » 27 дек 2013, 20:56

На счет web-решения тоже думали, есть как свои плюсы, так и минусы. А так же были причины по которым выбрали на данный момент Qt. Но про web-решение помним и возможно что-нибудь сообразим позже.

Сделаю еще один вброс инфы:) Под НГ планирую к этому делу прикрутить игровой руль - на поиграться. Интересно, кто-нибудь из формучан приделывал к своим роботам управление с USB HID устройств и что из этого вышло?

Re: Конфигуриемое GUI для управления самоходными роботами

elmot » 27 дек 2013, 22:29

html - это не обязательно веб. Все больше и больше фремворков поддерживают html для всяких UI. Android/iOs в первую очередь, так что это очень перспективное дело.
Вот вам ваш Qt: https://qt-project.org/doc/qt-5/qwebframe.html


Вот 5-minute-solution на Android/SL4A/Html/JavaScript


Да, приделывали HID. И Боевые Роботы, и Dead, и я. Это как минимум. Руль, геймпад или джойстик. Лучше всего _хороший_ геймпад(Logitech, например). Для автомобильной схемы движения - лучше всего руль, но за ним сидеть надо.

Руль/авто

Геймпад/танк


Rambler\'s Top100 Mail.ru counter