Ev3 программирование
Содержание:
- Microsoft Robotics Developer Studio
- Автономное управление роботом
- Мир без пчел: роботизированное опыление мыльными пузырями
- Обучение роботов
- Программирование игры для embedded-устройства на ESP32: шрифты и система тайлов
- Часть 7: Текст
- Тайлы
- #Структор – безопасные игрушки-конструкторы
- Подключение OLED дисплея ssd1306 к STM32 (SPI+DMA)
- Полезные советы.
- Blender
- Stencyl
- CraftStudio
- Робототехника и искусственный интеллект
- Code Gamer (Thames & Kosmos)
- Что такое робот?
- Распределенный LED Контроллер управления светом (12V 6A)
- Предисловие
- Промежуточный итог
Microsoft Robotics Developer Studio
Microsoft Robotics — это пакет программ, который может использоваться для управления различными роботами и включает в себя полноценный симулятор. В состав Robotics входят следующие компоненты:
- библиотека Concurrent and Coordination Runtime (CCR) — предназначена для организации обработки данных с помощью параллельно и асинхронно выполняющихся методов. Взаимодействие между такими методами организуется на основе сообщений. Рассылка сообщений основана на использовании портов;
- Decentralized Software Services (DSS) — среда, которая позволяет запускать алгоритмы обработки данных на разных ЭВМ, организовывать асинхронное взаимодействие процессов управления различными подсистемами робота;
- Visual Simulation Environment (VSE) — среда визуализации, которая позволяет экспериментировать с моделями роботов, тестировать алгоритмы управления роботами;
- Visual Programming Language (VPL) — язык, предназначенный для разработки программ управления роботами. Программа на таком языке представляется в виде последовательности блоков, которые выполняют обработку данных, и связей между ними.
За симулятор физики в Robotics отвечает Ageia Physx. Очень печально, но в симуляторе отсутствует трение между создаваемыми объектами, хотя моделируется трение между отдельным объектом и платформой, на которой он размещается.
Создать сцену в симуляторе и запрограммировать робота можно на VPL или C#. Естественно, что на C# сцену сделать сложнее, но зато и код получится более эффективный. Возможности Robotics позволяют смоделировать футбол роботов, железную дорогу, манипулятор, добавить на сцену нескольких роботов. Доступные из коробки сенсоры: GPS, лазерный дальномер, инфракрасный дальномер, компас, сенсор цвета, сенсор яркости, веб-камера.
Подробнее о работе с этой средой ты можешь прочитать в номерах 01’13 («Стань робототехником!») и 03’13 («Робот-шпион — это просто!»).
Автономное управление роботом
Следующим шагом будет использование микроконтроллера в вашем роботе в полном объеме. И в первую очередь программирование его алгоритма работы по вводу данных от его датчиков. Автономное управление может осуществляться в различных формах:
- быть предварительно запрограммировано без обратной связи с окружающей средой
- с ограниченной обратной связью с датчиками
- со сложной обратной связью с датчиками
Настоящее автономное управление включает в себя множество датчиков и алгоритмов. Они позволяют роботу самостоятельно определять лучшее действие в любой заданной ситуации. Самые сложные методы управления, которые в настоящее время реализуются на автономных роботах, являются визуальными и слуховыми командами. Для визуального контроля робот смотрит на человека или объект, чтобы получить свои команды.
Управление роботом для поворота налево при помощи чтения с листа бумаги стрелки, указывающей влево, намного сложнее выполнить, чем можно было бы представить. Служебная команда, такая как «повернуть налево», также требует довольно много программирования. Программирование множества сложных команд, таких как «Принесите мне тапочки» уже не фантазия. Хотя требует очень высокого уровня программирования и большого количества времени.
- Преимущества – это ”настоящая» робототехника. Задачи могут быть очень простым, например, от мигания света, основанного на показаниях одного датчика. До посадки космического корабля на далекой планете.
- Недостатки зависят только от программиста. Если робот делает что-то, чего вы не хотите чтобы он делал, то у вас есть единственный вариант. Это проверить свой код, изменить его и загрузить изменения в робота.
Мир без пчел: роботизированное опыление мыльными пузырями
Школьный курс биологии научил нас тому, что все живые организмы так или иначе связаны друг с другом. Посудите сами, на поле растет трава, зайцы едят траву, лисы едят зайцев. Но если одно из звеньев этой демонстрационной цепи исчезнет, то пострадают другие: исчезнут хищники — зайцы начнут плодиться и съедят всю траву; исчезнет трава — зайцам нечего будет есть, следовательно, лисы также будут голодать; исчезнут зайцы — трава будет расти бесконтрольно, а лисы будут голодать. Пример достаточно утрирован, но суть доносит. Подобная ситуация касается и пчел, численность которых за последние годы катастрофически упала. Пчелы, как мы знаем, не только делают мед, но и выполняют одну из важнейших операций в природе — опыление. Сегодня мы рассмотрим исследование, в котором ученые Си Ян и Эйдзиро Мияко описывают роботизированную систему опыления цветов посредством мыльных пузырей. Из чего состоит система, как именно она работает, и почему мыльные пузыри? Об этом мы узнаем из доклада ученых. Поехали.
Обучение роботов
Любой современный робот представляет собой обучаемую и адаптивную систему. Вся необходимая информация, включающая знания и умения, передается ей в процессе обучения. Это осуществляется, как непосредственным занесением в память процессора соответствующих данных (детальное программирование — семплинг), так и с использованием сенсоров робота (методом наглядной демонстрации) — все движения и перемещения механизмов робота заносятся в память и затем воспроизводятся в рабочем цикле. Обучаясь, система перестраивает свои параметры и структуру, формирует информационную модель внешнего мира. Это и есть основное отличие роботов от автоматизированных линий, промышленных автоматов с жесткой структурой и других традиционных средств автоматизации. Перечисленные методы обучения обладают существенными недостатками. Например, при семплинге перенастройка требует определенного времени и труда квалифицированного специалиста.
Весьма перспективной выглядит программа для программирования роботов, представленная разработчиками Лаборатории информационных технологий при Массачусетском технологическом институте (CSAIL MIT) на международной конференции промышленной автоматизации и робототехники ICRA-2017 (Сингапур). Созданная ими платформа C-LEARN обладает достоинствами обоих методов. Она предоставляет роботу библиотеку элементарных движений с заданными ограничениями (например, усилие хвата для манипулятора в соответствии с формой и жесткостью детали). В то же время, оператор демонстрирует роботу ключевые движения в трехмерном интерфейсе. Система, исходя из поставленной задачи, формирует последовательность операций для выполнения рабочего цикла. C-LEARN позволяет переписать существующую программу для робота другой конструкции. Оператору при этом не требуются углубленные знания в области программирования.
Программирование игры для embedded-устройства на ESP32: шрифты и система тайлов
Перевод
Начало: сборка, система ввода, дисплей.Продолжение: накопитель, аккумулятор, звук.
Часть 7: Текст
Завершив со слоем кода Odroid Go, мы можем приступить к созданию самой игры.
Начнём с отрисовки на экране текста, потому что это станет плавным введением в несколько тем, которые пригодятся нам в будущем.
Эта часть будет немного отличаться от предыдущих, потому что в нём очень мало кода, выполняемого на Odroid Go. Основная часть кода будет относиться к нашему первому инструменту.
Тайлы
В нашей системе рендеринга мы будем использовать тайлы. Мы разобьём экран 320×240 на сетку тайлов, каждый из которых содержит 16×16 пикселей. Так мы получим сетку шириной 20 тайлов и высотой 15 тайлов.
Статические элементы, например, фоны и текст, будут рендериться при помощи системы тайлов, а динамические элементы, например, спрайты — иным способом. Это означает, что фоны и текст можно будет располагать только в фиксированных местах, а спрайты можно поместить в любое место экрана.
#Структор – безопасные игрушки-конструкторы
Этот конструктор производится в России и отличается от других тем, что его детали выполнены из вспененного ПВХ. Их толщина составляет пять миллиметров, что позволяет создавать небольшие, но достаточно прочные конструкции.
А тот факт, что ПВХ – мягкий материал, позволяет решить вечную проблему конструкторов – детали не такие, как их хочется видеть. В данном случае все решается обычным канцелярским ножом или скальпелем – можно подогнать детали под нужную форму, чтобы лучше было собирать.
Достоинства моделирования из сборной конструкции ПВХ:
- низкая стоимость;
- простота обработки – достаточно лишь вооружиться ножом, карандашом и линейкой;
- высокая прочность;
- влагоустойчивость;
- пожаробезопасность – температура возгорания листового ПВХ превышает 400 градусов Цельсия.
Малую прочность конструкции производители предлагают решить двумя способами. Первый – просто склеить детали. Лучше всего для таких целей подойдет специальный клей “Космофен”. Второй способ – объединить #Структор с советским (или аналогичным) железным конструктором.
#Структор от “Амперка”
Хоть детали от такого обращения долго не проживут, вы всегда сможете купить лист пластика и вырезать новые. Чертежи деталей находятся в свободном доступе, да и фантазию никто не исключал.
Подключение OLED дисплея ssd1306 к STM32 (SPI+DMA)
В данной статье будет описан процесс подключение oled дисплея с контроллером ssd1306 разрешением 128×64 к микроконтроллеру stm32f103C8T6 по интерфейсу SPI. Также мне хотелось добиться максимальной скорости обновления дисплея, поэтому целесообразно использовать DMA, а программирование микроконтроллера производить с помощью библиотеки CMSIS.
Подключение
Подключать дисплей к микроконтроллеру будем по интерфейсу SPI1 по следующей схеме:
- VDD-> +3.3В
- GND-> Земля
- SCK -> PA5
- SDA -> PA7(MOSI)
- RES-> PA1
- CS-> PA2
- DS-> PA3
Передача данных происходит по возрастающему фронту сигнала синхронизации по 1 байту за кадр. Линии SCK и SDA служат для передачи данных по интерфейсу SPI, RES — перезагружает контроллер дисплея при низком логическом уровне, CS отвечает за выбор устройства на шине SPI при низком логическом уровне, DS определяет тип данных (команда — 1/данные — 0) которые передаются дисплею. Так как с дисплея ничего считать нельзя, вывод MISO использовать не будем.
Полезные советы.
Создавайте управляемые куски функционального кода.
Создавая сегменты кода, специфичные для каждого продукта, вы постепенно создаете библиотеку. Создайте файловую систему на своем компьютере, чтобы легко найти необходимый код.
Документируйте все в коде, используя комментарии.
Документирование всего необходимо практически для всех рабочих мест, особенно для робототехники. По мере того, как вы становитесь все более и более продвинутыми, вы можете добавлять комментарии к общим разделам кода. Но при запуске вы должны добавить комментарий к (почти) каждой строке.
Сохраняйте разные версии кода.
Не всегда перезаписывайте один и тот же файл. Если вы обнаружите, что ваши 200+ строк кода не будут компилироваться, не стоит останавливаться только на этой версии кода. Вместо этого вы можете вернуться к ранее сохраненной (и функциональной) версии и добавить или изменить ее по мере необходимости. Код не занимает много места на жестком диске. Поэтому вы можете спокойно сохранять несколько копий.
При отладке робота поднимите его.
Нужно, чтобы колеса, гусеницы или ноги не касались поверхности. Тогда ваш робот не сможет себе навредить даже случайно. Не закрывайте деталями кнопку отключения питания. Это пригодится для того, чтобы в случае необходимости можно было его отключить.
Если код делает что-то, что кажется неработоспособным.
Через несколько секунд, выключите питание. Скорее всего проблема не исчезнет сама собой и нужна корректировка, а пока вы можете уничтожить часть механики. Сначала подпрограммы могут быть трудны для понимания, но они значительно упрощают ваш код. Если сегмент кода повторяется много раз в коде, он является хорошим кандидатом для замены подпрограммой.
Blender
Blender — бесплатный пакет для создания трехмерной (3D) компьютерной графики, содержащий средства моделирования, анимации, рендеринга, постобработки видео, а также создания игр. Функций Blender вполне достаточно для работы как обычным пользователям, так и профессионалам. В программе есть все основные инструменты, используемые в профессиональных ЗD-редакторах.
В сравнительно небольшой объем Blender помещено полноценный редактор со всеми основными функциями и набором текстур, моделей и обработчиков событий. Дополнительные возможности в Blender реализуются за счет подключения плагинов — как официальных, созданных авторами редактора, так и разработанных пользователями.
Основные возможности Blender:
- Поддержка разнообразных геометрических примитивов (включая полигональные модели, систему быстрого моделирования в режиме SubSurf, кривые Безье, поверхности NURBS, метасферы, скульптурное моделирование и векторные шрифты).
- Универсальные встроенные механизмы рендеринга и интеграция с внешним рендерером YafRay.
- Инструменты анимации, среди которых инверсная кинематика, скелетная анимация и сеточная деформация, анимация по ключевым кадрам, нелинейная анимация, редактирование весовых коэффициентов вершин, ограничители, динамика мягких тел, динамика твердых тел, система волос на основе частиц и система частиц с поддержкой коллизий
- Python используется как средство создания инструментов и прототипов, системы логики в играх, как средство импорта и экспорта файлов, автоматизации задач.
- Базовые функции нелинейного редактирования и комбинирования видео.
- Game Blender — подпроект Blender, предоставляющий интерактивные функции, такие как определение коллизий, движок динамики и программируемая логика.
Stencyl
Еще одна среда для разработки простых компьютерных игр, которая не требует от пользователя знания кодов и языков программирования. Вам придется работать со схемами и сценариями, представленными в виде блоков. При этом разрешается перетаскивать объекты и характеристики мышкой. Несмотря на то, что в блоках предусмотрены десятки вариантов, авторы Stencyl позаботились и о тех, кому этого может не хватить. Так, разрешается прописывать в блоках свой код. Правда, для этого понадобится разбираться в программировании.
Пользователям, которые работали в Photoshop, понравится графический редактор Scene Designer, предназначенный для рисования игровых миров. Его инструментарий поразительно напоминает меню популярного фоторедактора.
CraftStudio
Добавляйте и изменяйте объекты в 3D пространстве, прописывайте сценарии и правила, рисуйте анимации и эффекты. Авторы CraftStudio продумали всё, чтобы создание игр на PC с нуля в реальном времени было понятным и увлекательным. При этом все инструменты для моделирования и анимаций встроены в программу и понятно обозначены. То же самое можно сказать и о визуальном редакторе сценариев. Что самое интересное — вы не обнаружите проблем с совместимостью форматов или их конвертацией. Для более продвинутых пользователей предусмотрен текстовый редактор Lua Scripting.
Робототехника и искусственный интеллект
Специалисты Оксфордского университета предупреждают, что в ближайшие два десятилетия машинные технологии заменят более половины сегодняшних рабочих мест. Действительно, роботы давно уже трудятся не только на опасных и трудных участках. Например, программирование торговых роботов значительно потеснило брокеров-людей на мировых биржах. Несколько слов об искусственном интеллекте.
В представлении обывателя это антропоморфный робот, способный заменить человека во многих сферах жизни. Отчасти так и есть, но в большей степени искусственный интеллект — это самостоятельная отрасль науки и технологии, с помощью компьютерных программ, моделирующая мышление «Homo sapiens», работу его мозга. На сегодняшнем этапе развития ИИ больше помогает людям, развлекает их. Но, по прогнозам экспертов, дальнейший прогресс в области робототехники и искусственного интеллекта может поставить перед человечеством целый ряд морально-этических и юридических вопросов.
В этом году на выставке роботов в Женеве самый совершенный андроид София заявила, что учится быть человеком. В октябре София впервые в истории искусственного интеллекта была признана гражданкой Саудовской Аравии с полноценными правами. Первая ласточка?
Code Gamer (Thames & Kosmos)
Но детям не обязательно уметь кодировать до того, как они научились ходить. Для детей более старшего возраста компания Thames & Kosmos создала свой способ обучения цифровому языку. Этот набор знакомит детей с программированием в игре, шаг за шагом. На каком уровне дети будут изучать основы языка программирования? На разных! С помощью геймпада играйте 15 уровней игры на планшете. Дети могут подключить один из четырёх сенсор-ботов в геймпад, чтобы активировать особые полномочия. Кельвин поможет плавить ледяные блоки, когда игроки держат тёплый температурный датчик в руках; Децибел помогает пользователям, если они вызывают его датчик звука с шумом; Люмен показывает вещи, скрытые в тёмных местах, когда игроки хотят пролить свет на что-то; Ньютон будет пробиваться через препятствия на пути, если пользователи качают сенсорный датчик.
Самое интересное заключается в том, что дети могут применить свои новые знания над созданием крутых проектов, в том числе с использованием датчика света, чтобы сосчитать, сколько раз открыли ящик, создать программу сигнализации, которая отправляет сообщения. Дети будут разгадывать загадки, узнавать, какие команды заставят светодиоды на геймпаде мигать и активировать звук, и узнают, как геймпад работает и как его можно настроить. Плюс ко всему, дети будут также создавать собственные уровни в игре, делиться ими, получать доступ к другим уровням игроков. Совместное использование — это здорово!
Что такое робот?
Существует множество определений робота и никакого реального консенсуса пока не достигнуто. Дадим такое определение робота:
Это означает, что тостер, лампа, или автомобиль не будет рассматриваться как роботы. Прежде всего они не имеют возможности воспринимать свое окружение. С другой стороны, пылесос, который может перемещаться по комнате или солнечная панель, которая направлена на солнце и изменяет угол наклона в зависимости от положения солнца, могут быть рассмотрены как роботизированные системы.
Важно также отметить, что “роботы” участвующие в войнах роботов, или какие-либо исключительно дистанционно управляемые устройства не подпадают под это определение. Скорее всего они будут ближе к более сложной радиоуправляемой машине
Также можно создать дистанционно управляемого робота на базе известных робототехнических конструкторов. Одним из таких конструкторов является Lego EV3.
Это определение является достаточно общим. Хотя оно может понадобиться в будущем для того чтобы понимать самые последние достижения в этой области. Робототехника в наше время стремительно развивается. Следовательно будет требоваться все больше специалистов для разработки, наладки, программирования и обслуживания роботов и роботизированных линий.
Есть 10 статей.
Каждая статья проведет вас через один шаг к созданию универсального мобильного робота. Это позволит вам создать своего собственного мобильного робота для выполнения задач по вашему выбору. Каждый урок будет проиллюстрировано примером из опыта. Статьи предназначены для того, чтобы быть изучены одна за другой и опираются на информацию, полученную раньше.
Распределенный LED Контроллер управления светом (12V 6A)
Предисловие
Светодиодное освещение появилось достаточно давно. Китайцы, конечно, определённо «подпортили» его восприятие низкокачественными «поделками«, редко выхаживающими больше года. Но — если «правильно приготовить», то светодиодные светильники не только могут работать годами, но и — вполне заменить «обычные» источники освещения, «чуть более, чем — полностью» (С)
Поэтому в течение нескольких лет сложилось, что практически ВСЕ освещение у меня дома (и — в мастерской) — светодиодное. И не надо говорить — что это мол, «ненадежно» = некоторые светильники уж семь лет как работают. А когда светильник — тонкий, лёгкий и практически не нагревается — можно такого «наворотить» с так называемым «зонированием»…
Спрятать RGBW за книжную полку, сделать индивидуальное освещение «читальной зоны» у журнального столика, даже пространство под кроватью подсветить. На кухне — вообще «пространство вариантов». Особенно удобной оказалась подсветка пола, спрятанная под кромкой рабочей поверхности.
Самый «цимес» при правильном подходе — источник света не «бьёт в глаза», а спрятан, и даёт мягкий рассеянный свет. А это очень удобно. Быстро привыкаешь!
Единственный минус — когда светильников становится много — ими уже неудобно управлять!
Промежуточный итог
Цель достигнута: пылесос разговаривает. Я рад, что не стал городить слишком много сразу всего. Следующий шаг связать распознавание образов с потоком, регулирующим движение, а также попробовать transfer learning.
Искусственный интеллект, тема настолько объемная, что сложно определить, за что взяться в первую очередь. На мой взгляд не существует единой точки входа. Совсем не обязательно начинать с вычисления сложных производных или курсов программирования на Python (хотя и то и другое безусловно полезно). Выбирайте то, что интересно лично вам, и да пребудет с вами сила довести начатое до конца.
P.S. Детали реализации лежат в репозитории. Комментарии и пулл реквесты приветствуются.