Archive for June, 2010

PySSC32 — простой интерфейс к SSC-32

Для работы над своим манипулятором потребовался удобный интерфейс. То что я находил мне не нравилось, вот и написал свою версию.

Главный класс ведет себя как список или словарь для доступа к конкретной серве. При таком подходе не нужно каждый раз по индексу вытаскивать серву, достаточно присвоить какой-нибудь переменной.

Например:

>>> import ssc32
>>> ssc = ssc32.SSC32('/dev/ttyUSB0', 115200)
>>> my_servo = ssc[1]
>>> my_servo.position = 1000
>>> ssc.commit(time=1000)

Каждой серве можно установить минимальное и максимальное положение (диапазон по умолчанию 500..2500 мкс), чему эти положения соответствуют в градусах и имя сервы. После установки соответствия с градусами можно пользоваться свойствами Servo.degrees и Servo.radians вместо Servo.position.

Чтобы каждый раз не забивать параметры серв их можно сохранить в файл и из него же загрузить, для этого служат методы SSC32.load_config(config_path) и SSC32.save_config(config_path), а у конструктора есть необязательный аргумент config='config_path' из которого будут загружены параметры. Важно заметить что сохранены будут только сервы имеющие имя.

Пример:

>>> import ssc32
>>> ssc = ssc32.SSC32('/dev/ttyUSB0', 115200, config='example.cfg')
>>> joint2 = ssc['joint2']
>>> joint2.max, joint2.deg_max = 2200, 45.0
>>> joint2.min, joint2.deg_min = 1270, -45.0
>>> ssc.save_config()

Есть еще простой скриптовый интерфейс использующий YAML для записи. Примеры http://hg.vehq.ru/pyssc32/file/tip/scripts

0 comments »