Показаны сообщения с ярлыком move. Показать все сообщения
Показаны сообщения с ярлыком move. Показать все сообщения

суббота, 21 декабря 2013 г.

EV3 производительность. Часть I

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

Например, вот выступление новосибирской команды Лига Роботов на World Robot Olympiad 2013 в Джакарте. Робот движется на достаточно большой скорости и отличить красный шарик от синего позволит только частый опрос датчиков цвета. Но если при этом произойдет значительная задержка при выполнении операции остановки, то робот проедет шарик мимо и выполнить его сбор будет уже невозможно:

пятница, 6 декабря 2013 г.

EV3: выполняем повороты с помощью датчика-гироскопа. Часть I

Сложные траектории движения - частоиспользуемые техники изменения положения робота на поле. Робот должен проехать по квадрату или завернуть за угол лабиринта, объехать препятствие по дуге. На LEGO Mindstorms RCX и NXT роботов расчет траектории для таких передвижений был нетривиально вещью. Приходилось либо вручную подбирать значения, насколько нужно повернуться каждому из моторов, либо выводить сложную формулу зависящую от диаметра колеса и ширины колесной базы робота.
Но в любом случае, как только вы меняли базу робота, или ставили бОльшие колеса, всю работу приходилось начинать сначала.

В новых EV3 наборах ситуация значительно упростилась с появлением в стандартной поставке датчика-гироскопа. Один из режимов, в которых он работает, - режим замера угла, на сколько изменилось положение датчика.

Например, самая простая программа для выполнения роботом поворота на 90 градусов вокруг своей оси будет выглядеть следующим образом:

суббота, 6 апреля 2013 г.

LEGO механизмы: вперёд - это везде...

Кто регулярно читает обновления на блоге, тот, наверняка, помнит, что здесь уже рассматривались голономные транспортные средства - механизмы, которые могут в любой момент изменить направление своего движения без необходимости производить разворот.
Еще один пример подобного транспортного средства представлен ниже, хотя его нельзя назвать на 100% голономным. Но тем не менее интересен сам подход к решению задачи:

пятница, 29 марта 2013 г.

Алгоритмы: черно-белое движение. Часть XI

До сих пор в статьях о алгоритмах, использующихся при движении вдоль линии, рассматривался такой способ, когда датчик освещенности как бы следил за левой или правой ее границей: чуть робот съедет на белую часть поля - регулятор возвращал робота на границу, начнет датчик перемещаться вглубь черной линии - регулятор выправлял его обратно.

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

вторник, 19 марта 2013 г.

суббота, 9 марта 2013 г.

NXT R3PTAR - пишем свою программу

В школе, где проходит наш кружок робототехники, нужно было провести "удивительный урок" для первоклассников, приуроченный к 23 феваряля и 8 марта. Одним из роботов, который должен был появиться на этом уроке, было решено сделать - NXT R3PTAR - змею, похожую на EV3 R3PTAR, только выполненную из набора NXT 2.0.
Об существующих инструкциях по сборке для данного "животного" уже упоминалось в блоге. А вот программу пришлось составлять самостоятельно. А поскольку кто-то захочет повторить этот опыт - процесс составления программы приводиться в этой заметке.

среда, 20 февраля 2013 г.

Не-алгоритмы: черно-белое движение. Часть X

Продолжение рассуждения о конструкции роботов, решающих задачу движения вдоль линии.

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

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

вторник, 12 февраля 2013 г.

Не-алгоритмы: черно-белое движение. Часть IX

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

Пусть сначала правое колесо стоит, а левое вращается. Тогда траектория (синяя пунктирная линия) тележки будет окружность с центром в точке соприкосновения правого колеса с полем.

воскресенье, 25 ноября 2012 г.

NXT и Python: мотор застрял?

Предыдущие статьи по программированию NXT роботов на языке Python можно считать вводными - они вкратце знакомили с базовыми API, применив которые можно было уже написать простые программы.
Естественно, многое осталось за рамками тех материалов - например, функции, управляющие движением моторов, были описаны не все, да и для описанных не были указаны все возможные параметры.

Если попробовать запустить робота с небольшими (меньше 50 процентов) параметрами мощности с помощью функции run() - такое, к примеру, возможно при движении тележки вдоль черной линии по PID регулятору, то соответствующий мотор может вообще не начать вращаться. Причем, при этом сам мотор может выдавать высокочастотный писк.

Алгоритмы: черно-белое движение. Часть II с половиной

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


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

среда, 21 ноября 2012 г.

Алгоритмы: черно-белое движение. Часть VIII

Как и обещано ранее, настало время рассмотреть от чего же еще зависит коэффициент пропорциональности линейного регулятора при движении вдоль линии.

В предыдущих заметках было выведено, что он однозначно зависит от освещенности трассы и яркости элементов на ней:
Где, Lmax - значения сенсора освещенности на самом светлом участке поля, а Lmin - значение сенсора на самом темном участке.

вторник, 6 ноября 2012 г.

Алгоритмы: черно-белое движение. Часть VII

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

Рассмотрим, что происходит с вращением оси мотора в случае работы следующей программы:

понедельник, 15 октября 2012 г.

Кружок по робототехнике. Занятие второе.

Занятие второе началось со знакомства с набором LEGO Mindstorms NXT. Актуально это было еще и потому, что ребята за неделю приобрели свои наборы, и им необходимо было рассказать о том, что же это такое.

суббота, 6 октября 2012 г.

Python и MotorControl

В предыдущей заметке уже упоминалось о том, что модуль nxt-python для языка программирования Python уже имеет встроенную поддержку инструмента по управлению моторами MotorControl.
По сути, это заключается в следующем:
  • в составе архива модуля есть скомпилированный исполняемый модуль MotorControl22.rxe (22 - это версия модуля - 2.2), который можно загрузить на NXT блок с помощью поставляющегося в архиве скрипта nxt_push или программы NeXTTool, доступной для загрузке на сайте BricxCC. Тут же есть и исходный код, который можно собрать исполняемый файл с помощью компилятора NXC непосредственно или с помощью среды BricxCC
  • в самом модуле nxt-python доступен набор методов класса MotCont, реализованного в под-модуле nxt.motcont, обеспечивающих обмен сообщениями по USB/Bluetooth с управляющей программой MotorControl. Примечательным фактом является, что никакого специального объекта этого класса создавать не надо. Он автоматически создается в результате инициализации объекта Brick, т.е., например, доступен сразу после того, как объект Brick вернется функцией find_one_brick(). К объекту класса MotCont в этом случае можно обращаться через имя mc (см. пример ниже).

пятница, 5 октября 2012 г.

MotorControl - удаленное управление моторами NXT

Управление моторами робота - практически всегда ключевая задача для программиста. Если устройство не имеет двигающихся частей, то его уже трудно назвать роботом.
Так уж получилось, что программирование операций с моторами на LEGO роботах, во многих случаях, достаточно непростое занятие.
На блоге уже публиковались несколько статей (ссылка + ссылка), изучавших этот вопрос. Основные проблемы, с которыми приходится сталкиваться при этом, сводятся к двум пунктам:
  • Нельзя повернуть ось мотора в точности на заданный угол поворота
  • При одновременном включении двух моторов для перемещения тележки наблюдается рассинхронизация скоростей вращения, что приводит к тому, что робот не едет четко в заданном направлении
Эти проблемы только усугубляются, если робот не автономный, а управляется с компьютера или смартфона. Связано это с задержками передачи команд и задержками опроса енкодеров по USB/Bluetooth и спецификой команды управления моторами, которая используется при такого рода соединении.

четверг, 27 сентября 2012 г.

NXC: повороты - практика программирования моторов

При задании сложных траекторий движения робота развороты и повороты - неотъемлемая часть программы. В этой статье будут рассматриваться способы, как программируются эти элементы движения с помощью функций и команд языка Not eXactly C рассмотренных ранее здесь и здесь.
Пример 1. Поворот одним двигателем
На самом деле в этом примере рассматриваются два способа поворота одним двигателем.
В качестве входных данных для обоих способов, задается необходимость выполнения разворота вправо.

вторник, 25 сентября 2012 г.

NXC: Управление моторами

С этой статьи начинается публикация материалов из методички по языку программирования Not eXactly C, подготовленной в рамках учебных курсов Нижегородского Института Информационных Технологий.
В NXC существует около 40 команд для работы с моторами. Их условно можно разделить на команды управления движением, команды остановки, команды опроса датчиков и состояния моторов.

В данной статье рассматриваются команды управления движением.

Пример 1. OnFwd(), OnRev()
Данный пример предназначен для рассмотрения семейств команд OnFwd(), OnRev(), OnFwdSync(), OnRevSync() и его цель - проверить на то, что после OnFwd() управление сразу передается на следующую команду.

суббота, 22 сентября 2012 г.

90 кг. для LEGO кресла - много или мало?

LEGO изобретатель из Англии Simon Burfield решил провести эксперимент - на сколько тяжелые вещи можно перевести с помощью NXT моторов.
Для этого он собрал из деталей LEGO кресло, подсоединил к нему 14 NXT моторов, управляемых 7ю NXT блоками, а чтобы кресло было более маневренное были использованы колеса Rotacaster multi-directional.

суббота, 25 августа 2012 г.

Полномерный Lego-автомобиль

Вы когда-нибудь хотели сделать Lego автомобиль, который довезет куда угодно? Eric Steenstra уже на шаг ближе к этой мечте - он собрал машину, способную легко перевозить ребят до 40 кг.
Посмотреть на его творение живьем можно будет на выставке Lego World 2012 в Голландии, а фото и видео - в этой статье!

понедельник, 9 июля 2012 г.

А вашему роботу нужны такие колеса?

Встречая в сети различных LEGO-роботов вы наверняка обращали внимание на такие, которые не используют стандартные колеса.
Например, колеса Rotacaster Omni-wheels имеют дополнительные ролики, расположенные по касательной к окружности колеса, что позволяет совершать качение не только по направлению вращения, но и перпендикулярно колесу - в направлении оси.

Related Posts Plugin for WordPress, Blogger...