Posts tagged ‘Qt’

Ведение логов

postgresql При работе роботов и других устройств могут возникать ошибки или события, время и условия которых требуется сохранить. Для решения подобных задач в программировании используют ведение логов. Например, операционная система GNU/Linux записывает построчно в файлы, такие как /var/log/messages возникающие события, после из этих логов можно получить полезную информацию. Мне бы хотелось более подробно обсудить применение ведения логов в роботах, и рассказать как нашей командой решается эта задача.

Ведение логов можно применять в различных целях. В процессе работы робота могут возникать проблемы с различными устройствами: сервопривод недоступен, или плата сбора данных с датчиков перестала отвечать на запросы. Эти события с временем их возникновения и другой справочной информацией можно сохранить и использовать при отладке системы. Ведение логов позволяет вести статистику по неисправностям. После по этой статистике можно определить например, что устройство сбора данных перестает отвечать при интенсивной работе всех приводов на роботе - как оказывается позднее плате при интенсивной нагрузке не хватает питания, или канал связи забит. Можно сохранять не только ошибки, но и процесс выполнения различных задач. Если вы участвуете в соревнованиях и хотите оценить, как быстро ваш робот выполняет задачи на поле, ведение логов вам подойдет как нельзя лучше. Еще одно интересное применение видения логов, автор узнал при общении с иностранными коллегами: все управляющие команды на устройства и данные с датчиков сохранялись на SD карту, через какое-то время эта карта извлекалась и по статистике выполнялось моделирование работы робота в эмуляторе.

Читать полностью »

Comment

Система технического зрения на видеокарте

В последней версии OpenCV появилась возможность проводить большую часть вычислений на видеокарте, а не на центральном процессоре. Правда для этого нужна видеокарта от nvidia с поддержкой технологии CUDA. Разработчики OpenCV реализовали многие функции библиотеки на языке CUDA и сделали к ним интерфейсы на C++. Таким образом, чтобы использовать видеокарту, не нужно знать CUDA. Нужно лишь знать базовые принципы использования модуля OpenCV GPU. Их мы в данной стать и рассмотрим. Также приведу сравнение производительности вычислений на центральном процессоре и видеокарте.
 
 
 
Читать полностью »

Comment

Моделирование роботов с использованием player/stage.

Перед разработчиками роботов и не только встает задача моделировать алгоритмы движения, взаимодействия робота с окружающим миром. Если вам необходимо протестировать как ваш робот будет ориентироваться в определенной местности с использованием камеры, инфракрасного дальномера и других сенсоров, как работает ваш алгоритм объезда препятствий, то эмулятор player/stage — это как раз то, что вам нужно.

Читать полностью »

Comment

Управление джойстиком с Qt

Иногда встает необходимость управлять роботом или другими устройствами удаленно. Я хочу обсудить дистанционное управлении с помощью джойстика, когда обработчик команд висит на компьютере и команды передаются на робота через канал передачи данных или команды обрабатываются непосредственно на самом устройстве, если он PC совместимо. Очевидные плюсы - дешевая цена джойстика от 300 руб. Удобно - джойстик зарекомендовал себя в играх.

Я написал небольшой класс VJoystickAdapter на С++ для Qt. Он взаимодействует с SDL дает пользователю удобный интерфейс работы с устройством и генерирует Qt сигналы при изменения состояния кнопок, аналоговых осей или других элементов джойстика. Связка SDL Qt делает код переносимым между разными OS. Рассмотрим UML диаграмму нашего  класса. Читать полностью »

Comment