Найти в Дзене
Стив Май

"Робототехника" для младших школьников

Ну, мои постоянные читатели, конечно знают эту мою нелюбовь к опережающему и развивающему обучению. Но вот сейчас я прямо из самодеятельного отпуска хочу про обучение "робототехнике" написать.

Да, это слово я в кавычках пишу не просто так. Понятно, то имею в виду псевдоробототехнику. Нормальная робототехника поверхностно описана, например, в книге К. Фу и др., которая так и называется - Робототехника. Там есть и матрицы, и кватернионы, и обратная кинематика - самое то для начинающих дошкольников.

Тема большая, как под этой псевдовывеской калечат сознание детей, поэтому частично лишь - но самую суть. И с примером.

Вот есть у людей то, что я называю "программистской" культурой. Она не совсем к программированию относится, просто там это нагляднее проявляется. Я этим словом обозначаю умение человека видеть и понимать то, с чем ему приходится работать, учитывать ключевые особенности и ограничения. Это не врожденное свойство, его приобретают, развивают, тренируют. Такую культуру надо бы прививать в школе. Сейчас на примере псевдоробототехники и покажу.

"Робототехника" обычно базируется на платформе "Arduino". Кто не знает - это такая фигня, которой программу (sketche) скармливаешь, и она мигает светодиодами. В принципе, для работы с ней знаний никаких не требуется, каждый может купить себе плату Ардуино, скачать SIDE и за две минуты "на коленке" склепать гирлянду. А если раскошелиться на дополнительные модули (shields), то можно, как из конструктора, собрать какой-нибудь катающийся по квартире механизм.

Внешне это очень похоже на программирование и робототехнику. Но на деле всего лишь набор готовых решений и алгоритмов. Чем это плохо? В общем-то, ничем. Я и сам порой включаю Ардуино в свои хобби. Очень удобно бывает. Но это я - взрослый человек, со сформированным сознанием.

А у детей Arduino не только не способствует формированию "програмистской" культуры, но и всячески препятствует. Идеология всего проекта состоит в том, чтобы оградить юного "программиста" от "лишних" сложностей. Чтобы он мог, не задумываясь о внутреннем устройстве механизма, целиком посвятить себя... Нет, даже не алгоритмам, а составлению комбинации из "заклинаний", потому что всё-таки алгоритм подразумевает некоторое знание о природе исполнителя. А ребенку не только не говорят, что это он фигней страдает вместо программирования, но напротив - уверяют, что он суперпрограммист будет.

Знал я это всегда, и с самого начала "невзлюбил" кружки псевдоробототехники, почти как Петерсонские псевдоучебники. Но вот увидел воочию всю глубину сравнительно недавно.

Кому интересно - вот история этого "открытия" (с некоторыми техническими деталями)

Наткнулся я на обучающую статью-урок, где был пример программы, в которой с помощью как раз Ардуино (Uno, если мне память не изменяет) отпрашивался датчик гироскопа. В принципе, вполне обычное явление как для псевдоробототехники, так и для нормальной робототехники. Полученные "сырые" данные программой преобразовывались сначала в дробное число от -1 до +1, а потом из этого числа вычислялся арккосинус, чтобы получить угол наклона. И на выходе получался угол наклона датчика в радианах. Ну, вроде все нормально.

Но это если не вникать в суть.

А теперь вникнем.

Для чего может понадобиться получить угол наклона датчика? Просто так смотреть на него? Нет, конечно, нет. Этот момент нужен для управления, скажем, роботом, который должен осознавать свое положение в пространстве и как-то на него реагировать. То есть, кроме этой мааааленькой подпрограммы, должны быть еще и другие, отвечающие за реакции робота, вообще не связанные с гироскопом вещи и т.д.

Опять же, если попытаться вникнуть в суть того, с чем мы работаем, то надо копаться в аппаратной платформе Ардуино. Это, мягко говоря, на любителя: большинство вариантов исполнения базируется на МК (микроконтроллерах) AVR или STM, а даташиты (описания) к ним - это фолианты на 500-1000 страниц с огромным количеством технической информации. Но нам важно, что эти микроконтроллеры действительно довольно примитивны, они даже не умеют работать с дробями и отрицательными числами. Да-да, какой-нибудь Atmega328 куда "тупее" калькулятора.

Опуская технические подробности, я скажу, что на этих МК всё-таки реализована дробная арифметика, тригонометрия и т.п. Но ценой этого счастья становится практически вся память и приличная доля процессорного времени. И когда речь идёт о мелкой части чего-то крупного, такой подход, мягко говоря, не оправдан.

Старший школьник, безусловно, может себе позволить докопаться до этой проблемы, и даже составить алгоритм, который позволил бы заменить дробные вычисления на целочисленные. Но для этого он должен понимать суть. Должен сталкиваться с проблемой. Должен решать её. А в кружках псевдоробототехники этого не дают. Дают сразу готовый алгоритм, который надо только переписать с бумажки на компьютер.

Вот и получается, что вещь, которая вполне могла бы направить мозг человека в нужное русло ассемблерного мышления, максимально уводит его в сторону.

PS.

Эту статью-размышление можно не воспринимать как поучительную. Просто мысли вслух. То, что меня лично задело.

PPS. Кстати, в ЕГЭ по информатике долгое время было задание, требующее от ученика составить программу, эффективную как по времени исполнения, так и по занимаемой памяти. Это очень и очень напоминает проблему ардуино.