Инструкция по управлению манипуляционным роботом в среде ROS

Материал из RoboWiki
Версия от 23:48, 3 августа 2020; Editor (обсуждение | вклад) (Запуск симуляционной модели)
Перейти к навигации Перейти к поиску

Установка ПО

Загрузка и установка окружения

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

Скачивание необходимых пакетов пакетов

Для работы с манипулятором в системе ROS необходимо скачать специальные пакеты управления, позволяющие работать как с симуляционной моделью, так и с реальным роботом. Пакеты располагаются на GitHub. Скачать их можно либо через инструменты git (команда git clone {ссылка на скачиваемые файлы}) либо непосредственно с сайта.

Снимок.png

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

Папки.png

В данном случае папка robotic_arms_ws содержит пакеты для работы с реальным роботом, папка robotic_arms_ws_simulation - пакеты для работы с симуляционной моделью.

Описание кинематики манипулятора

Описание манипулятора

В качестве объекта управления используется манипулятор с угловой кинематикой компании Aplied Robotics.

Large Угловой РТК 8.png

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

Кинмод.png

На данной схеме изображены обобщенные координаты подвижностей манипулятора q1 - q5, звенья руки с индексами 0 - 4, а также схват 5. Под номером 0 обозначено условно неподвижное звено (стойка), которое является базовым. Все координаты, связанные с этим звеном, называются базовыми. За счет наличия пяти степеней подвижности, звенья манипулятора от 2 до 5 совершают плоское движение. Обобщенная координата q1 осуществляет вращения этой плоскости вокруг звена 1. Схват представляет из себя устройство, состоящее из сервомотора, двух пальцев, направляющей движения пальцев и дополнительных соединительных деталей.

Структура системы управления

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

Сис урп.png

Модуль управления рукой манипулятора

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

Модуль управления схватом манипулятора

Модуль управления схватом манипулятора позволяет задавать команды по сжатию и отпусканию объектов, при этом реализуя обратную связь с информацией о том, находится ли деталь в схвате.

Модуль управления приводами манипулятора

Данный модуль реализован с помощью готовых библиотек по работе с сервомоторами Dynamixel. Он позволяет получать данные энкодеров, настраивать параметры ПИД регуляторов, получать значения с датчиков температур и тока сервомоторов, используя USB порт компьютера. Подключение манипулятора (цепи сервомоторов) к USB - порту ПК производится с помощью адаптера USB - DXL - AR и SMPS2Dynamixel, позволяющего обеспечить для сервомоторов отдельное 12V питание

Свисток.png

Симуляционная модель

Структура пакета

Структура пакета управления симуляционной моделью имеет следующий вид:

Диаграмма.png

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

Запуск симуляционной модели

Перед работой с пакетами управления необходимо произвести сборку проекта. Для этого, находясь в папке workspace требуется выполнить команду catkin_make. Запуск симуляционной модели производится с помощью команды (перед этим предварительно, находясь в папке workspace необходимо выполнить команду source devel/setup.bash)
roslaunch arms_control_pkg angle_arm_control.launch

В результате выполнения команды запустится визуализация робота в среде RVIZ.

Модель.png

Для формирования задания манипулятору используются сервисы. Команда для задания желаемой точки и ориентации имеет следующий вид:

rosservice call /cmd_point “point: ‘{x} {y} {z} {pitch} {roll}’”

/cmd_point – задание координаты рабочего инструмента в формате “{x} {y} {z} {pitch} {roll}”, где pitch – угол наклона схвата к горизонтали (вертикально вниз -1.57, вверх 0.70), roll – угол поворота схвата вокруг своей оси.

Для примера предложен набор достижимых точек: 350 0 350 0 0, -350 0 300 0 0, 250 0 110 -1 0, 150 150 150 -1 0, 150 150 100 -1.57 0 (в миллиметрах и радианах)

В качестве ответа сервис возвращает true, если все хорошо, false – если обратная задача кинематики не решается. для управления схватом манипулятора производится вызов сервиса: rosservice call /grippe_cmd “point: ‘расстояние между губками’”. Например ‘0.2’ – полностью открыт, ‘0’ – закрыт. Схват открывается и закрывается моментально.