← Об робототехнику: первый блин
Обсуждение
Читать и комментировать в ЖЖ ↗
> звуковое сопровождение его полётов выдаёт борт-инженера
:-)))
Изображение «Intelligence Unleashed: Creating LEGO NXT Robots with Java» — открыть источник
> После КуМира RobotC убог, хотя набит фичами по самое не балуйся.
> Чтобы из него сделать именно учебную софтинку, нужно его переписать заново с нуля
> (заодно поменяв Си на что-то более приличное).
> С другой стороны, КуМир доработать до полноценной работы с NXT
> -- это тяжёлая работа...
Насколько я знаю, народ с чем только NXT не скрещивал.
И с Питоном, и с Джавой, и с С++. У меня своего NXT пока нет,
чтоб смело его перепрошить. Надеюсь, летом появится.
За морем царевна есть,
Что не можно глаз отвесть: leJOS -- виртуальная Java-машина для LEGO Mindstorms
и кроссплатформенная оупенсорсная среда разработки к ней с классами
доступа к сенсорам, эффекторам и прочим потрохам NXT и RCX.
http://scratch.mit.edu/forums/viewtopic.php?id=10184
http://lejos.sourceforge.net/nxt/nxj/tutorial/Preliminaries/Intro.htm
http://lejos.sourceforge.net/nxt/nxj/api/index.html
А вы принципиально не хотите сынишке прежде времени понятия
скорости и вещественных чисел давать? Я сам вперед школьной программы
частенько на кружках забегаю. К примеру, сначала строим с пятиклассниками
громоздкую, но понятную им конструкцию из нескольких объектов в Scrath,
а потом показываю им ее аналог в две строчки с использованием синусов
и косинусов. У них появляется весомый стимул с геометрическим
смыслом тригонометрии познакомиться.
Признаю, иногда такое черновое опережение программы может затруднить чистовой
школьный разбор темы, но я совершенно не представляю, как программировать
эффективных роботов без вещественных чисел?
Комментарий
1. У меня уже огромные трудности в простом переходе с Ершола на Си: куда уж там с Явой. Ну, и неправильно возиться с неавтономными программами, как у скрэтча. Я, кстати, некоторое время назад приводил список портирования языков программирования на NXT: выбирал я язык прямо по табличке (там был еще и опыт написания типовой программы на каждом из этих языков) -- http://ailev.livejournal.com/967480.html. Хотя да, встречал я и Scala среди этих попыток портирования.
2. У меня не пятиклассник, а третьеклассник. Но когда я говорю о классах, то я меньше всего имею ввиду школьную программу и госшколу: это просто всем понятная периодизация возраста и знаний "в среднем по больнице". Я уже вел вещественные числа, когда разбирались с уровнями радиации. Но мне нужно как-то закрепить этот материал осмысленными задачами: причем учитывая, что передо мной не пятиклассник, а третьеклассник. А знания у него сейчас математики примерно в объеме четырех классов, с некоторыми заходами в пятый класс.
3. Эффективных роботов вполне можно программировать без вещественных чисел: все датчики и эффекторы там каким-то чудесным образом дают целочисленные замеры (мощность мотора от -100 до +100, датчик освещенности от 0 до 100 и т.д.).
Комментарий
"КуМир" - это из той же конторы, что и "МикроМир"?
PS: Можно ли избавить меня от капчи?
Комментарий
Разные версии КуМира делали разные конторы. Но когда-то КуМир и МикроМир делался одной конторой -- ИнфоМиром.
Избавить вас от капчи, увы, нельзя.
Комментарий
3. > все датчики и эффекторы там каким-то чудесным образом дают целочисленные замеры
Рано или поздно ребенку понадобится поделить одну величину на другую. По мне, так гораздо проще объяснять десятичные дроби, чем эффекты округления и приемы уменьшения их проявления, навроде стократного увеличения всех значений в промежуточных формулах. Я помню как мне развязал руки переход с какого-то целочисленного исполнителя Лого на исполнителя с вещественной арифметикой.
2. Может как раз перевод целых оборотов, расстояний и углов поворота в общепринятые единицы и пригодится.
1. А какая разница между Си и Джавой в программировании крошечных алгоритмов? Только в коротенькой рыбе простейшей программы. Я пробовал знакомить с управлением виртуальными роботами на Джаве шестиклассников через год трехчасовых еженедельных штудий Скретча и Паскаля. Откомментировал рыбу. Разобрал кучку коротеньких программ, состоявших главным образом из директив роботу с немногими циклами и условными операторами. Выдал каждому сводную откомментированную распечатку методов и свойств исполнителя. И табличку с оформлением циклов и условий на языке блок-схем, тайлов Скретча, Паскале и на Джаве. На шестом часу занятий они начали осмысленно модифицировать учебных бойцов. На десятом -- писать своих простейших. Предполагалось, что на следующий год мы устроим турнир и на базе предварительного знакомства с Джавой займемся ООП. Но не сложилось. Детишки хорошо показали себя на школьной олимпиаде и ими занят теперь наш главный тренер :)
Другое дело, что среда разработки Eclipse грандиозна, избыточна для младшеклассника и иноязычна. Но если API и синтаксис конструкций откомментированы в настольной распечатке это не так страшно.
Голубая мечта, конечно, написать кросскомпилятор с КуМира на Джаву. Ершол проще Джавы. Вроде, все его конструкции имеют прямые аналоги. А дальше пакетный компилятор и загрузка в NXT с leJOS. И никакого разбирательства с Блютусом и разработки фирмвари. Впрочем, это голубая мечта. К весенним соревнованиям лучше синица в руках, чем журавль в небе.
Нарру building! :)
И еще, спасибо за наводку на бету Enchanting, когда эта штука вырастет, станет отличным Scratch-ем для NXT.
Комментарий
Повторю еще раз: дитятко на данный момент не путает, когда нужно объявлять вещественную переменную, а когда целую. Он это твёрдо усвоил еще на Ершоле. Когда я пишу о трудностях, то я просто обращаю внимание, что в случае третьеклассников другим людям придется решать ту же проблему: как этому научить. А я уже своего как-то научил не пугаться точки в записи чисел, и не путать объявление разных типов, хотя углублять это знание ему еще ой-ой как есть куда.
Я не собираюсь оставлять его работающим на Си. Но я бы знакомил дитятку дальше с динамическим языком -- скорее всего, Python, а не Java. Опять же, я понимаю весь холивар в этой области. А еще я думаю про функциональные языки (впрочем, тот же Python с некоторой натяжкой и функциональным можно обзывать, он таки мультипарадигмален, насколько это было возможно в конце 80-х, когда его сочинили -- но я бы и на Racket дал попробовать пописать, это у меня в планах даже раньше, чем ООП -- думаю, к лету как раз созреет).
Крошечные программки? Уж не знаю: на Ершоле он писал до пятидесяти строк кода, не удивлюсь, если и для роботов будет тоже много чего -- там много разной аппаратуры, каждый девайс нужно обработать пятью строчками. Я хотел бы, чтобы эти полгода закончились не меньше, чем двумя сотнями строк кода.
Комментарий
Интересно. Это у вас домашние занятия или кружок для нескольких детей?
Я недавно приобрел вот такую штуку: http://www.ip-boom.ru/index.php?productID=787 - планирую на его основе сделать робота-лектора для младшекласников, рассказывающего об энергии в нашей жизни.
Комментарий
Это абсолютно домашние занятия для одного моего дитенка. Но я знаю, что другие родители делают точно такие же домашние занятия.
Ваш робот -- прошлое поколение (Robosapience) у нас был, успешно был разломан. Учебные задачи я для него бы с трудом придумывал. Он, конечно, мил -- но как его употребить для моих целей, я не понимаю. Лего конструктор с набором датчиков и моторчиков в этом плане много интересней. Но лектора, конечно, из этого робота вполне можно сделать: будет что-то вещать и показывать в правильные моменты и в правильных направлениях руками.
Комментарий
Лего Майндсторм 2.0 мы в прошлом году подарили школе для слабослышащих детей. Не знаю, такой или, как у вас, и были ли с тех пор какие-то новые модели, но мне он показался несколько примитивнее именно как игровая штукенция - нет камеры, звука мощного вроде нет, а что касается сборки, так с тем количеством сервоприводов не шибко разгонишься вроде?
Эта штуковина RS Media как лектор очень интересна - может делать разные жесты, брать и показывать небольшие предметы, просто программируется, самое главное - мощный звук и возможность сделать интерактивный диалог (например, проводить тесты, от может распознавать карточки разных цветов, или движения-звуки справа\слева)...
Это, конечно, кого мы из ребенка готовим - программиста+сборщика (не уверен, что в даже роботизированном будущем людей таких профессий будет много) или пользователя (которыми, как и сейчас с ПК и разными 1С и майкрософт-офисами, приходится быть большинству работников)?
Комментарий
> Крошечные программки? Уж не знаю: на Ершоле он писал до пятидесяти строк кода
Я к тому, что барьеры у Си и Джавы сопоставимы. А длинные программки знак добрый :)
Комментарий
Я из леговского робота и с его тремя моторами и тремя датчиками легко сделаю полный комплект лабораторных/практических/исследовательских работ по программированию, физике, математике -- для третьеклассника, пятиклассника, старшеклассника. А вот какие "лабораторные работы" я буду делать с антропоидным роботом, для которого осмысленные задачи сразу начинаются с распознавания видео и речи, а программирование движений множества медленных и слабых моторчиков направлено на непонятно какой результат, я не понимаю.
Нужно ли учить специально пользователя чем бы то ни было, я не знаю. Пользователя обычно друзья учат, систематического образования не требуется. Я-то думать учу, а не пользоваться...
Комментарий
Простите, что вмешиваюсь, но для Mindstorms огромный набор дополнительного оборудования и штатного и третьих фирм. Некоторые вещи посложней самого контроллера будут. Там даже камеры, распознающие цветные пятна с выдачей координат их центров есть. Можно детальки разноцветные сортировать, судоку сканировать, решать и фломастером заполнять, собирать кубик Рубика или вот такие компьютеры строить: http://www.youtube.com/watch?v=cYw2ewoO6c4
Комментарий
Спасибо, посмотрел ролик. Только вот все это выглядит каким-то механистичным, "штукой самой-в-себе", не интерфейсным каким-то. Да еще и нежизненным, т.е. состоящим из массы деталек, каждая их которых может отвалиться от того, что эта штука заденет другую штуку или угол стены...
В противовес этому RS Media возможно, не такой многофункциональный, но зато существующие функции вполне себе на уровне, и "обтекаем", и "интерактивен", и я бы хотел, чтобы эта серия развивалась и дальше, в связь и управление по блютусу с сотового телефона, через интернет-3G...
Комментарий
Так результат программирования RS Media (это как потенциальный урок робототехники где-нибудь к 2015 году) - умение доносить свои мысли, организовывать диалог, создавать своего "двойника", создавать разные "роболичности"...
Комментарий
Эта серия роботов-развлекателей развивается в сторону вот таких машинок: http://www.robotshop.com/ca/aldebaran-robotics-en.html (обратите внимание на цены!). Там акцент как раз не на дистанционное управление, а на антропоморфность и автономность. Позиционирование: для развлечения, обучения и исследований. Так, роботы по ссылке не продаются даже для развлечения, только учебным и исследовательским организациям. Ибо там роботика как таковая уже неважна, а речь идет о программировании функций искусственного интеллекта. Это другая лига, другие задачи, другое всё.
Мне же как раз хочется, чтобы механизмы для дитенки не выглядели "штукой-в-себе", а чтобы они ему были понятны, чтобы понимал, как эти механизмы могут быть устроены внутри, и что роботы не сводятся к гламуру из мультфильмов. Как говорится, не-попса, и намеренно. Будет знать физику, всегда сможет развлечься с промышленными антропоморфными роботами. Но вот после развлекушек с гламуром вряд ли он освоит физику, или энергосбережение.
Пример: мы еще при обучении нарисованному роботу КуМиру ввели концепцию энергосбережения -- у робота ведь есть аккумуляторы, и их нужно беречь, для чего писать эффективные алгоритмы. Того же будем добиваться и в роботе с настоящими аккумуляторами, считать эффективность его движений, краткость пути, оптимальность режима работы мотора, предотвращение холостых ходов и т.д. Это и есть энергосбережение и обучение этому энергосбережению. А лекции в этом плане не считаю эффективными: в одно ухо влетит, в другое вылетит, хоть Дед Мороз будет рассказывать, хоть робот, хоть Папа Римский.
Комментарий
Это совсем другое программирование. Это искусственный интеллект. Вот в 2015 году как раз мой дитенка этим и займётся, как раз вычислительная мощность роботов (корпус с моторчиками и аккумуляторами, и вставленный в него обычный компьютерный планшет типа Galaxy Tab 10, только 2015 года выпуска) к тому времени позволит это делать дёшево и сердито, плюс будет довольно много доступных алгоритмов. А если алгоритмов будет не много доступных, то он как раз и придумает эти алгоритмы, для этого сейчас пусть учится на программировании чисто механических конструкций с простейшими сенсорами и эффекторами.
Комментарий
Цены такие, поскольку ориентируется это пока на институты с их бюджетами.
Реально, там на 1 долл начинки от ноутбука, и еще пусть на 2 тыс. долл "железяк" (25 моторов) и соединительные железки (которые скоро можно будет на 3d-принтерах вырезать)...
А программки, имитирующие ИИ, типа речераспознавания в самсунге гэлакси эс - уже входят в стоимость самого телефона, за 500$.
Да, энергоэкономичность роботов - отдельная увлекательная тема, и для детей тоже. Но это не только программно реализуемая вещь (оптимальные движения, что, кстати, не столь принципиально для роботов-интерактивщиков, с 1-2-3-часовыми выступлениями), но и вопрос оптимального размещения аккумуляторов по "телу" робота, и сами аккумуляторы, и функция "добраться до розетки, подзарядиться и расплатиться за это"...
Комментарий
Ну, насчет ИИ в 2015 я бы не был так уверен :-)))
Просто некоторые возможности, умело имитирующие "человеческие движения и эмоции". И функция таких "примочек под ИИ" - более интересный/прикольный/в-чем-то-более-эффективный интерфейс, чтобы человек мог общаться с базой данных знаний, к которой обращается такой робот.
В принципе, можно было обойтись и планшетом без ручек-ножек, но ручки-ножки демонстируют эмоции, держат внимание, а впоследствии позволят гулять по выставочному залу и приставать к посетителям :-)))
Комментарий
Энергосбережение для роботов -- это прежде всего ресурс автономной работы между подзарядками. У робота три ограничения автономности: возможность вообще выполнить какую-то работу (например, не хватает скорости, или нет нужного типа захвата), нехватка мозгов (алгоритма самостоятельной деятельности) и нехватка энергоресурса.
Про имитирующие программки -- это не автономные роботы, эти программки не в телефонах сидят, а в датацентрах. К тому же меня не волнуют уже готовые программки. Меня волнует, будет ли уметь мой дитенок такие программки писать. А пользоваться такими программками я его не намерен учить, ответы на свои вопросы он уже привык искать в Сети -- какая дальше разница, через Яндекс в поисковой строке или Яндекс с голосовым интерфейсом...
Комментарий
Ой, чтоб оценить LEGO Turing Machime надо знать, что такое Машина Тьюринга, это абстрактный универсальный вычислитель примитивнейшего устройства и весьма неудобный в программировании. Зато он позволил основателю информатики осветить фундаментальные проблемы программирования лет за десять до появления первых эффективных железных машин. Те, кто в теме, приходят в неизменный восторг, увидев его воплощение в детском конструкторе.
Так же и с рядом других упомянутых конструкций. Их проектирование, совсем не детского уровня задачка. Сами по себе алгоритмы сложны, так еще и ограничения для разработчика драконовские. Это высший пилотаж, вершина легостроения :)