Posts tagged ‘Software’

Lua в робототехнике

lua_logo

 
 
 

Сегодня хотелось бы поговорить о том, как можно полезно использовать язык Lua при создании роботов. Lua - интерпретируемый язык, который легко интегрируется с кодом на С/С++, позволяющий из себя вызывать функции из библиотеки на С. Язык содержит кучу полезных штучек, прост в освоении и давно используется разработчиками компьютерных игр в их нелегком ремесле, исходные коды интерпретатора и библиотека языка доступны по лицензии MIT, легко скачать скомпилированный интерпретатор и библиотеку. Начнем с постановки проблем:

 
1) необходимо удобно хранить настройки
2) сокращение времени отладки действий робота

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

Comment

Сканирующий лазерный дальномер

Сегодня мы поговорим об интересном для мобильного автономного робота датчике - сканирующем лазерном дальномере. В предыдущей статье был описан алгоритм навигации SLAM. В подавляющем большинстве случаев он базируется именно на этом устройстве. В некоторых других источниках этот датчик называют LIDAR (что неверно!), приписывая всем подобным датчикам уникальные особенности,  включая трехмерную разрешающую способность. На самом деле это не всегда так и мы постараемся развеять часть мифов, а также расскажем о своем опыте использования этого датчика. Читать полностью »

Comment

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

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

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

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

Comment

Сбор данных с инкрементальных энкодеров с помощью МК AVR

Часто возникает необходимость сбора данных с инкрементальных энкодеров. Энкодер можно рассматривать как датчик, который позволяет измерить пройденный путь, скорость, ускорение. Последнее и предпоследнее более предпочтительно, так как позволяет получить вам векторную величину, имея вектор скорости двух точек робота в каждый момент времени можно построить траекторию робота с очень хорошей точностью. Мы называем этот уровень "Внешняя одометрия". Он представляет из себя 2 энкодера, платы измерения скорости и двухпоточное приложение, выполняющее роль интегратора, на выходе которого мы получаем плоские координаты.

На просторах рунета я не раз сталкивался с проблемами пользователей при создании дешевой системы, определяющей скорость и направление вращения. О том, что необходимо для этого сделать - в этой статье. Читать полностью »

Comment

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

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

Comment

Кросс компиляция под микроконтроллеры AVR при помощи CMake

CMake очень мощная система сборки. Она давно известна разработчикам настольных приложений. Её используют такие проекты как OpenCV, KDE. В этой статье рассмотрим, как при помощи CMake собирать проекты под микроконтроллеры AVR. Я пробовал собирать проекты для AVR из под AVRStudio и Eclipse. AVRStudio мне не понравилась как среда разработки. А у Eclipse мне не понравился файл проекта. Я в нём так и не смог сделать некоторые вещи, которые в CMake делаются одной строчкой.
Читать полностью »

Comment

Дискретный ПИД регулятор

При разработке автоматических систем, таких как система следования по заданной траектории мобильного робота или система поддержания постоянной температуры, возникает необходимость поддержания какого-либо параметра в соответствии с заданным значением. Само заданное значение может достаточно быстро меняться во времени. Теория автоматического управления для этой цели предлагает использовать регуляторы. Наиболее распространён ПИД (пропорциональный интегральный дифференциальный) регулятор. В данной статье рассмотрим на простом примере, что он собой представляет и как его реализовать на C++.

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

Comment

FreeRTOS — операционная система для микроконтроллеров. Часть 10. Отладка приложения.


Автор: Андрей Курниц (kurnits@stim.by). Журнал КиТ
Эта статья продолжает знакомить читателя с созданием программ, ра¬ботающих под управлением FreeRTOS — операционной системы для микроконтроллеров. на этот раз внимание будет уделено этапу отладки приложения: мы рассмотрим возможности FreeRTOS, которые помогают найти трудно выявляемые ошибки в программе, определить узкие места программы и оценить пути ее дальнейшего расширения.

Возможности трассировки

Трассировка позволяет исследовать дея­тельность ядра FreeRTOS и проследить по­следовательность и время, когда задачи сме­няют друг друга, а также отследить другие события ядра.

Последняя версия FreeRTOS (на момент написания статьи — V7.0.1) поддерживает два способа трассировки выполняющейся программы:

  1. Механизм трассировки с записью в буфер (Legacy Trace Utility).
  2. С использованием макросов трассировки (Trace Hook Macros).

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

Comment

FreeRTOS. Операционная система реального времени для микроконтроллеров. Часть 9. Программная реализация таймеров.



Андрей Курниц
kurnits@stim.by

Это очередная статья из цикла, посвященного FreeRTOS — операционной системе для микроконтроллеров. Здесь читатель познакомится с нововведением последних версий FreeRTOS — встроенной реализацией про­граммных таймеров

Что представляет собой программный таймер?

В версии FreeRTOS V7.0.0 по сравне­нию с предыдущими версиями появилось существенное нововведение — встроен­ная реализация программных таймеров. Программный таймер (далее по тексту — таймер) во FreeRTOS — это инструмент, позволяющий организовать выполнение подпрограммы в точно заданные моменты времени.
Читать полностью »

Comment