(Рабочий отчет RWR-2014-06

advertisement
Малышев А.А.
Базовые механизмы управления манипулятором
Рабочий отчет RWR-2014-06-06.1
Москва, 2014 г.
Оглавление
Оглавление ...................................................................................................... 2
Аннотация ....................................................................................................... 3
Установка ........................................................................................................ 3
Входные и выходные ..................................................................................... 8
Примечания .................................................................................................. 11
2
RWR-2014-06-06.1
Операционная система: Ubuntu OS 12.04;
Разработано под ROS Hydro;
Комплекс предназначен для работы с манипулятором.
Аннотация
Программа предназначена для работы с манипуляторами - получение
команд от оператора, передача их на манипулятор и исполнение.
Задание конечного положения осуществляется как в виде задания
координат конечной точки, так и в задании значений устанавливаемых
углов для каждого сервопривода
Важно: работает только с контроллерами Pololu ServoController.
Установка
Для работы с манипулятором используются следующие пакеты ROS:
 pllclient - формирование команд и отправка их на манипулятор;
 pllserver - пакет работы с самим манипулятором. Включает в себя
библиотеку работы с Pololu ServoController:
 msg_manip - содержит формат сообщения, передаваемого между
pllserver и pllclient;
 Lib - общая библиотека для наших проектов;
Также необходим файл конфигурации для манипулятора.
Скачиваем вышеописанные пакеты из папки ROS\src на общем ресурсе
и копируем в свой workspace.
Собираем.
Работаем.
Рис.1. Структура комплекса после запуска всех узлов
3
RWR-2014-06-06.1
Запуск
Запуск осуществляется следующими командами:
rosrun pllclient pllclient id_манипулятора
rosrun pllserver pllserver файл_конфигурации
В pllclient пользователь вводит команды, которые управляют
манипулятором. Команды проверяются на корректность написания и
значений аргументов и отправляются на pllserver, где исполняются на
железе.
pllserver управляет железом - посылает команды на Pololu Servo
Controller.
Для управления манипулятором pllclient используем следующие
команды:
Формат команды
Описание
seize on_off
Команда положения схвата. Если аргумент = 0, то
схват разжат, если имеет ненулевое значение - сжат
Команда перемещения в точку. Аргументы координаты по осям X, Y, Z
Команда перемещения манипулятора вдоль оси Х.
Координаты по Y и Z остаются от прежнего
положения
Команда перемещения манипулятора вдоль оси Y.
Координаты по X и Z остаются от прежнего
положения
Команда перемещения манипулятора вдоль оси Z.
Координаты по X и Y остаются от прежнего
положения
Команда установки сервопривода на определённый
угол. Первый аргумент - номер плеча, для которого
устанавливается значение (он может не совпадать
с номером порта на Pololu !!!), второй - значение
устанавливаемого угла в градусах
"Усыпляет" pllclient на время, определённое
аргументом (в миллисекундах)
mxyz
mx x
my y
mz z
setang numchain
angval
sleep duration
4
RWR-2014-06-06.1
justlisten
z
e
Переводит pllclient в режим прослушки - выводит
всё, что публикуется в топик manip_cur_state
Устанавливает все машинки в начальное
положение - на всех сервоприводах углы в 0
градусов.
Завершает работу pllclient
5
RWR-2014-06-06.1
Файл конфигурации
Файл конфигурации описывает манипулятор. Имеет следующий вид:
/dev/ttyACM0
;файл контроллера Pololu.
1
; id манипулятора
4
; Количество звеньев
5
4
3
2
0
-20
-20
-80
0
0
0
0
10
96
91
140
-60
-60
-60
-60
60
60
60
60
-1
-1
-1
-1
; Основа
;
;
; Оконечное звено
Первая строка - путь к файлу устройства - контроллера Pololu Srervo
Controller;
Вторая строка - id манипулятора - уникальное числовое значение,
используемое для разграничения доступа к манипулятору. Используется
при одновременной работе нескольких манипуляторов.
Третья строка - количество звеньев в манипуляторе;
Последующие строки - описание каждого звена. Первым описывается
основа, далее - по степени удаления от основания.
Описание звена имеет такой вид:
<номер порта Pololu> <базовый угол> <на
ч.положение> <длина звена> <углы по
ворота a0 a1> <коэфф.>
Номер порта Pololu - физический номер порта, к которому подключён
сервопривод;
Базовый угол - угол, между звеном и сервомашинкой (детальное
описание в документации к библиотеке кинематики);
6
RWR-2014-06-06.1
Нач.положение - угол, устанавливаемый на сервомашинке на этапе
инициализации манипулятора;
Длина звена - физическая длина звена (измеряется в мм);
Углы поворота a0 a1 - граничные значения для углов сервомашинки.
Измеряются в градусах;
Коэфф - безразмерная величина, используемая для корректировки
работы манипулятора.
7
RWR-2014-06-06.1
Входные и выходные
На входе pllserver принимает файл конфигурации для манипулятора, в
pllclient в качестве аргумента передаётся id манипулятора.
Узел pllclient даёт такой вывод (рис.2).
Рис.2. Вывод узла pllclient
При старте программы выводится список команд, допустимых к
исполнению. По приглашению, пользователь вводит команду.
На Рис.3 - вывод pllclient в режиме “justlisten” - прослушиваются все
движения манипуляторов, подключённых к компьютеру.
8
RWR-2014-06-06.1
Рис.3 Вывод pllclient в режиме “justlisten”
На Рис.4 - вывод pllserver. При инициализации манипулятора в консоль
выводится информация: начальные значения углов установки
сервоприводов, положение конечной точки манипулятора. Затем, по
мере поступления команд на перемещение, выводятся текущие
достигнутые координаты, установленные для каждого сервопривода
значения углов, причём выводятся значения до поправки, после неё и
после конвертации в формат, читаемый Pololu.
9
RWR-2014-06-06.1
Рис.4 Вывод pllserver в консоли
10
RWR-2014-06-06.1
Примечания
Отдельно хотелось бы отметить наличие чудесной возможности
переименования узлов в ROS при запуске. Это оказывается полезным,
когда вы пытаетесь запустить сразу несколько одних и тех же узлов.
Дело в том, что ROS не позволяет запущенными быть несколько
программ с одинаковыми именами. Но есть удобный инструмент для
переименования. Для этого после полностью набранной команды
дописываем __name:=new_name, где new_name - новое имя узла.
Пример:
rosrun pllclient pllclient 0
Этой командой мы запускаем узел pllclient. Под именем pllclient он и
будет существовать в среде ROS.
rosrun pllclient pllclient 0 __name:=monitor
А вот этой командой мы запускаем узел pllclient, но переименовываем
его в monitor. Результат: в среде ROS узел числится под именем monitor.
Детальнее
о
переименовании
можно
посмотреть
здесь:
http://wiki.ros.org/ROS/Tutorials/UnderstandingNodes - раздел 1.7.
Малышев А.А. Базовые механизмы управления манипулятором //
Рабочий отчет RWR-2014-06-06.1, -М.: Robofob Lab, 2014
11
RWR-2014-06-06.1
Download