После посещения Geek Picnic решился собрать из лего что-нибудь полезное и управлять этим с телефона
Среди существующих программ для Lego Mindstorms большинство умеют лишь управлять моторами. Не нашлось таких, которые умеют читать состояние сенсоров, менять схему управления роботом на свою (например, управлять через USB-джойстик) или превратить телефон в центр управления роботами (запускать и удалять загруженные в них программы).
Поэтому решил разобраться, как написать свою (в итоге, пока у меня тоже только управление моторами и запуск программ по имени, зато своё ^_^).
Для установки соединения можно использовать шаблон отсюда.
После установки Bluetooth-соединения NXT-кирпичу можно начинать слать команды (они описаны в доке LEGO MINDSTORMS NXT Direct commands, но весьма поверхностно, подробнее про управление моторами есть здесь, для понимания параметров всех команд лучше изучить ещё мануал по программированию роботов на каком-нибудь языке из списка отсюда).
Отправка команд выглядит примерно так:
//слегка модифицированный класс BTConnect из примера по ссылке |
Дальше сел собирать такого робота (инструкция по сборке есть в книжке автора):
https://www.youtube.com/watch?v=c2MUd5O6aWc
… и завис за этим на всю ночь. После сборки оказалось, что The Snatcher
(хочется назвать его за манеру действий по-русски в честь перевода фильма Snatch от Гоблина) хватает своей рукой выше положенного уровня и робота пришлось ещё час отлаживать, в ходе чего выяснилось, что я просто неправильно прикрепил руку к вездеходу.
В демонстрационной программе от автора он находит и поднимает ближайший предмет и произносит его цвет.
На практике, часто пытается ухватиться за ногу или кровать, перевернуть и разбросать тестовые предметы по комнате.
Чётко умеет воровать крышки с флаконов. Поэтому тестовая программа запускается редко, вместо этого при некоторой сноровке с помощью дистанционного управления можно притащить к себе подходящие по форме клешни предметы весом грамм в 150.
Приведённый в книге для примера циллиндр из картона по форме удивительно напоминает стопку. Проверил на практике — наполненную жидкостью стопку робот почти гарантированно не проливает и доносит.
Так что лучше всего этот робот пригоден для того, чтобы приносить алкоголь. Чувствую себя изобретателем Гэллегером, построившим себе робота для открывания банок с пивом.