Записки начинающего роболюба. 5. О новостях года. РУно идёт по следу semionenkov's blog / 30.08.2016 1. События в мире роботехники, 2016.2. РУно идёт по следу: из опыта разработки робота, следующего по линии.В 2016-ом году произошли события, весьма существенные для мира учебной роботехники.Во-первых, вышла плата Микро:Бит (Micro:Bit) - долгожданное продолжение в ряду британской учебной робототехники. Проект, организованный ББС, в который были вовлечены мировые технологические лидеры, подарил всем британским школьникам определённого возраста по контроллеру.По памяти и портам плата сопоставима по возможностям с Ардуино, но имеет при этом безопасный дизайн без иголок, что важно для школы. Микро:Бит компактнее Ардуино, содержит ряд встроенных датчиков и большой набор лампочек. Встроенность датчиков и лампочек, впрочем, с моей точки зрения, имеет, скорее, эмоционально-рекламную ценность. С точки зрения обучения, после некоторых стартовых проектов, нужно учиться подключению к контроллеру тех датчиков и устройств, которые нужны для проекта, а не крутиться вокруг встроенных возможностей.Что из встроенного реально обогащает плату, так это bluetooth, современная версия 4.0, также известная как BLE. Еще более важный шаг, сделанный разработчиками - программное обеспечение, в широком спектре: от графической среды (типа Блокли - AppInventor) до Питона и JavaScript. Это выгодно отличает проект от Ардуино со старомодным Си.Правда, после первого восторга выяснилось, что добраться до большинства контактов на плате не так просто: нужны отдельные переходники, затраты и конструктивные решения. Красивый и важный для школы безыгольный вид оказался не без издержек. Плюс плата пока не отгружается в Россию, так что время Микро:Бит в России ещё не пришло. Проект открытый, будем надеяться, что китайские компании вскоре его освоят и предоставят по доступным ценам (ещё лучше, конечно, если бы освоили российские компании).Не столь глобальное, но весьма значимое, на мой взгляд, событие произошло в мире Ардуино:Появилась плата Romeo BLE Mini, компактная, весьма доступная по цене и объединяющая контроллер, драйвер моторов и BLE (bluetooth 4.0).Увидев на распродаже сказочно дешёвый смартфон на Андроид, я осознал мощный потенциал связи мобильник-микроконтроллер (раньше смотрел на смартфоны как дорогую игрушку). Идея-фикс автономного робота стала уживаться с идеей робота, управляемого по bluetooth (или Wi-Fi). Это, конечно, не событие в мире, а только в моей голове, личная эволюция.Словом, модель робота, не поддерживающая беспроводную связь с компьютером или мобильным устройством, стала выглядеть в моих глазах морально устаревшей.Я попытался шагнуть сразу к модели на базе Romeo BLE Mini, с возможностью управления по bluetooth 4.0.AppInventor (сейчас AppInventor2 - бета версия) - известная среда визуального программирования для смартфонов на Андроид. Среда набирает популярность в России, была недавно русифицирована (Борис Ярмахов организовал небольшую группу для проекта и сделал львиную долю работы). Программная часть интерфейса AppInventor совпадает с Блокли. Естественно, хотелось опробовать управление роботом программой, созданной на AppInventor.Увы, после долгих мучений, пришлось взглянуть в лицо горькой правде: AppInventor пока (на момент написания статьи) не поддерживает bluetooth 4.0. Особого смысла заниматься этим сейчас нет: нужно просто подождать, пока в AppInventor будут сделаны необходимые правки, созданы образцы программ. Для Ардуино Уно рекомендован источник питания от 7 до 12 вольт. Недолго думая (и, как оказалось, очень легкомысленно), я выбрал батарейку типа "Крона" - 9 вольт, довольно компактно, есть коробочки с выключателем.Собрал модель подвижного робота,запустил... Робот начинал движение, потом неожиданно начинал "пропускать" запрограммированные шаги, потом зачахнул почти совсем. Я поигрался с параметрами программы, но ситуацию это принципиально не поменяло. Начал подозревать дефекты Уно, разрушающие программу скачки при смене питания от USB к батарее, инопланетянин... В конце концов, пришла догадка, что моторам банально не хватает тока, батарейка просто быстро "выдыхается",и моторы не реагируют на слабый ток. Сменил батарейку на более свежую: ситуация слегка улучшилась, но не радикально. Поставил новую - и это тоже проблему не разрешило. Пришлось изучать вопрос более серьёзно. Первым "открытием" было то, что сообщение о токе, который может производить батарейка, не является общепринятым: на упаковке мы видим напряжение и материал электролита, а максимальный ток, как правило, не указывается. Наибольший ток, по свидетельству Google, можно получить от литиевых источников. Из научной добросовестности (цена просто убивала идею бюджетного робота) я купил литиевую "Крону", и робот действительно начал летать. Попутно я начал приглядываться к такой характеристике батареек, как ёмкость. И здесь оказалось, что "Кроны" - далеко не лидеры.Достаточно компактны и хороши по току батарейки АА и ААА, при этом емкость АА в разы выше, чем у ААА. В разряде батареек для робота батарейку АА можно считать чемпионом. 4 батарейки дают 6 вольт, что ниже рекомендованных 7-ми, но многие создатели моделей игнорируют эту рекомендацию, без видимых негативных последствий.Сбор информации о питании также навёл на мысль об использовании аккумуляторов. Одна из идей - использовать перезаряжаемые литиевые элементы 14500 (того же размера, что и АА), 3,7 вольта.Это позволило бы вдвое уменьшить блок питания, по сравнению с батарейками АА.Другая идея - зарядное устройство PowerBox. Устройства относительно громоздки, но обладают большой емкостью, способны давать достаточный ток и не столь уж дороги. РУно (так я назвал своего первенца - Робота на базе Уно, который смог пробежать по линии) неожиданно подкинул задачи не только по питанию, но и по следованию линии.Следование линии, чисто логически, - очень простой алгоритм:Но, как оказалось, на дороге к отладке есть камушки.Основные вопросы, с которыми пришлось столкнуться.Датчики встречаются единичные и сгруппированные (3, 4 и больше датчиков)."Обоймы" не приглянулись: они, как правило, требуют по порту на каждый датчик и увеличивают число проводов.Диапазон работы: если он не указан, или указывается, скажем, 5мм, то это не вдохновляет: есть риск, что отражённый от поверхности сигнал просто не будет доходить до датчика, и датчик часто будет показывать "чёрное". Про некоторые датчики пишут, что их дальность регулируется, но инструкций по регулированию я не встречал, а на эксперименты не сподобился.Монтажные отверстия: встречаются датчики с одним и двумя монтажными отверстиями. Два, с моей точки зрения, явно предпочтительнее.Проверка покупки: естественно, все датчики нужно проверять до включения в конструкцию. Брак у этого типа датчиков, к сожалению, не редкость. Чёрное или белое? Прежде, чем программировать, нужно зафиксировать, на какой цвет датчик выдает 1, а на какой 0. В идеале, конечно, нужно писать программу, которая не зависит от этого и содержит параметр о настройке датчика.Проверка в конструкции: прежде, чем пытаться запустить движущуюся модель, стоит опробовать с простой программой, что датчики в модели работают правильно. Проблемы могут быть как с высотой крепления, так и с контактами. Даже проводам, как оказалось, нельзя слепо доверять: один из проводов датчика у меня оказался с дефектом и работал нестабильно. Есть ощущение, что расстояние между датчиками должно быть миллиметра на 2 больше ширины полосы: если сделать больше, то робот будет делать слишком крутые поправки курса, если меньше - то слишком частые.Но даже когда все проверки и настройки конструкции сделаны, успешное движение робота ещё не гарантировано. Для получения результата мне пришлось поиграть скоростями и паузами для моторов, иначе робот либо не справлялся с поворотом и оказывался снаружи трассы, либо корректировал курс так круто,что оказывался внутри трассы, а на слишком малых скоростях вообще "не тянул". Роль играют, вероятно, многие факторы: мощность батарейки, качество моторов, качество колёс, распределение массы тележки.Распределение массы определённо важно, но к чему именно надо стремиться, я пока не понял. В конструкции я использовал пассивное третье колесо, которое способно совершать полные обороты. Получилось не идеально: иногда колесо встаёт поперёк и стопорит движение. Возможно, не ведущие вращающиеся колёса нужно больше нагружать, чтобы меньше вращались. Может, нужно искать шар вместо колеса, или даже делать конструкцию с двумя колёсами.В моём случае, играла роль и малая трасса, поскольку неизбежная крутизна маленькой трассы создаёт дополнительные трудности.Проверив несколько источников питания, я пришёл к выводу, что их можно разделить на 3 группы: "Не тянут": батарейки типа "Крона", нелитиевые - их, по моему опыту, просто не нужно ставить в конструкцию движущегося робота. "Тянут": аккумулятор PowerBox - в моём случае оказался самым удобным для программирования, работала программа с естественной логикой на максимальных скоростях. "Тянут слишком": литиевая "Крона", пара элементов 14500 или 4 батарейки АА - эту группу пришлось "придерживать", подбирая скорости и паузы, в которых на моторы не подаётся ток. Фактически с последней группой источников я программно моделировал то, что, по идее, должно поддерживаться самим Ардуино: дозирование тока, подаваемого на моторы. Дело в том, что при задании маленькой скорости моторы просто не сдвигали конструкцию с места. Помогла такая уловка: робот двигался на достаточно большой скорости с включенными моторами, а потом двигатели на время отключались. Чередование не позволяло роботу слишком разгоняться и выскакивать с трассы. Все эти изыски (повторюсь - отражающие опыт конкретного проекта: другие модели могут потребовать свою настройку) можно "прочитать" в коде.На очереди включение в модель возможности управления с мобильного телефона по bluetooth.На фото - РУно, эскизный вариант в парадном оснащении.Датчики следования линии подсоединены к контроллеру, датчики касания просто показаны в конструкции.Датчик дальности пока не вписан в конструкцию.Корпус из оргстекла, толщина 3 мм, заказан на лазерном резаке.Стоимость комплектующих (без почтовых расходов) - около 2-х тысяч рублей. Micro:Bit Romeo BLE Mini Uno arduino Ардуино Микро:Бит Уно бюджетный робот следование линии