Знакомство с робототехническим конструктором ТРИК: обратный маятник
Время на прочтение
7 мин
Количество просмотров 64K
Введение и постановка задачи
Что общего между женской грудью и игрушечной железной дорогой? Правильно, и то, и то предназначено для детей, а играют с ними папы. Несколько дней назад я обзавёлся роботехническим конструктором ТРИК. Комплект довольно суровый, разработчики утверждают, что он хорош для быстрого прототипирования и для обучения, а именно (само-)обучение меня в данный момент и интересует.
Что сейчас широко доступно на рынке для робототехнических игр? Самодельное изготовление плат под каждый проект не рассматриваем. Лего, распи, ардуино. Лего прекрасен, но, к сожалению, очень и очень сильно ограничен. Распи и ардуины неплохо расширяются, но довольно неудобны и быстро превращаются в рассыпуху разных карточек-шильдиков-макеток. Вот тут и выходят на рынок питерские ребята со своим конструктором ТРИК.
Итак, моя задача понять, насколько это доступно широкой публике (мне). Я никогда не посещал лекций ни по теоретической кибернетике, ни по теории управления. Закон Ома я выучил ровно настолько, чтобы понять, что розетку лизать не стоит, и паяльник не является моим другом. Но как всякий нормальный (великовозрастный) ребёнок играть я люблю, и поэтому заинтересовался этой темой.
Я получил вот такой набор:
Вообще цена их наборов варьируется от примерно двадцати до семидесяти тысяч рублей. Дороже ли это, чем лего? Нет. Месяц назад я купил Lego EV3. Цена вопроса 370€ базовый набор + 100€ аккумулятор (они там совсем офигели?!) И это ещё я не считал зарядника за тридцать евро. Плюс ко всему в базовый набор не входят ни сонар (+35€), ни гироскоп (+35€). А уж про камеру с микрофоном и вообще можно забыть, не упоминая вообще в принципе отустствия доступа внутрь леговского линукса.
В мой набор (он и разложен на предыдущей фотографии) входят два контроллера, две камеры, два микрофона, сонары, два типа инфракрасных датчиков, кнопки, шесть электродвигателей с оптоэнкодерами, три сервы, два механических захвата, куча колёс, в том числе голономных, зарядки-аккумуляторы-шнурки, зубчатые колёса, рейки и куча металлических пластин и уголков (привет детство!). Конструктор чисто для начала, вообще к контроллеру можно подключить практически всё, на что хватит воображения. Центральный процессор ARM9, под видео отдельный процессор, чтобы не грузить центральный. Программировать можно на чём угодно от ассемблера до C#, вам дают рутовую консоль, плюс весь код прошивки опенсорсный.
Вот так выглядит моя чудо-коробка:
В качестве самого первого проекта я решил собрать обратный маятник, он и представлен на заглавной картинке. Вот так он выглядит сзади:
Из набора мне понадобилось два двигателя, два колеса, чуть крепежа и непосредственно контроллер с батареей. Моей целью не было скопировать туториал из обучающего курса ТРИК, мне интересно обломать зубы обо все проблемы самостоятельно, поэтому я буду изобретать велосипед.
Итак, в моём распоряжении одна степень свободы, акселерометр и гироскоп, энкодеры от двигателей я не использовал. Писать буду на Qt Script.
Чтение датчиков
Изначально я хотел обойтись одним акселерометром. Типа, читаю знак проекции на ось Z, если он положительный, то кручу колёса в одну сторону, если отрицательный, то в другую. В теории всё хорошо, но сделав это, добился только дикого дрыганья моей тележки. Вздохнул и сел штудировать литературу, благо, что она оказалась не сильно долгой. Итак, меня интересует только угол отклонения тележки от вертикали.
Гироскоп
Он же датчик угловых скоростей, выдаёт хороший плавный сигнал, но чтобы отследить с его помощью ориентацию в пространстве, скорости нужно интегрировать. Изначально скорости выдаются с погрешностью, интеграция вносит ещё ошибок, что в итоге приведёт к уплыванию показаний гироскопа. Поэтому только гироскопа нам для маятника недостаточно, нужно его комбинировать с акселерометром.
Вот мой код работы с гироскопом, здесь while(true) — основной цикл программы.
var gyr_x_angle = 0;
var lasttime = Date.now();
while (true) {
var G = brick.gyroscope().read();
G[0] = G[0] + 69; // drift correction
var curtime = Date.now();
var dt = (curtime - lasttime)/1000.0;
lasttime = curtime;
gyr_x_rate = G[0] * 0.07;
gyr_x_angle = gyr_x_angle + gyr_x_rate * dt;
}
В массив G я читаю значения датчика, в следующей строчке произвожу коррекцию интересующей меня оси. Выясняется, что мой конкретно датчик в полном покое показывает в среднем скорость в 69 единиц, поэтому я их вычитаю, чтобы получить интересующую меня скорость.
Датчик выдаёт целое число, которое нужно перевести в углы. В штатном режиме он работает на 2000 градусов/сек (dps). Даташит говорит, что этому соответствует константа в 70mdps/digit. Таким образом, G(digits) * 0.07 (dps/digit) даёт нам угловую скорость. Осталось её проинтегрировать, умножив на время измерения dt.
Акселерометр
Из акселерометра угол получить ещё проще, однако проблема в том, что уж больно он шумный, а уж когда тележка начинаёт дёргаться туда-сюда, вообще туши свет. Вот так выглядит код:
[...]
while (true) {
[...]
var A = brick.accelerometer().read();
var a_x_angle = Math.atan(A[2] / A[0]) * 180.0 / pi;
}
Гасим шум: совмещение показаний акселерометра и гироскопа
[...]
var CF_x_angle = 0;
while (true) {
[...]
CF_x_angle = 0.98*(CF_x_angle+ gyr_x_rate*dt) + 0.02*a_x_angle;
}
Это просто говорит, что значение текущего угла это на 98% значение предыдущего угла с поправкой от гироскопа, а на 2% — это прямое чтение угла от акселерометра. Такое совмещение позволяет бороться с уплыванием гироскопа, обратите внимание, что переменную gyr_x_angle мы тут вообще не использовали.
ПИД-регулятор
Как я уже говорил, я не посещал умных лекций по теории управления, поэтому LQR-регуляторы мне не по зубам за разумное (пара часов) время. А вот ПИД вполне подойдёт.
Код
В предыдущем параграфе мы получили пристойную (я надеюсь) оценку угла отклонения тележки от вертикали. Улучшить её можно, используя фильтрацию Калмана, но это стрельба из пушки по воробьям. Теперь пришло время крутить колёса — чем больше угол отклонения, тем быстрее нужно крутить колесо.
Скорость вращения колеса, которую нам выдаст ПИД, состоит из трёх (взвешенных) слагаемых: пропорциональной, интегирующей и дифференцирующей. Пропорциональная просто равна углу отклонения от вертикали, интегрирующая — это сумма всех ошибок регулирования, а дифференцирующая пропорциональна скорости изменения отклонения от вертикали.
Звучит это страшно, а на деле код крайне простой:
полный код программы
var gyr_x_angle = 0;
var lasttime = Date.now();
var CF_x_angle = 0;
var iTerm = 0;
var CF_x_angle_prev = 0;
var KP = 0;
var KI = 0;
var KD = 0;
while (true) {
var G = brick.gyroscope().read();
G[0] = G[0] + 69; // drift correction
var curtime = Date.now();
var dt = (curtime - lasttime)/1000.0;
lasttime = curtime;
gyr_x_rate = G[0] * 0.07;
var A = brick.accelerometer().read();
var a_x_angle = Math.atan(A[2] / A[0]) * 180.0 / pi;
CF_x_angle = 0.98*(CF_x_angle+ gyr_x_rate*dt) + 0.02*a_x_angle;
// крутим колёса!
var pTerm = KP*CF_x_angle; // пропорциональная составляющая
iTerm = iTerm + KI*CF_x_angle; // интегирующая составляющая
var dTerm = KD * (CF_x_angle - CF_x_angle_prev); // дифференциальная составляющая
CF_x_angle_prev = CF_x_angle;
power = pTerm + iTerm + dTerm;
brick.motor(M3).setPower(power);
brick.motor(M4).setPower(power);
}
Выбор констант KP, KI, KD
Осталась самая сложная часть: найти значения весов в сумме, к сожалению, это можно только делать эмпирически.
Для начала найдём коэффициент KP. Положим KI и KD равными нулю и увеличиваем KP начиная с нуля до того момента, когда наша тележка начнёт совершать (примерно) постоянные колебания, примерно вот так (KP=8, KI=0, KD=0):
Очевидно, что это перебор, тележка получает слишком сильный сигнал от пропорциональной составляющей, поэтому уменьшим её примерно вполовину, получим вот это (KP=5, KI=0, KD=0):
Теперь тележке не хватает чисто пропорционального сигнала, увеличим её скорость, добавив интегрирующей компоненты. Плавно увеличиваем KI с нуля, пытаясь достигнуть момента, когда снова получим колебания тележки вокруг желаемого положения (KP=5, KI=0.5, KD=0):
Теперь добавляем дифференцирующую компоненту, которая будет играть роль демпфера, гася колебания, вот что у меня получается (KP=5, KI=0.5, KD=5):
Заключение
У меня довольно быстро (за один вечер) получилась самобалансирующаяся тележка. Учитывая, что программа у меня получилась аж в двадцать пять строк, то теперь на досуге осталось добавить управление тележкой, повороты и прохождение полосы препятствий, это не должно составить больших сложностей.
Ни электротехнического, ни кибернетического бэкграунда у меня нет, то есть, это вполне доступно рядовым пользователям, что, собственно, мне и очень интересно. Буду продолжать изучение!
По сравнению с тем же леговским набором оно всё, конечно, выглядит несколько топорнее, китайские датчики (как и у лего), но не закатанные в толстенный качественный леговский пластик. Менее вылизанный софт, который находится в активной разработке. Существенно меньше сообщество людей, программирующих на этом контроллере, но учитывая, что проекту без году неделя, да ещё видя недавний успех ардуино, это меня мало пугает. Зато меня восхищает гибкость контроллера, которая получилась из потрясающго энтузиазма, с которым в Питере взялись за разработку.
Обновление: технические характеристики контроллера
Многие не понимают, чем отличается триковский контроллер от ардуино или от леговских коробок. Поэтому вот табличка:
| Центральный процессор (ЦП) | OMAP-L138 C6-Integra™ DSP+ARM® SoC, Texas Instruments |
| Тактовая частота ЦП | 375 МГц |
| Процессорное ядро ЦП | ARM926EJ-S™ RISC MPU |
| DSP-ядро ЦП | C674x Fixed/Floating-Point VLIW DSP |
| Оперативная память | 256 МБайт |
| FLASH — память | 16 МБайт |
| Периферийный процессор (ПП) | MSP430F5510, Texas Instruments |
| Тактовая частота ПП | 24 МГц |
| Интерфейсы пользователя | USB 2.0, WiFi b/g/n, BlueTooth, 2*UART, 2*I2C, Micro-SD, Mic in (stereo), Line out (mono) |
| Интерфейсы двигателей постоянного тока | 4 порта двигателей 6-12V DC, с индивидуальной аппаратной защитой от перегрузки по току (до 2А на двигатель) |
| Интерфейсы периферийных устройств | 19 сигнальных портов общего назначения (6 одноканальных и 13 двухканальных) с питанием 3.3-5V, из них 6 могут работать в режиме аналогового входа |
| Интерфейсы видео сенсоров | 2 входа BT.656 VGA 640*480, поддержка режима стерео |
| Встроенный LCD монитор | 2.4” TFT, цветной, сенсорный, разрешение 320*240 пикселей |
| Встроенный динамик | Номинальная мощность 1W, пиковая 3W |
| Светодиодный индикатор | 2-цветный, программно-управляемый |
| Слоты расширения | 2 * 26-контактных «щелевых» разъема модулей расширения |
| Дополнительное оборудование (входит в состав контроллера) | 3-х осевой акселерометр, 3-х осевой гироскоп, аудиокодек, усилитель, конвертеры и схемы управления питанием, схемы защиты входов от перегрузок по напряжению и току |
| Электропитание | 6-12V DC, внешний сетевой адаптер либо LiPo аккумулятор RC 3P (11,1V) / 2P (7,4V) |
| Габариты корпуса | 125 * 80 * 25 мм |
На чтение 4 мин. Опубликовано
В нашем мире электроники и высоких технологий, все больше детей и молодежи увлекаются робототехникой. Кибернетический конструктор ТРИК – это набор, позволяющий собрать робота самостоятельно. Разработан в Санкт-Петербурге на основе советского конструктора «совметалл».
Содержание
- Конструктор ТРИК: состав набора
- Сферы применения
- Возможности конструктора ТРИК
- Разнообразие комплектаций
Конструктор ТРИК: состав набора
Сочетает в себе простоту детского конструктора и контроллер с мощным встроенным процессором. Комплектация:
- Металлические детали.
- Контроллер.
- Бесплатное ПО.
- Учебные материалы.
Разнообразие деталей, позволяет создавать не только модели, представленные на схемах, но придумывать что-то свое. В комплект входят металлические балки разной длины, пластиковые и металлические панели.
Контроллер имеет 2 процессора, оборудован цветным монитором и встроенным динамиком. Интерфейс сделан интуитивно понятным.
Все программное обеспечение выложено на сайте разработчика. ПО дает возможность работать с цифровым макетом робота на экране компьютера. Готовыми роботами управляют с мобильных устройств через установленное приложение и Wi-Fi подключение.
Сферы применения
Подойдет и младшим школьникам и студентам. Пользователи продукта:
- образовательные учреждения;
- кружки робототехники;
- люди, увлекающиеся роботами.
Начинающие пользователи смогут собрать разнообразные базовые модели. Более опытные создают сложные робототехнические модели, которые способны не только выполнять запрограммированные функции, но даже взаимодействовать друг с другом.
Возможности конструктора ТРИК
Позволяет создать полноценного робота, который будет передвигаться, слушать команды, видеть и даже говорить. Мощный контроллер отвечает за обработку аудио, видеоданных, навигацию, речь. Одновременно с этим управляет сервоприводами и моторами, генерирует информацию с аналоговых и цифровых датчиков. С роботом или компьютером контроллер обменивается данными через Wi-Fi или Bluetooth.
Важно! Металлические и пластмассовые детали совместимы с «совметалл конструктором».
Корпусные детали изготовлены из металла и пластмассы. Прилагаются инструменты для крепежа элементов друг к другу. Также в комплект входят датчики, моторы, сервоприводы, электронные схемы.
Разнообразие комплектаций
Каждый сможет подобрать свой набор. В зависимости от состава подойдет и самым маленьким – учащимся начальных классов и тем, кто уже серьезно увлекся робототехникой. Перечень наборов:
для детского технического творчества (возраст 5+):
- конструкторское бюро No 1: позволяет собрать 10 разных механизмов;
- конструкторское бюро No 2: пользователь сможет собрать своими руками 10 настольных механических игр.
Стоимость от 1500 до 1700 р;
для школ и вузов:
- стартовый: здесь есть все для сбора радиоуправляемой модели. Подойдет в качестве практического пособия для изучения основ кибернетики и программирования;
- малый образовательный: рассчитан на 1-2-х учеников (старше 12 лет) для изучения основ программирования роботов. Добавлены встроенный микрофон, угловой сервопривод, два датчика движения, добавлены более сложные механические детали. Позволяет собрать подъемный кран, робот-манипулятор, грузовик, разные авторские проекты;
- образовательный: содержит весь малый набор плюс дополнительные моторы и сервоприводы для постройки коленчатого манипулятора, инфракрасный датчик, дополнительные большие колеса для создания модели внедорожника и аккумулятор для создания автономных моделей;
- учебная пара: для учебных заведений. Рассчитан на 4-х человек. В комплекте 2 контроллера и детали для 2-х полноценных робототехнических моделей. Используют для проведения соревнований роботов;
- олимпиада НТИ: для подготовки к Олимпиаде Национальной Технологической Инициативы;
- лаборатория: предназначен для изучения технологий. Сбор 4-х стендов по темам: «Электротехника», «ЖКХ», «Охранная система», «Умная теплица». Поможет в понимании принципов устройства «Умного дома».
Важно! Участие в олимпиаде по профилю «Интеллектуальные робототехнические системы» приносит бонусы при поступлении в вузы.
Стоимость наборов в зависимости от комплектации от 40 до 150 тыс.руб.
Все больше учебных заведений приобретают данную отечественную разработку. Конструктор ТРИК учит школьников решать сложные задачи, которые неподготовленного человека могут поставить в тупик.
ТРИК дает возможность юным любителям робототехники попробовать свои силы в конструировании кибернетических моделей. Развивает логическое мышление, помогает начать разбираться в устройстве современных технологий. Дает возможность каждому желающему развить в себе изобретательские качества, которые пригодятся в любой профессии.
Конструкторы роботы
Разработка команды из Санкт-Петербурга, российский кибернетический конструктор ТРИК, появился в 2014 году. На сегодня он состоит из электронных блоков и металлических деталей (балок и панелей с перфорацией под М4 с шагом 10мм по типу Meccano) и полностью совместим с классическими советскими и российскими металлическими конструкторами. ТРИК предназначен для образования и творчества детей старше 12 лет. В его основе контроллер отечественной разработки, способный одновременно обрабатывать аудио и видеоинформацию, синтезировать речь, активировать навигацию, управлять модулями движения, обмениваться информацией с управляющим ПК по беспроводной сети.
В контроллере ТРИК размером 125х80х25 мм имеется 2 процессора – второй, периферийный предназначен для обработки видеосигнала. Такое решение разгрузило центральный процессор ARM926EJ-S с тактовой частотой 375 мГц и памятью 256 Мб. К контроллеру можно подключить до 4 двигателей напряжением 6-12В, 19 периферийных устройств, 2 порта видеодатчиков. Имеется возможность подключения двух 26 контактных «щелевых» планок модулей расширения. Контроллер оборудован собственным цветным монитором 2,4” разрешением 320х240 пикс., встроенным динамиком мощностью 1 Вт, трёхосевым акселерометром, 3-х осевым гироскопом, аудиокодеками, конвертером и программируемыми кнопками. Имеются модули беспроводной связи Wi-Fi и Bluetooth, контроллер оборудован встроенными средствами защиты от перегрузки по силе тока. Электропитание моделей осуществляется от внешнего блока или аккумулятора напряжением 6-12В.
На сайте разработчика в открытом доступе выложены программные коды, библиотеки, оболочки, среда программирования TRIK Studio и шаблоны для печати пластиковых деталей конструктора на 3-D принтере. Программное обеспечение позволяет моделировать виртуальных роботов на экране ПК с помощью последовательности картинок, то есть процесс программирования является интерактивным. Имеется возможность программирования роботов LEGO NXT 2.0 и EV3, но с весьма ограниченными возможностями. Для управления моделями с мобильных устройств существует приложение TRIK Gamepad для Android, которое использует Wi-Fi подключение.
В 2017 году компания ТРИК реализует четыре набора конструктора. Первый, ТРИК Стартовый ценой около 39 тыс.руб., включает в себя контроллер, блок питания, камеру-глаз, два мотора-редуктора с энкодерами, датчики расстояния и касания, 3 колеса и 40 металлических деталей. Из него можно собрать роботизированную тележку или балансирующего робота. Набор ТРИК Малый Образовательный стоит 50 тыс.руб. В него добавлены микрофон с кабелем, угловой сервопривод, 2 датчика для движения по линии, шестерёнки, оси, реечная передача, гусеницы, колёса и хвост манипулятора, а число металлических элементов увеличено до 80. Набор позволяет собрать минимум 3 модели – подъёмный кран, грузовик, робота-манипулятора. Комплектация позволяет собрать несколько авторских моделей с различными функциями, которые можно запрограммировать самостоятельно.
Набор ТРИК Образовательный адаптирован для использования в школах и кружках робототехники. В него добавлен инфракрасный датчик и светодиодная лента. Также в наборе присутствуют 2 сервопривода, 4 мотора, 4 «всенаправленных» омниколеса, хват для манипулятора, большой аккумулятор ёмкостью 4200 мАч. Стоит такая комплектация из 147 элементов около 70 тыс.руб. Максимальная версия конструктора, ТРИК Учебная пара, предлагается за 114 тыс. руб. Она предназначена для образовательных целей и соревнований роботов. В наборе содержится свыше 200 деталей и электронных компонентов.
К преимуществам ТРИК можно отнести необычайную гибкость контроллера, простоту и наглядность программирования, возможность создания самых разнообразных роботов авторской конструкции и прочность металлического каркаса. Условными недостатками можно считать некую «незаконченность» роботов – висящие провода, открытые датчики, а также немалую цену. Однако все недостатки искупаются широкими возможностями для творчества. Данный конструктор больше адаптирован под юных энтузиастов робототехники, чем для обычных детей, любящих «поиграть в конструктор».
Тематический план
-
Установка и настройка среды виртуального робота TRIK Studio
-
Для работы с виртуальным роботом понадобится установить на свой компьютер программу TRIK Studio. Подробные инструкции по установке программы можно найти на официальном сайте по ссылке, либо воспользоваться видеоматериалами с инструкциями, размещенными ниже.
-
Установка среды виртуального робота TRIK Studio
Ссылка на сайт для скачивания среды TRIK Studio
-
-
Основы работы со средой TRIK Studio
-
Как настроить робота
-
Как составлять программы для робота
-
Как создавать свои миры (поля) для робота
-
Как загружать готовые миры (поля) для робота
-
-
Что такое энкодерная модель
-
Энкодерная модель программирования робота Ev3 в TRIK Studio
-
Повороты в энкодерной модели движения робота Ev3 в TRIK Studio
-
Пример решения одной из задач с использованием энкодерной модели
-












