Привыкнуть к тому, что ты дед, невозможно. Наверное, когда у меня будут правнуки, я все равно буду вздрагивать, слыша слово «дедушка» в свой адрес. Какой дедушка? Я все тот же случайно выживший мальчик, только игрушки дороже!
Кстати, об игрушках. С некоторых пор я уже не уверен, что мои дороже. Примерно с тех самых пор, как мой внук (каюсь, не без моей помощи) стал заниматься робототехникой. А современная образовательная робототехника, если вы еще не знали, это по большей части Lego. Не то Lego, которое с кубиками, а серьезно повыше уровнем – с контроллерами, датчиками, приводами, программированием и вот этим всем. Цена у него тоже повыше уровнем, но оно того стоит, поверьте. Мне как «яжинженеру», конечно, приятно видеть, что мой внук осваивает многие важные для инженера вещи с раннего возраста, значительно раньше сверстников. Но как родного человека меня в этом гораздо больше радует совсем другое: меняется круг общения, меняются темы для общения. Еще не так давно максимум, что я мог услышать из разговоров внука с друзьями, было что-то типа «Го, я создал», то теперь я все чаще слышу что-то из другой оперы: «Блин, ну я все равно не понимаю, зачем в ПИД-регуляторе интегральная составляющая!». Нет, игры никуда не делись. Но они теперь не главное в жизни ребенка – а это сегодня, пожалуй, чуть ли не главное в жизни многих родителей.
Но время идет и игрушки надоедают. Случилось это и с нами: при все своей многогранности Lego уже мало что нового может дать внуку. И вот мы, наверняка повторяя путь многих до нас, прямо сейчас стоим перед основным вопросом каждого юного робототехника: есть ли жизнь после Lego?
Ну, а раз не мы первые, то наверняка кто-то из тех, по чьим стопам мы следуем, подумал и о нас тоже, и оставил нам, потомкам, что-то, что облегчит наш путь. Я бы так сделал. Да, собственно, я прямо сейчас так делаю. Конечно, интернет кишит обзорами робототехнических платформ, конструкторов, наборов, экосистем и черта в ступе. Конечно, большая часть из них заказные, и нужно делить на 64 все, что читаешь. Но есть в этом и своя прелесть: читаешь обзор, заказанный компанией А, восхваляющий достоинства продукта А и честно описывающий недостатки продукта Б, потом читаешь обзор, заказанный компанией Б, восхваляющий достоинства продукта Б и честно описывающий недостатки продукта А - и вот перед тобой уже сравнительная таблица достоинств и недостатков обоих продуктов. И даже на 64 делить не надо, ибо, если мы выбираем между А и Б, нас интересуют не абсолютные, а относительные величины. Останется выбрать то, что лучше удовлетворяет нашим требованиям. А вот тут-то и начинается интересное. Каковы они, наши требования? Чего мы хотим? Вы когда-нибудь задавали вопрос “Чего ты хочешь” подростку? Впрочем, мы ведь тут не о воспитании подростков. В общем, понимание и формулирование наших требований было отдельной, полной драматизма, историей, выходящей далеко за рамки этого повествования. Здесь я приведу лишь ее итоги. Итак, мы хотим, чтобы это:
Не было очередной игрушкой для очередных соревнований. Мы уже достаточно взрослые, чтобы понимать, что настоящие промышленные роботы не ездят по линии на время, не выталкивают что-то (будь то неподвижные объекты, похожие на жестяные банки от напитков, или такие же роботы), из идеального круга, не блуждают в лабиринтах строго определенных размеров, не играют в футбол, не… в общем, вы поняли. Настоящие промышленные роботы выполняют конкретные, довольно скучные задачи и не соревнуются друг с другом.
Помогло нам освоить востребованный язык программирования. А лучше несколько.
Было по возможности гибким с точки зрения доступных конструкторских решений, подключаемых датчиков, приводов и прочих робототехнических штук.
Позволяло как прямое управление, так и программирование автономных действий.
Поддерживало дистанционное управление и программирование по сети.
Стоило дешевле чугунного моста.
Что ж. Гугл в помощь - будем искать. Подробный пересказ многочисленных обзоров и отчетов вряд ли будет представлять какой-то особый интерес, так что сократим этот раздел до пары главных выводов.
Рынок огромен. Можно найти много хороших, по-настоящему интересных решений. Но, как правило, что-то хорошее дорого, а что-то по разумной цене оказывается так себе по качеству или функционалу.
Одно из интересных наблюдений - зачастую попадаются либо хорошо продуманные с механической точки зрения конструкторы, которые неудобно программировать, либо конструкторы с хорошими средами разработки, которые неудобно собирать. Золотую середину, кажется, еще не нашли.
Arduino, Raspberry Pi и подобные штуки - это целый мир, в который мы, думаю, еще окунемся.
В процессе поиска информации наткнулись мы и на вот эту статейку: https://habr.com/ru/post/670352/. Тоже обзор, вряд ли чем-то лучше или хуже остальных, но привлек внимание конструктор, которого мы раньше нигде не встречали. Вероятно, какая-то молодая фирма, пробивающая себе путь к сердцам юных робототехников. Цена норм, модель манипулятора выглядит интересно, обещают программирование на блочных и текстовых языках - в общем, мы купились и купили.
Заказ приехал довольно быстро. В компактной картонной коробочке.
Приятно видеть, что место на коробке задействовали полностью: на каждой стороне есть какая-то информация - либо рекламная, либо полезная.
Посмотрим, что внутри.
Сверху довольно много бумаги. Впрочем, кажется, что вся она по делу: упаковочный лист, картинки с видом разных деталек и подробным описанием сборки сложных узлов (спойлер: пригодились), полигон для упражнений.
Под бумажками коробочки. Компактно, аккуратно, с поясняющими надписями. Порадовало расположение отвертки: это здорово экономит место в прямоугольной коробке. Впрочем, само наличие в наборе отвертки (вообще-то двух), ключа и всего необходимого для сборки - это очень хорошо. Ikea-стайл, нам с внуком понравилось.
В коробочках все по пакетикам, с описаниями и артикулами (спойлер: очень пригодилось, инструкция по сборке постоянно на эти артикулы ссылается). Ну и акриловые платы с детальками для выламывания. Из них, правда, высыпалось немножко мусора, но это, похоже, неизбежно для таких штук.
В общем, от этапе распаковки впечатления остались сугубо положительные. Аккуратно, компактно, информативно, полезно.
Приступим к сборке.
Инструкция. Инструкции я люблю. Сколь бы творческим ни был человек, а собирать что-то по инструкции всегда легко и приятно. Начинаем с первой страницы - и вот она, первая загадка:
Ну где же, где же он, этот единый блок фторопластовых шайб? Молчание было ему ответом:
Ничего похожего на картинку в инструкции. Ну да ладно, не унываем и идем дальше - если верить инструкции, у нас впереди еще 8 часов веселья! Глядишь - и шайбы по ходу найдутся. А идеальные инструкции я пока видел только у Lego и Ikea. Ну и, конечно, мой внутренний граммарнаци протестует всякий раз, когда видит в документах грамматическую или пунктуационную ошибку. Но по нынешним временам этим грешит, кажется, вообще любая документация. Мало кому из производителей чего угодно приходит в голову нанять учительницу русского языка, чтоб она перед релизом прошлась с красной ручкой по документации. А было бы неплохо. Ну да ладно, едем дальше, война план покажет!
Про шайбы забыли мгновенно: надо собрать схемку для установки сервоприводов в среднее положение. Увлекательный квест на мелкую моторику, спасибо авторам за понятные рисунки. Скачиваем, как предлагают, программу “Пульт управления роботом”, пробуем установить… Упс. Windows не устает заботиться о нашей безопасности. Неизвестный издатель:
Мы-то знаем, что делать! Жмем на “Выполнить в любом случае” и ставим. Но было бы неплохо знать об этом заранее - из той же инструкции, например. К счастью, установка предельно проста, пару кнопок нажать, но, если бы я хотел установить строго по инструкции, меня бы ждала еще одна загадка:
Ищем раздел 5 в нашей инструкции по сборке - ожидаемо не находим там ничего похожего. Ах да, это же руководство, которое мы можем скачать на странице download! Идем туда.
В принципе, человек с половиной мозга способен понять, что именно это и имелось в виду, но могли бы все же назвать они и те же документы в двух местах одинаково. Документаторам на заметку, если они когда-нибудь будут это читать. Ну а мы идем дальше.
Кстати, пока искали шестеренки для сервоприводов, внезапно обнаружили те самые фторопластовые шайбы, которые не смогли найти вначале. Вот они, родимые. Я так и знал, что любая проблема решается сама собой путем ожидания:
Но нас-то сейчас интересует установить сервоприводы в среднее положение. Так вот, когда я говорил, что подключение проводов было квестом на мелкую моторику, я еще не знал о существовании задачи “двумя шурупами прикрутить шайбу малой шестерни к малой шестерни сервопривода” (авторская орфография сохранена). Вот где мелкая моторика, а провода это детский лепет вообще. Внук (да что там, и я тоже) пару раз порывался бросить все. Это вам не лего одним щелчком собирать. Вдоволь наползавшись по полу в поисках разлетающихся во все стороны шурупов и мелких деталек, я задался еще одним вопросом: а есть ли запасные? Что ж, не узнаем, пока не соберем всю конструкцию. С этим квестом мы справились - и вот уже все четыре сервопривода в среднем положении. Успех! Едем дальше!
А вот когда стали шестеренки на эти сервоприводы в среднем положении устанавливать, перфекционист во мне испытал тяжкие моральные страдания. Получается либо так,
либо так:
Ни то, ни другое горизонтальным положением не назовешь. Пришлось выбрать меньшее из зол и оставить положение, где отклонение меньше.
Кстати, после этого этапа винтиков с артикулом 07-014 у нас не осталось ни одного. Это тревожный звоночек - возможно, запасных-то и нет…
А вот и первые потери на нашем тернистом пути. При попытке выломать дырку в акриловой детальке сломали саму детальку:
Тут уж либо склеивать, либо стучаться в поддержку изготовителя - вдруг сжалятся и ремкомплект какой-нибудь продадут. А лучше то и другое. Что там у нас клеит акрил?
Помню, помню, штука исключительно вонючая и очень неплохо клеит. Поищем. А пока пожалуемся в поддержку “Робоинтеллекта”, что такая вот неприятность у нас случилась.
Вот эту дрянь из середины мы так и не смогли выломать без потерь - очень крепко сидела. То, что осталось в итоге, склеить будет довольно сложно. Видимо, без поддержки не обойтись.
А пока эта проблема решается путем ожидания, продолжим собирать остальное.
Клешни пропускаем, для них нужно то, что на фотографии, только целое. Переходим к башне, ииии… новая деталь - новая задачка. Теперь нам не хватает шайбы D12x2 с артикулом 07-002. Инструкция отправляет за ней в коробку №1, но там такого нету. На акриловых платах есть шайбы D12x3 - может, на такую заменить? Или вообще без нее обойтись? В итоге нашли что-то похожее на плате E - она как раз нужной толщины. Берем отсюда, а дальше посмотрим, в каком другом месте нам не хватит такой шайбы.
При сборке плеча манипулятора меня не покидала мысль о том, что есть в этой конструкции какой-то перекос (особенно если делать в точности по рисунку из инструкции - там средний винтик соединяет эти балки в обратном порядке, а не так, как у нас). Но, может, так и задумано. Посмотрим, что будет дальше.
Ах да, есть и хорошие новости: шайбочка с артикулом 07-002, которую мы искали и не нашли в пакете №1, оказывается, действительно должна быть на плате Е, откуда мы ее в прошлый раз и взяли - это написано в следующем пункте инструкции, где нужна такая же. Так что все на месте, ничего не потерялось. Будете собирать - обратите внимание. Слева ошибка, справа правда.
А вот при сборке основания башни наши потери продолжились: в комплекте вместо двух оказалась только одна фторопластовая шайба D22 с артикулом 03-011. Значит, что-то будет скользить хуже, чем задумано. Посмотрим, что же это. А заодно будем надеяться, что нужная шайба тоже приедет в ремкомплекте.
Однако, тут нам тоже повезло: на самом деле шайба была нужна всего одна. Еще одна заметка для документаторов.
А тем временем, хвала дихлорэтану, нам, кажется, удалось склеить то, что мы сломали.
На вид деталь кажется целой, но нужно еще убедиться, что в нее можно совать винты, и она не развалится от легкого нажима. Пока не попробуем - не узнаем, так что пробуем.
Ну, как минимум, этап сборки и крепления винтами наша склеенная поделка выдержала. Вот он, красавчик, уже почти готов!
Окрыленные удачей, мы рвемся вперед, собирать оставшееся, иииии… предсказуемо ломаем еще одну деталь:
Да поможет нам дихлорэтан! А у нас пока пауза, ждем высыхания. Интересно, будет ли эта деталька в ремкомплекте? На вид (да и на деле, как выяснилось) она довольно хрупкая, и уверенности в том, что в склеенном виде она справится со своими функциями, у нас нет.
Ничто не вечно под луной - не вечно и наше ожидание. Клей высох, и мы снова в деле. Еще немного упражнений на мелкую моторику - ииии… тадам! Вот он, красавчик:
Минутка рекламы: акрил + кривые руки + дихлорэтан = успех!
Ну, а у нас механический квест успешно пройден, и теперь впереди не менее интересный этап: заставить эту штуку делать то, что мы от нее хотим.
Первым делом мы, конечно же, включили пульт управления - вот эту иконку на рабочем столе:
Кнопочки и стрелочки, все вручную, но мы еще довольно долго упражнялись в перетаскивании с места на место спичечных коробков, конфет, орешков - как дети, ей-богу.
Заодно обнаружили, что мы при сборке чего-то напутали с подключением сервоприводов. Быстренько, в горячем режиме, не отключая питания, методом проб и ошибок переподключили все куда надо, и сразу стало интереснее. Немного практики - и вот мы уже крутые профессионалы в ручном управлении манипулятором! Надо признать - управлять им легко и приятно, и мертвых зон в пределах досягаемости клешни практически нет, достать можно что угодно откуда угодно, если физически возможно дотянуться.
Вдоволь наигравшись в дистанционное управление, переходим-таки к программированию. IDE для этого уже установлена, шла в комплекте с пультом управления:
Заходим и видим среду для блочного программирования (на что нам как бы намекает и ее название):
Прикольно, удобно, но не для нас - в блочное программирование мы уже наигрались. Только текстовое, только хардкор! К счастью, там наверху есть переключатель на Python. Вот туда и отправимся.
Нет, Hello World тоже не совсем то, ради чего мы столько собирали эту штуковину. Заглянем-ка в примеры программ. Заодно попробуем понять, как устроена питонячья библиотека для управления нашим манипулятором.
Залезли - а тут прям простор для изучения текстовых языков программирования: и импорт внешних библиотек, и зачатки ООП, функции (не совсем, правда, питонячьего стиля: не припомню, чтоб в питоне было принято делать def main(). Впрочем, может быть, это я отстал от жизни). И, главное - работает, хоть и на первый взгляд не совсем понятно (да что там - практически совсем непонятно) для ребенка. Будем разбирать построчно, благо документации завались.
Про документацию, пожалуй, есть смысл сказать отдельно. Мы там выше, при сборке еще, обратили внимание на некоторые огрехи бумажной инструкции, но это явно проблемы роста и развития. На сайте все инструкции свежие и уже доработанные. И вообще на страничке “скачать” можно найти все, что может понадобиться: тут и инструкции, и, листы комплектации, и ПО, и учебные материалы, и даже видеоинструкции для тех, кому лень читать. Респект, ничего не скажешь.
Кстати, разбор того, как устроена библиотека, мы начали с инструкции, которую оттуда же и скачали:
Многое стало понятнее. А то, что изучаемый ребенком язык программирования можно сразу применить к каким-то практическим задачам, где все жужжит, двигается и переносит предметы с места на место - это вообще огонь, у ребенка глаза загорелись еще больше. Теперь он хочет поскорее пройти азы (с которыми, собственно, у него уже все в порядке) и углубиться во “взрослое” программирование. Ради одного этого уже стоило брать.
Кстати, довольно интересной фишкой оказался онлайн-сервис, живущий по адресу https://online.robointellect.ru/. По сути, это то та же самая среда разработки, что уже установлена у нас на компьютере, только в сети и подключенная к роботу, за которым можно наблюдать через камеру. Ну и своего, конечно, можно подключить, чтобы управлять им откуда-нибудь еще:
Ну и, как выяснилось, взаимодействовать с библиотекой RISDK, а, стало быть, и управлять манипулятором, можно не только на Blockly и Python, представленными в “родной” среде разработки, но и на Golang, C, C++, PHP, используя при этом любую удобную среду. На сайте есть подробные примеры для VS Code - а значит, можно и через черта в ступе. Вот это подкупает и вдохновляет - есть чем заняться и что поизучать и после того, как пройдем основы.
Ну, а пока мы разбирались со способами управления и программирования, подоспел ремкомплект. В нем все акриловые детальки, какие могут сломаться, и запасные шайбочки, которые так легко и быстро теряются. Круто.
Что ж, теперь, пожалуй, можно и какие-то итоги подвести. Не будем нарушать традиций: итак, что хорошего и что плохого мы обнаружили в этом конструкторе?
Сначала о хорошем.
Изначально я был настроен скептически. Но набор приятно удивил: все детали хорошо изготовлены, процесс сборки увлекательный, на результат приятно смотреть.
Механика хороша. Делает все, для чего предназначен. Перетаскивание с детьми конфеток - отдельное удовольствие.
Удобная среда разработки. И, конечно, возможность использовать свою, если не нравится родная.
Программирование на куче разных языков. При этом не нужен какой-то проприетарный язык, специально заточенный под конкретное изделие (вроде RobotC для лего), все делается на общепринятых популярных языках, приобретенные знания можно нести дальше.
Веб-интерфейс и возможность удаленного управления.
Похоже, что к этой штуке можно подключать дополнительные контроллеры и микрокомпьютеры, если вдруг захочется научить ее делать что-то еще.
Поддержка работает отлично. Стоило пожаловаться на сломанную детальку - сразу выслали ремкомплект.
Хорошая документация.
А какие минусы?
Нужно подключать к компьютеру проводом. Хотелось бы какой-то автономности - робот все-таки.
Нет датчиков, нет камер, нет никакой обратной связи, только прямое управление. Автоматизировать управление без обратной связи не получится. Так что пока еще это не совсем робот.
Почему не поставить эту штуку на колеса и не научить ее ездить?
Акриловые детальки, бывает, ломаются. И тогда либо ремкомплект, либо клей.
Кстати, было бы неплохо иметь в комплекте чуть-чуть дихлорэтанового клея.
В комплекте нет запасных шайб, винтиков, гаечек и всякой прочей мелочевки. Одно вмешательство игривого кота - и конструкцию уже не соберешь.
Как по мне так плюсы перевешивают. Хороший конструктор, увлекательный процесс сборки, горящие глаза ребенка и стремление учиться дальше. Это далеко не все, что есть после Лего, но кажется вполне удачным первым шагом в этот безбрежный мир.
И, как я недавно выяснил, эти же ребята производят какой-то свой распберриподобный микрокомпьютер Repka PI (Забавно, как по мне). Так что ждем новую, лучше прежней, версию конструктора с мозгами на борту, датчиками и большей автономностью.