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

суббота, 7 сентября 2013 г.

Работа над поддержкой EV3 в BricxCC идет полным ходом

Несмотря на то, что продажи нового конструктора LEGO Mindstorms стартовали, поддержка EV3 блока в альтернативных средах программирования еще в процессе. Так, например, John Hansen - создатель среды программирования BricxCC и языка Not eXactly C, регулярно отчитывается в своей ленте на Google+ о прогрессе внедрения изменений, касающихся EV3, в среду BricxCC.
Вот серия последних роликов:

Введение в текущую работу:

среда, 27 марта 2013 г.

Тренировочный сбор в Тюмени

25-27 марта в г. Тюмени прошел тренировочный сбор для школьников и преподавателей по подготовке к региональными робототехническим состязаниям. В качестве преподавателей на него были приглашены Максим Васильев из Москвы и Александр Колотов и Нижнего Новгорода.
В ходе насыщенных 3 дней преподаватели г. Тюмени и их воспитанники впитывали в себя азы создания и программирования роботов для решения классических задач: кегельринг, траектория, лабиринт.

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

Инфракрасный датчик расстояния от SmartBricks

Не секрет, что юные робототехники страны (и их педагоги) готовятся к традиционным весенним соревнованиям. Зная это, компания SmartBricks желает им помочь.
Первое, что они сделали - заключили соглашение с всероссийским комитетом WRO и добились разрешения на использование световых датчиков собственного производства в отборочных этапах МСР. Второе - это выпуск нового датчика, который все желающие могут использоваться для более точного определения расстояний.

Встречайте, инфракрасный датчик расстояния:

понедельник, 28 января 2013 г.

Цифровые датчики SmartBricks: не NXT-G единым...

Тому, что на блоге не было давно статей с детальным обзором датчиков SmartBricks, есть одно объяснение - предыдущие обзоры рассматривали аналоговые датчики, которые по поведению ничем ни отличались от уже существующих LEGO датчиков, поэтому и при их программировании в тестах применялись те же самые средства, что и для обычных датчиков.
Для новых цифровых датчиков в языках Python и NXC, использовавшихся для обработки данных в тестах, нет готовых библиотек для опроса SmartBricks датчиков. Поэтому, прежде чем проводить эксперименты с новым датчиком, нужно было разобраться с протоколами связи с датчиками и реализовать соответствующий функционал в языках программирования.

Следует отметить, что для среды программирования NXT-G, компания SmartBricks предлагает для загрузки уже готовые блоки, а также и примеры их использования. Но по причине неудобства использования этой среды в целом для тестирования - это больше касается возможностей взаимодействия с компьютером, нежели самого процесса программирования и производительности, было решено не использовать NXT-G для подготовки обзоров.

Прежде, чем перейти описанию того как работать с цифровыми датчиками в языках NXC и Python, нужно сначала обратить внимание на, то как устроен интерфейс общения NXT блока с датчиком через протокол I2C. В целом, неплохая вводная есть известной книге "Extreme NXT: Extending the LEGO MINDSTORMS NXT to the Next Level" (*) и есть надежда, что это описание перекочует в "перевод" на русский язык, который делается энтузиастами из Оренбурга. Сейчас же, в двух словах можно сказать, что цифровой датчик по сути представляет из себя отдельное вычислительное устройство, которое может отдавать данные - обработанные результаты измерений, причем обработка измерений может контролироваться снаружи - на устройство могут подаваться входные данные, задающие правила вычислений, или переменные, участвующие в этих вычислениях. Иными словами, NXT блок может передавать в датчик данные по I2C шине и считывать из датчика данные.

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

Сортировка данных на NXT

В начале этой неделе я опубликовал вопрос: как в произвольном тексте найти 10 наиболее часто используемых слов? В программах для NXT обработка кучи данных с сенсоров является обыденным делом, но что если тебе надо узнать только 10 самых больших или маленьких значений? Как ты будешь решать этот вопрос? В языке RobotC нет специальных функций для сортировки; в NXC есть единственная ArraySort функция, упорядочивающая численные массивы по возрастанию. Поэтому в данной статье я решил провести небольшое исследование различных алгоритмов сортировки. Я помню эту классную демонстрацию работы алгоритмов, которая наглядно показывает различия в принципах сортировки. Я подумал, что будет реально здорово, если я сделаю тоже самое на NXC. И я сделал это.

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

NXC: датчики, енкодеры, кнопки - взаимодействуем с внешним миром

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

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

Lego-робот подделывает подпись

Довольно интересный симбиоз получился у Eason Ke: он взял LEGO-манипулятор, с закрепленным в нем карандашом, и широкоэкранный Android смартфон. Затем он написал приложение, которое считывает все перемещения пользователя на экране смартфона, а затем отправляет их на манипулятор.
В итоге, получается, что робот полностью повторяет почерк пользователя, что бы тот не написал.


Автор этого устройства делится с нами не только деталями по сборке манипулятора, но и некоторыми деталями по его программированию: программа на NXC для управления манипулятором и связанная с ней математика.

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

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

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

среда, 26 сентября 2012 г.

NXC: использование циклов

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

Как и в обычном C, в NXC поддерживается несколько видов циклов: for, while, do ... while, repeat.
Есть даже не совсем обычная команда until, которая является макросом к использованию while().

В этой заметке основной акцент сделан не на стандартное поведение программы при использовании циклов, а на особенности, существующие в NXC.

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

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

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

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

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

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

пятница, 21 сентября 2012 г.

Как определить цвет, когда датчик "врет"?

При работе с датчиками цвета разных производителей случаются ситуации, когда датчик не определяет цвет корректно. Например, в тех ситуациях, когда на определение влияет недостаток освещенности или наоборот - слишком много света. Еще такое может случаться, когда механизм движется слишком быстро или нет какого-то фиксированного расстояния до предмета, цвет которого датчик пытается определить - например, когда робот движется по направлению к этому предмету.
Один из способов, победить такое поведение датчика - снять показания с каждой из трех цветовых компонент: красной, зеленой и синей, так чтобы по их значения самостоятельно (собственным алгоритмом) попытаться определить какого же цвета предмет. Такой способ уже был описан вот в этом материале. Но дело в том, что подразумевается, что у нас есть достаточно много времени для определения цвета, производя последовательно 3 или даже 4 (замер освещенности без подсветки вообще), и датчик и предмет неподвижны относительно друг друга. А это не всегда возможно достичь, особенно в условиях робототехнических состязаний - когда время работы робота является критичной величиной.

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

Скорость опроса сенсоров

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

Итак, сначала надо определиться с методикой определения частоты опроса датчика.
Предлагается такой алгоритм:
  1. Инициализируем датчик
  2. Запоминаем текущее значение таймера (или сбрасываем таймер в ноль)
  3. Делаем N итераций цикла, который делает только одно действие - опрашивает датчик
  4. После завершения цикла запоминаем новое значение таймера, а точнее на сколько он изменился с шага 2.
В результате, поделив количество итераций на время, которое они заняли, станет известно сколько итераций выполниться за 1 секунду.

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

Производительность NXT блока

Раз уже в прошлой заметке зашла речь о проекте RWTH - Mindstorms NXT Toolbox for MATLAB, то следует рассказать об одном интересном исследовании проведенном в рамках этого проекта.
Начать следует с того, что этот проект выкладывает все свои наработки (исходные коды) в свободный доступ, т.е. каждый может пройтись по дереву исходников и ознакомиться с наиболее интересными. Так вот, среди множества файлов есть группа под общим название Performance Сheck (Проверка производительности), которые предоставляют немного новой информации о том, как работает программное обеспечение NXT блока.

На самом деле автор данных материалов делал исследование с целью измерить какие трюки, уловки он смог бы применять в своих программах на языке Not eXactly C, чтобы его роботы были более быстрыми, имели меньшее время реакции на события и т.п. Для этого он создал набор тестов. измеряющие производительность стандартного NXT firmware.

Эти тесты включали в себя следующие проверки:

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

Изучай NXC c роботами из набора NXT 2.0

Инструкции, которые идут вместе c коробочной версией LEGO Mindstorms NXT-G 2.0 содержат указания по сборке четырех различных роботов - Alpha Rex, Shooterbot, Robogator и ColorSorter.
Но также здесь есть и небольшой самоучитель, с помощью которого можно написать несколько простых программ на NXT-G для этих четырех видов роботов. Т.е. таким образом получаете и "продвинутую" игрушку и базовые навыки программирования роботов.

Автор сайта "Arbitrary Creations" пошел дальше - он для каждой "базовой" модели написал программы на языке Not eXactly C. Т.е. таким образом он убил двух зайцев - попрактиковался в программировании на NXC и освоил программирование роботов в операционной системе Linux.

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

И инструкции по сборке NXT 2.0 моделей, и программы на языке NXC можно найти на данной странице сайта.

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

Домашние задания для занятий по робототехнике

Когда занятия по робототехнике вводятся в учебный процесс, то встает вопрос давать или не давать домашние задания учащимся. Это ведь может быть даже не формальное задание, а предложение к ученикам использовать свободное время ребят для их же пользы.
Но тогда встает другой вопрос - не у каждого ребенка, занимающегося робототехникой, есть необходимое оборудование. Что делать?

При размышлении на эту тему возникают следующие идеи:

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

воскресенье, 3 июня 2012 г.

Lego Mindstorms на Linux Install Fest 12.04 в Нижнем Новгороде

Неделю назад, 27 мая в Нижнем Новгороде проходил Linux Install Fest, проводимый активистами Нижегородской группой пользователей Linux. Цель мероприятия - ознакомить участников фестиваля с последними новинками среди Свободного Программного Обеспечения (СПО), в том числе с последними дистрибутивами ОС Linux.
Также здесь можно было узнать, какие аналогичные программные пакеты СПО можно использовать взамен проприетарного, найти ответы на вопросы, связанные с Linux и СПО, да и просто свободно пообщаться с единомышленниками, завести новые полезные знакомства.

Одной из презентаций на данном мероприятии, был доклад, посвященный LEGO. Основной задачей доклада было рассказать, что в ОС Linux, тоже существует возможность программировать LEGO роботов. Особенно актуально это может быть для преподавателей таких школ, где в целях экономии было принято решение перейти на СПО, таким образом становятся недоступными такие среды программирования, как NXT-G, LabView, RobotC и т.п.

вторник, 22 мая 2012 г.

Пишем программы на NXC, а запускаем в RobotC Virtual World

RobotC Virtual Worlds без сомнения очень полезная штука, особенно когда касается возможности учитсья программировать Lego-роботов без наличия настоящего конструктора.
Но не всегда хочется изучать новый язык программирования, только для того, чтобы запускать роботов в виртуальной среде дома.
Тем более, если реального робота потом придется программировать все равно в другом.

Еще один камень, который можно бросить, в сторону языка RobotC, то что некоторые его конструкции не очень очевидны и довольно сложны для изучения ребятам, которые только знакомяться с программированием. Например, это можно сказать про операции с моторами – не сразу можно догадаться, что робот поедет сразу, как только данные о необходимой скорости занесены в специальные ячейки массива motor.
motor[motorB] = 100;
motor[motorC] = 100;
Другой момент касается довольно сложных программных структур, только для того, чтобы повернуть одно из колес робота на один поворот:
nMotorEncoder[motorB]=0;
while (nMotorEncoder[motorB] < 360) {
  motor[motorB] = 100;
}

пятница, 11 мая 2012 г.

Application Developer Days - 3. Материалы.

Как обещал, выкладываю материалы мастер-класса по Lego-роботам, проведенным на Application Developer Days - 3. Видео самого доклада будут опубликованы позже.\
Те кто хочет участвовать в завтрашнем состязании - обязательно ознакомиться.

Скачать презентацию можно здесь. Инфографика, которую нужно смотреть параллельно со слайдами, тоже доступна для загрузки.

Примеры NXC программ, показанных на мастер-классе ниже:

понедельник, 7 мая 2012 г.

Ученик барабанщика - участник Робофест 2012

Если кто-то еще не в курсе, то знайте, что описания и видео почти всех проектов, участвовавших в Всероссийском этапе международной робототехнической олимпиады (WRO) можно найти на сайте wroboto.ru.
Сейчас же, пойдет речь о проекте ребят из Нижегородского Института Информационных Технологий, который также участвовал в конкурсе.
Начать, наверное, стоит с того, что нужно напомнить, что сквозной идеей WRO этого года была разработка таких проектов, которые бы изучали, как роботы входят в повседневную жизнь. Именно это во многом определило внешний вид и функциональность представленных роботов.

суббота, 5 мая 2012 г.

Подготовка мастер-класса для Applicaition Developer Days. Часть III

Закончена инфографика для той части мастер-класса, которая будет посвящена обзору средств программирования Lego-роботов.
Традиционно, ожидаются отзывы и конструктивные комментарии.

Впереди склейка всей инфорграфики и подготовка слайдов.
Related Posts Plugin for WordPress, Blogger...