среда, 13 июня 2012 г.

NXT и Python: готовимся к работе

С точки зрения простоты обучения языки программирования можно разделить на две группы:
  • для начала программирования на одних надо прочитать толстые книжки
  • осваивать вторые можно уже с первых страниц учебника и показательных примеров
Одним из языков, относящихся ко второй категории, можно отнести язык программирования Python. Это скриптовый язык, т.е. его не нужно компилировать, а также он доступен, как в Windows, так и Unix-подобных операционных системах.

Чтобы получить понятие о простоте языка, можно посмотреть на банальный пример – вывод строчки на экран. В этом случае, скрипт будет состоят всего из одной строчки:
print "Hello, Robot!"

Благодаря модульной структуре язык легко расширяется новым функционалом, позволяющим строить сложные вычислительные системы. Например, этот язык широко используется в Google. Его также любят математики всего мира за то, что он позволяет не отвлекаться на реализацию сложных языковых конструкций, а направить все внимание на логику программы.

На этом языке также можно писать программы для Lego-роботов. Для этого существует сразу несколько модулей, реализующих разные подходы к программированию. Первый подход, традиционный, позволяющий создавать автономных роботов, достигается с помощью модуля PyNXC. Другой подход - программа выполняется на компьютере, а на робота передаются только управляющие сигналы на моторы и снимаются показания с сенсоров, становиться возможен с помощью модуля nxt-python.

Про первый модуль много говорить не нужно – по сути это модуль-обертка, он позволяет писать программы в Python, но при этом использовать синтаксис языка Not eXactly C (nxc). Затем, скриптовая программа компилируется в байт код и загружается на NXT блок. Вот пример, программы, написанной с помощью модуля PyNXC:
def main():
    DefineSensors(TOUCH,None,None,None)
    OnFwd(OUT_AC, 75)
    while  SensorVal(1) != 1:
        pass
    Off(OUT_AC)

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

Если у вас уже есть установленная версия языка Python, то доставить модули, необходимые модули для программирования роботов, не составит большого труда.
В качестве примера, здесь написано, как установить модуль nxt-python и сопутствующие модули на операционной системе на базе Linux.
  1. Первым шагом будет загрузка последней стабильной версии модуля с сайта проекта
  2. Затем, нужно распаковать файл архив, содержащий код модуля.
    $ tar xzf nxt-python-2.2.2.tar.gz
  3. В итоге получиться директория nxt-python-2.2.2, откуда необходимо выполнить установку модуля в систему, причем сделать это нужно переключившись под суперпользователя
    cd nxt-python-2.2.2 
    python setup.py install
  4. Установка модуля для программирования роботов установлена, но он не предоставляет средств для работы с роботом посредством USB или BlueTooth. Эти модули надо устанавливать отдельно. Например, модуль для работы с USB – PyUSB можно скачать здесь
  5. Теперь распакуем его:
    unzip pyusb-1.0.0a2.zip
  6. И произведем установку (тоже от суперпользователя):
    cd pyusb-1.0.0a2
    python setup.py install
  7. Теперь можно попробовать прошла ли установка нормально и видится ли робот из python-скриптов. Для этого снова зайдите в директорию с модулем nxt-python, найдите в ней директорию с примерами и запустите какой-нибудь скрипт от туда:
    cd nxt-python-2.2.2
    cd examples
    python mary.py
    Если программа выдает ошибку и NXT блок не находится, проверьте, что ваша операционная система настроена для предоставления доступа непривилегированному пользователю к USB, как это описано здесь.

1 комментарий:

Related Posts Plugin for WordPress, Blogger...