Anatoly Levenchuk (ailev) wrote,
Anatoly Levenchuk
ailev

Об робототехнику: первый блин

Итак, мы приступили к курсу робототехники на основе RobotC и Lego Mindstorm NXT 2.0. Вот несколько разрозненных замечаний, вдруг кому пригодится (а я понял, что у меня по этой теме есть читатели):

1. Все инструкции и хелпы RobotC устарели, скриншоты соответствуют позапрошлым версиям софта, а инструкции по сборке -- предыдущим моделям набора Lego. Еще часть инструкций пропущена. Поэтому строгий совет: сначала сами разберитесь, потом только приглашайте позаниматься дитёнка. Ибо детки не будут терпеливо ждать, пока папа или мама поймут, как прорываться через очередной затык -- а этих затыков всенепременно будет.

2. Первый же затык: это переход от сборки лего-моделей на "кирпичиках" к сборке лего-модели "на осях". Как мне объяснила жена, в конце 90-х была дискуссия, на которой инженеры плевались на молодёжь: они после лего-тренинга могли что угодно собрать "из кирпичиков", но другие типы сборки у них просто отсутствовали в голове. Так вот: предлагаемая в RobotC тележка представляет собой некоторую особую задачу для сборки -- там нужно работать с осями и балками, а не кирпичиками и плоскостями. И дитятко, легко собирающий лего-модельки из более чем тысячи кирпичиков, да и хорошо ориентирующийся в других модульных конструкторах, вдруг затормозил. Заодно: некоторые детальки с тем же назначением в новом розничном наборе не соответствуют по форме и цвету изображенным в инструкции старым -- и без помощи взрослых с этим дитенку не справиться. И, конечно же, вместо сборки тележки из деталей нового типа при первых же встреченных препятствиях начинают собираться собственные конструкции, поэтому трудно сразу заметить, что сборка тележки прекращена, а строится "космический корабль" -- разве что звуковое сопровождение его полётов выдаёт борт-инженера.

3. Первая засада -- это конструкция #pragma для подключения датчиков. На скриншотах ее нет (там старая конструкция с const), а "мастер подключений сенсоров и моторов" сразу почему-то не работает. Помогает просто рестарт программы. После рестарта этот мастер вполне работает и генерирует #pragma -- по строчке на каждый датчик. Впрочем, легко можно генерировать эти строчки и без такого wizard, если помнить все идентификаторы. В #pragma указываются сенсор это или эффектор (например, Sensor) номер порта подключения (например, S1), имя датчика в программе (например, lightSensor) и имя датчика в драйверах (например, sensorLight).

Это только половина первой засады. Главная засада: это указать правильное имя датчика в драйверах. Фразу "датчик цвета может быть использован как датчик освещенности с активной подсветкой" нужно понимать буквально, и читать строчки из инструкции к NXT 2.0 -- а там написано, что для этого нужно использовать красный канал. Это означает, что в RobotC в визарде нужно указывать датчик цвета, а не датчик света! И тогда в #pragma у вас сгенерируется как имя датчика в драйверах sensorCOLORRED, а имя в программе пусть будет всё то же -- lightSensor.

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

5. После КуМира (который вылизывался именно как учебный софт) RobotC убог, хотя набит фичами по самое не балуйся. Чтобы из него сделать именно учебную софтинку, нужно его переписать заново с нуля (заодно поменяв Си на что-то более приличное). С другой стороны, КуМир доработать до полноценной работы с NXT -- это тяжёлая работа, ибо нужно и firmware соответствующее делать, и с Bluetooth разбираться, и правильного уровня исполнителей делать (тот же RobotC предлагает полную линейку таких исполнителей -- от работы по портам и отдельным отсчетам датчиков до готовых управляющих команд типового робота).

6. Никакого внятного учебного плана по работе с роботами нигде нет. Практически нет задачников, есть только решебники, и все они по-английски, и все они не для третьеклассников, освоивших управляющие конструкции процедурного языка. Так что -- оставь надежду, всяк сюда входящий. Придется выпестовывать в себе дидакта. Вот что я думаю:
-- заставить пособирать конструкторы Technix, которые совсем по-другому устроены (http://technic.lego.com). Это предложение жены: в роботах нужно еще и как-то конструкторски мыслить, а для этого сначала нужен тренинг по сборке готовых моделей. Ага, тупой тренинг, чтобы конструкторская мысль была "в пальцах".
-- померять скорость передвижения робота (в метрах в секунду) по прямой. Тут нужно учитывать, что вещественные числа и понятие скорости в школе в третьем классе еще не проходили. Это можно делать очень по-разному, в разных старт-стопных режимах. Например, двигаться 10 секунд, затем измерить расстояние линейкой. Или двигаться от линии к линии на расстояние метр, замерив время таймером робота. Или замерить скорость, когда робот идет по времени. Или замерить время, когда робот уткнется датчиком касания в стенку, отъехав от стенки на 5 секунд и затем подъехав к ней назад (два разгона и одно торможение). Или посчитать расстояние, откалибровав через число оборотов колеса, и замерив время -- все это внутри робота. Или использовать хлопки в ладоши и датчик звука для старт-стопов. И так далее.
-- подъезды-отъезды от стенки, используя датчик расстояния: разные алгоритмы (думать о PID и его вариациях -- http://www.robotc.net/blog/2011/12/05/incredible-video-explaining-pid/).
-- эксперименты по трекингу линии, используя разные алгоритмы отслеживания, скорости, кривизну линий.
-- алгоритмы брожения по плоскости с обходом препятствий
Проходится:
-- управляющие конструкции (другой синтаксис)
-- одновременная работа с двумя моторами и несколькими датчиками (например, подъезд к стенке по кривой линии, останов на заданном расстоянии от стенки)
-- работа с реальным временем
-- математика-физика в количестве (вплоть до попыток объяснить число пи через задачу нахождения длины пути через число поворотов колеса)
-- зачатки статистики, погрешности и округления
-- вывод на дисплей

Этого на первый месяц должно хватить.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 24 comments