Skip to content

Архитектура

Yurii Litvinov edited this page Oct 9, 2013 · 1 revision

На диаграмме квадратиками обозначены отдельные собираемые модули, стрелками --- кто к кому линкуется. Основной модуль --- библиотека trikControl, которая представляет API для программирования робота из Qt Script или C++ с Qt. Этой библиотеки достаточно для написания софта на С++. Остальные модули нужны для исполнения на роботе скриптов или управления роботом извне.

Далее --- архитектура trikControl на данный момент.

Главный класс тут Brick, он представляет контроллер и предоставляет доступ ко всей периферии робота. Кроме того, он грузит конфигурационный файл и инициализирует периферию. Описание того, что подключено к роботу на данный момент, находится в конфиге. С помощью конфига можно задавать любое количество моторов и сенсоров, определять их типы (включая предельные значения показаний или калибровку для моторов). Важным понятием является логический порт --- строка, идентифицирующая периферийное устройство в прикладной программе. Например, в вызове brick.powerMotor("1").setPower(100) "1" указывает на логический порт "1", как он определён в конфиге. Логическим портам можно назначать разные файлы устройств и типы оборудования, можно иметь несколько логических портов для одного файла устройств (например, порт "A" будет в программах означать сенсор света, подключённый к какому-нибудь физическому порту на плате, а порт "B" будет означать сенсор касания, подключённый к этому же физическому порту).

Все устройства, требующие I2C, должны общаться с помощью объектов класса I2cCommunicator, создаваемых и предоставляемых Brick-ом, чтобы не создавать заново подключения.

Далее --- архитектура trikScriptRunner.

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

На следующей картинке --- текущая архитектура trikGui, пользовательского интерфейса, появляющегося при запуске робота.