October 20th, 2012

2019

Робототехника продолжается

На этой неделе случилось не слишком много робототехнических занятий, но они таки начали происходить.

Управление из КуМира (по сравнению с управлением из "кирпича") оказалось глючным и медленным -- датчики надёжно работают с дискретизацией примерно 1Гц, но бывают сбои даже на такой частоте. Так, датчик расстояния лучше бы держать неподвижным минимум 1 секунду перед замером, чтобы он показал правильное значение. Ситуацию можно описать как "программисты над этим работают, скоро выйдет новая версия" -- но сколько продлится это "скоро", мне пока непонятно. Пока же изобретаем задачи и готовимся отплыть на другие языки и другие IDE (опять же: "где лучше? где нас нет!" -- ещё не факт, что после переползания куда бы то ни было будет лучше).

Напомню: в математическом активе у дитятки решение задач по теме расстояние-время-скорость по учебнику Гейдмана 1 полугодия 4 класса. Беглый опрос показывает, что про скорость и расстояние дитятка всё понимает. Но вот дальше происходят большие затруднения, ибо сталкиваются
-- курс программирования (робот -- это не учитель, ему нужно объяснять предельно конкретно и без ошибок)
-- курс математики (каждое движение робота нужно вычислять)
-- физика (вычисления относятся к движению робота в реальном времени в физическом пространстве).

1. Робот стоит недалеко от стенки. Определить скорость робота при разных мощностях, понять зависимость. Повторить для другого диаметра колеса.

В этой задаче три расстояния:
-- замер до стенки в точке старта
-- замер до стенки в точке остановки
-- дистанция между стартом и финишем
Далее можно вычислять скорость (задавая время движения от старта до стопа, а также мощность на моторах).

Голова дитятки немедленно переполняется:
-- три разных расстояния
-- скорости (которых вдруг становится много, и они разные -- все они "например")
-- мощности (и их много, они тоже все вдруг оказываются "например")
-- времена (и их тоже сколько угодно)

Единственный способ справиться -- это перейти к записи зависимостей, уйдя от конкретных примеров с конкретными цифрами. Зависимости же выражаются в Ершоле, и на "алгебру" (уход от цифр к буквам, от примеров к формулам) накладывается "программирование" (объявление переменных, синтаксис выражений, присваивания-которые-не равенства, разница вещественных и целых и т.д.).

В итоге всех мучений становится известно, что робот проходит примерно 3.8см/с на колесе меньшего диаметра, и 4.8см/с на колесе большего диаметра при мощности 10, и что скорость от мощности зависит линейно.

Бонус-трек: отрицательные мощности, скорости, расстояния.

2. Роботу нужно пройти заданное расстояние на заданной мощности.
Решение этой задачи требует вычисления времени, на которое нужно запустить моторы на данной мощности. Идея удельной скорости на единицу мощности очень плохо понимается, но зато потом явная радость: робот при самых разных расстояниях и мощностях бегает самое разное время, точно останавливаясь на заданном расстоянии. Это кажется чудом.

3. Теперь нужно пройти заданное расстояние за заданное время ("поезд идёт по расписанию").
Решение этой задачи требует вычисления мощности. Скорость, конечно, вычисляется мгновенно -- но нам-то нужно не скорость, а мощность! Идея "удельной скорости на единицу времени" оказывается прочно забытой, начинается подбор того, что на что нужно делить или умножать -- но подбор быстро захлёбывается ввиду многочисленности объектов, которые нужно держать в памяти.

Итого: ступенька "время-расстояние-скорость+мощность при движении по прямой" оказалась очень крутой, на ней нужно топтаться относительно долго. Так, в задачах реального времени автоматизмы отладки не работают: если вручную пошагово проходить программу, то запуск моторов происходит со скоростью тыкания пальцем по кнопке, и робот успевает круто развернуться, когда один мотор уже включился, а шаг включения второго мотора ещё не пройден. Дитятко же видит, что робот вдруг сорвался с места, повернулся, и поехал -- он перестаёт тыкать пальцем, и робот радостно уезжает далеко-далеко, ибо пошаговое исполнение не доходит до команд останова мотора. Команды останова мотора обязательны (ибо дитятка ожидает, что "программа кончилась, и всё само остановилось" -- ага, как же!). Конечно, робот как-то был уронен и рассыпан, восстановление конфигурации сожрало ползанятия. Беготня от робота к кнопке запуска и обратно тоже отъедает время.

Всё это нужно объяснять, повторять многократно, ждать затухания условных рефлексов предшествующего периода "нарисованного робота", ибо ситуации с ошибками и непониманиями повторяются снова и снова, да и сами ситуации разнообразны.

Приведённых трёх задач явно маловато для надёжного (тренированного) освоения материала. А ведь в их решении нет ещё ни циклов, ни условных операторов, ни даже задействования датчика угла поворота колеса (для оценки пройденного колесом расстояния -- диаметр-то колеса известен!).

Но даже в таком виде мы прошли с КуМиром/Ершолом в разы и разы дальше, чем удалось пройти в прошлом заходе на RobotC. Та ступенька явно была непроходимой, а сейчас всё кажется вполне одолимым.

В нашей школе вдруг обнаружился кружок лего-с-роботами, но жена (которая когда-то занималась фигурным катанием по программе подготовки к большому спорту) рассказала заповедь: не смешивать занятия тех, кто готовится на юношеские разряды с занятиями тех, кто готовится на взрослые разряды. Наш домашний курс робототехники явно из серии "подготовки на взрослый разряд", так что дитятко на этот кружок пока ходить не будет. А там поглядим, что будет дальше.
2019

Детские визитки

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

Я ответствовал, что лучше бы это делать в типографии -- и мы сходили в http://www.a-cifra.ru/contacts/ (это десять минут пешком от нашей двери, и три минуты от "Третьяковской" или "Новокузнецкой". Работают с 10 до 21 без выходных).

Через десять минут диалога дизайнера и клиента получился любимый зелёный фон, шрифты с засечками (как в книжках! объяснить, что это не слишком хорошо в визитках, не удалось), вместо названия фирмы класс и номер школы, телефон, адрес электронной почты и адрес блога. С помощью гугла.картинок был найден правильный зомби из Plants and Zombies, ибо без него требовательный клиент дизайна визитки не принимал. Макет был тут же отправлен клиенту по электронной почте, взятой из самой визитки.

Висеть (при любых других способах не получалось) на рычаге резака было доверено самому дитёнку, а самым трудным и долгим было потом увести дитятку из типографии (ибо там ведь ещё много было вокруг интересного, то есть неподёрганного и непокрученного).

Сделали на "полудизайнерской" бумаге (чуть-чуть тиснёной) аж сто штук односторонних, обошлось вместе с дизайном в 620 рублей.

Сводите своих дитяток, пусть им будет счастье и польза.