EV3pro
79 members
17 photos
1 video
6 files
7 links
Знай контроллер EV3 как свои пять пальцев!
Download Telegram
to view and join the conversation
В следующий раз разберем один из способов реализации стека для работы с более изощренными фильтроами :)
Давайте поговорим о более эффективном использовании датчика LEGO EV3 Color Sensor.

Стандартные возможности определения цвета у этого датчика довольно скромные: эффективная дистанция примерно 1.5 модуля (1см), набор определяемых цветов строго ограничен т.н. «палитрой LEGO». Грустно? Не то слово. Конечно, к EV3 несложно прикрутить практически любую стороннюю железку с более широким спектром возможностей - но почему не бы не попытаться выжать максимум из того, что есть «здесь и сейчас»? Тем более, что использование "не-LEGO" далеко не всегда разрешено правилами соревнований по робототехнике (привет тебе, WRO).
Те, кто задавался данным вопросом, наверняка видели в интернетах фокус с измерением цветов на дистанции 5-7см. Не каким-нибудь экзотическим хайтехником, а вполне себе штатным колорсенсором. Заманчиво, но вот беда - хранители этой «черной магии» отнюдь не спешат делиться своими (своими ли?) секретами бесплатно. Хотя ничего сверхсложного, по сути, в этом нет - тема преобразования и налаиза цветовых пространств перетерта уже на миллион раз, информации масса. В чем необходимость таких манипуляций с цветом и как их реализовать, разберем ниже.

Для начала нам нужен особый программный блок для среды EV3-G. Скачать его можно со страницы разработчика (https://mindcuber.com/mindcub3r/mindcub3r.html), называется EV3 Color Sensor RGB Block v1.00. После установки в среду разработки, новый блок появится в желтой палитре - от обычного датчика цвета его отличает иконка с тремя цветными кружками.

Предвидя вопрос «а для чего собственно он нужен?», сразу поясню - для анализа цвета необходимо его представление в одном из общепринятых цветовых пространств. В данном случае вместо номера цвета LEGO мы получаем набор из трех цифр - уровень красного (R), уровень зеленого (G), уровень синего (B). Это т.н. "сырое" представление цвета в пространстве RGB (вики: https://ru.wikipedia.org/wiki/RGB). В обычном блоке конверсия "Raw RGB → код цвета" происходит внутри, без нашего участия. Все бы ничего, но программисты National Instruments (разработчики LEGO MINDSTORMS EV3 Software) то ли поленились, то ли намеренно ограничили функционал. В общем, возможности "железа" утилизированы далеко не в полной мере.
Но вернемся к нашим котикам. RGB-модель позволяет без труда описать любой цвет всего тремя параметрами (каждый может иметь значение от 0 до 255). Например, показательно-красный цвет описывается как {R=255, G=0, B=0}, а идеальный синий как {R=0, G=0, B=255}. Имея RGB-представление наблюдаемого объекта, вычислить нужный цвет не составит труда. Однако, есть загвоздка.

Допустим, нам надо определить зеленый цвет. Т.е. ищем что-то вроде {R=0, G=255, B=0}. Но {R=0, G=125, B=0} тоже зеленый, только чуть темнее. И еще масса комбинаций «условно зеленого» с приличным разлетом значений по каждой из RGB-компонент. Даже если мы наблюдаем объект строго определенного цвета - его восприятие весьма условно и зависит от положения датчика, внешнего освещения и и еще кучки различных факторов. Безусловно, вариации цвета можно загнать в соответствующие диапазоны, но оперировать сразу с 3-мя параметрами несколько хлопотно. Представьте себе ситуацию на соревновании, когда верхнее освещение откровенно желтит и тщательно выверенные калькуляции полетели ко всем чертям (алгоритм тупо ошибается и выдает не тот цвет). Вы лихорадочно подбираете комбинацию из 3-х чисел для каждого цвета, пытаясь подобрать необходимую компенсацию - и все это в условиях цейтнота и ограниченных ресурсов... Такое себе удовольствие, знаете ли. Знаем, проходили ;)
Блок синхронного управления моторами - особенно удобен для тележек с оппозитным расположением средних движков. Нужен для прямолинейного движения "вслепую", с использованием показаний одних лишь энкодеров.

1 и 2 настройки - скорости соотв. моторов; 3 - пропорциональный коэффициент (можно для начала оставить как есть); 4 - дистанция движения в градусах; 5 и 6 - инверсия моторов; 7 - принудительная остановка моторов по завершению.

Найдено на просторах 🉐 интернета.
файлы прошивок EV3 разных версий. Есть мнение, что 6-я версия - самая стабильная на данный момент.
WRO'шникам в копилку.
Forwarded from dofmaster
battmon.rbf
809 B
Небольшая полезность от команды АТОМ - для тех, кто хочет ставить точный диагноз штатному LEGO-аккумулятору. Активно пользуемся сами в том числе :) Закидывается в папку с любым проектом, запускается кнопкой с блока.
Согласно спецификации EV3, порты 1 и 2 работают на скоростях вдвое больших, нежели порты 3-4.
Скорость опроса сенсоров может играть важную роль в некоторых процессах - например, в циклах с ПИД-регуляторами.
Разбирая внутренности стандартных программных блоков среды EV3-G наткнулись на недокументированную фишку.

Оказывается, движение моторов с ускорением (акселерация) поддерживается виртуальной машиной и средой EV3-G нативно! Т.е. задаешь, к примеру, целевую скорость и три диапазона расстояний. Первый отрезок мотор плавно набирает скорость с 0 до заданного значения. Второй едет на постоянной скорости. Третий плавно роняет скорость до 0. Стандартные зеленые блоки моторов диапазоны 1 и 3 попросту не задействуют (там тупо забиты нули).

Такая фишка есть в EV3 Basic, более чем реально реализовать этот функционал и в EV3-G ☝️
ACCM_demo.zip
24.2 KB
Собственно, демо-версия блока ACCM от АТОМо - так сказать, "для пощупать"😜. Задействуeтся только связка моторов А+В, отрезки дистанций указываются в градусах. Для изменения направления вращения того или иного мотора используйте стандартные синие блоки инверсии. Еще раз - это тестовая версия, глюки вполне возможны (используем на свой страх и риск).
••• ENG •••

Here is our acceleration/deceleration (ACCM) block. Only motors A and B are can be used.

Parameters:
1. Target speed.
2. Acceleration distance. Speed gradually goes from zero to max.
3. Main distance at full speed.
4. Deceleration distance. Speed goes to zero again. Motors set to coast mode. Done.

All distance parameters must be set in degrees. If you want to change direction of any motor independently - just use regular blue "invert motor" block before.

This a demo block, it hasn't been tested thoroughly - so use it at your own risk!
На днях прошла рассылка от LEGO Education с предупреждением для команд, занятых подготовкой к финалу WRO 2019. Главный посыл: "тем, кто программирует на компах/ноутбуках от Apple, однозначно не стоит обновляться до MacOS Catalina - т.к. она не имеет обратной совместимости с текущим ПО LEGO Mindstorms". Т.е. поставил новую ось и можно сушить весла, параллельно строча возмущенные письма в техподдержку 😂.

Причина сего "злодейства" в том, что LEGO вовсю занята разработкой принципиально новой версии своего ПО, которая выйдет в ноябре (пока только на английском) и станет называться LEGO Mindstorms EV3 Education Classroom. Новая софтина унаследует фишки приложения SPIKE, в том числе новый Scratch-подобный язык программирования.