Инструкция по управлению манипуляционным роботом в среде ROS: различия между версиями
Editor (обсуждение | вклад) (→Структура пакета) |
Editor (обсуждение | вклад) (→Симуляционная модель) |
||
(не показано 10 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
== Установка ПО == | == Установка ПО == | ||
=== Загрузка и установка окружения === | === Загрузка и установка окружения === | ||
− | Для работы с пакетами управления манипулятором в среде ROS необходимо создать окружение. Для этого можно использовать | + | Для работы с пакетами управления манипулятором в среде ROS необходимо создать окружение. Для этого можно использовать виртуальную машину, порядок установки которой изложен по следующей [http://%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B5_%D1%81%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D0%B8_%D1%80%D0%BE%D0%B1%D0%BE%D1%82%D0%B0_TurtleBot3_%D0%B2_ROS ссылке]. В случае, когда на персональном компьютере уже установлена Linux-система, то для корректной работы с пакетами управления манипулятором необходимо иметь систему [https://www.linuxtechi.com/ubuntu-18-04-lts-desktop-installation-guide-screenshots/ Ubuntu 18.04] и [http://wiki.ros.org/melodic/Installation/Ubuntu ROS Melodic]. |
− | === Скачивание необходимых | + | === Скачивание необходимых пакетов === |
− | Для работы с манипулятором в системе ROS необходимо скачать специальные пакеты управления, позволяющие работать как с | + | Для работы с манипулятором в системе ROS необходимо скачать специальные пакеты управления, позволяющие работать как с моделью для симуляции, так и с реальным роботом. Пакеты располагаются на [https://github.com/VladislavBakaev/angle_manipulator GitHub]. Скачать их можно либо через инструменты git (команда git clone {ссылка на скачиваемые файлы}) либо непосредственно с сайта. |
[[Файл:Снимок.png|центр]] | [[Файл:Снимок.png|центр]] | ||
Строка 9: | Строка 9: | ||
[[Файл:Папки.png|центр]] | [[Файл:Папки.png|центр]] | ||
− | В данном случае папка robotic_arms_ws содержит пакеты для работы с реальным роботом, папка robotic_arms_ws_simulation - пакеты для работы с | + | В данном случае папка robotic_arms_ws содержит пакеты для работы с реальным роботом, папка robotic_arms_ws_simulation - пакеты для работы с моделью для симуляции. |
== Описание кинематики манипулятора == | == Описание кинематики манипулятора == | ||
Строка 20: | Строка 20: | ||
На данной схеме изображены обобщенные координаты подвижностей манипулятора q1 - q5, звенья руки с индексами 0 - 4, а также схват 5. Под номером 0 обозначено условно неподвижное звено (стойка), которое является базовым. Все координаты, связанные с этим звеном, называются базовыми. За счет наличия пяти степеней подвижности, звенья манипулятора от 2 до 5 совершают плоское движение. Обобщенная координата q1 осуществляет вращения этой плоскости вокруг звена 1. Схват представляет из себя устройство, состоящее из сервомотора, двух пальцев, направляющей движения пальцев и дополнительных соединительных деталей. | На данной схеме изображены обобщенные координаты подвижностей манипулятора q1 - q5, звенья руки с индексами 0 - 4, а также схват 5. Под номером 0 обозначено условно неподвижное звено (стойка), которое является базовым. Все координаты, связанные с этим звеном, называются базовыми. За счет наличия пяти степеней подвижности, звенья манипулятора от 2 до 5 совершают плоское движение. Обобщенная координата q1 осуществляет вращения этой плоскости вокруг звена 1. Схват представляет из себя устройство, состоящее из сервомотора, двух пальцев, направляющей движения пальцев и дополнительных соединительных деталей. | ||
+ | |||
== Структура системы управления == | == Структура системы управления == | ||
Для структурирования системы управления удобно ее разделить на три основных модуля: модуль управления приводами, модуль управления рукой манипулятора, модуль управления схватом. Взаимосвязи между ними изображены на следующей схеме: | Для структурирования системы управления удобно ее разделить на три основных модуля: модуль управления приводами, модуль управления рукой манипулятора, модуль управления схватом. Взаимосвязи между ними изображены на следующей схеме: | ||
Строка 30: | Строка 31: | ||
Данный модуль реализован с помощью готовых библиотек по работе с сервомоторами Dynamixel. Он позволяет получать данные энкодеров, настраивать параметры ПИД регуляторов, получать значения с датчиков температур и тока сервомоторов, используя USB порт компьютера. Подключение манипулятора (цепи сервомоторов) к USB - порту ПК производится с помощью адаптера USB - DXL - AR и SMPS2Dynamixel, позволяющего обеспечить для сервомоторов отдельное 12V питание | Данный модуль реализован с помощью готовых библиотек по работе с сервомоторами Dynamixel. Он позволяет получать данные энкодеров, настраивать параметры ПИД регуляторов, получать значения с датчиков температур и тока сервомоторов, используя USB порт компьютера. Подключение манипулятора (цепи сервомоторов) к USB - порту ПК производится с помощью адаптера USB - DXL - AR и SMPS2Dynamixel, позволяющего обеспечить для сервомоторов отдельное 12V питание | ||
[[Файл:Свисток.png|центр]] | [[Файл:Свисток.png|центр]] | ||
− | == | + | |
+ | == Модель для симуляции == | ||
=== Структура пакета === | === Структура пакета === | ||
− | Структура пакета управления | + | Структура пакета управления моделью в симуляции имеет следующий вид: |
[[Файл:Диаграмма.png|центр]] | [[Файл:Диаграмма.png|центр]] | ||
− | Представленная структурная схема описывает подход к расположению различных модулей системы управления. Данная схема | + | Представленная структурная схема описывает подход к расположению различных модулей системы управления. Данная схема одинаков как для реального робота, так и для модели в симуляции за исключением пакета управления сервомоторами, который отсутствует для симуляции. В данной схеме выделены три основных блока: pc_image - пакет визуализации движения робота, nanopi_image - пакет управления роботом, arms_control_pkg - пакет запуска системы управления и визуализации. |
− | === Запуск | + | === Запуск модели в симуляции === |
Перед работой с пакетами управления необходимо произвести сборку проекта. Для этого, находясь в папке workspace требуется выполнить команду catkin_make. | Перед работой с пакетами управления необходимо произвести сборку проекта. Для этого, находясь в папке workspace требуется выполнить команду catkin_make. | ||
− | Запуск | + | Запуск модели в симуляции производится с помощью набора команд: <br> |
− | roslaunch arms_control_pkg angle_arm_control.launch | + | source devel/setup.bash<br> |
+ | roslaunch arms_control_pkg angle_arm_control.launch<br> | ||
+ | |||
В результате выполнения команды запустится визуализация робота в среде RVIZ. | В результате выполнения команды запустится визуализация робота в среде RVIZ. | ||
[[Файл:Модель.png|центр]] | [[Файл:Модель.png|центр]] | ||
+ | Для формирования задания манипулятору используются сервисы. Для задания команды необходимо открыть новый терминал в той же директории, из которой запускалась модель симуляции и выполнить команду source devel/setup.bash. Команда для задания желаемой точки и ориентации имеет следующий вид:<br> | ||
+ | |||
+ | rosservice call /cmd_point “point: ‘{x} {y} {z} {pitch} {roll}’”<br> | ||
+ | |||
+ | /cmd_point – имя сервиса для задания координаты рабочего инструмента в формате “{x} {y} {z} {pitch} {roll}”, где pitch – угол наклона схвата к горизонтали (вертикально вниз -1.57, вверх 0.70), roll – угол поворота схвата вокруг своей оси.<br> | ||
+ | |||
+ | Для примера предложен набор достижимых точек: 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 (в миллиметрах и радианах)<br> | ||
+ | |||
+ | В качестве ответа сервис возвращает true, если все хорошо, false – если обратная задача кинематики не решается. | ||
+ | Для управления схватом манипулятора так же, как и в случае управления рукой, необходимо открыть новый терминал в той же директории и выполнить команду source devel/setup.bash. С помощью следующей команды производится вызов сервиса: <br> | ||
+ | rosservice call /grippe_cmd “point: ‘расстояние между губками’”<br> | ||
+ | Например ‘0.2’ – полностью открыт, ‘0’ – закрыт. Схват открывается и закрывается моментально. | ||
+ | Пример работы симуляции при следующем наборе управляющих точек: 240 150 300 0 0; -240 -150 200 -1 -1; 350 0 200 -0.5 1; 150 150 200 -0.5 1 | ||
+ | <gallery> | ||
+ | 1p.png|240 150 300 0 0 | ||
+ | 2p.png|-240 -150 200 -1 -1 | ||
+ | 3p.png|350 0 200 -0.5 1 | ||
+ | 4p.png|150 150 200 -0.5 1 | ||
+ | </gallery> | ||
+ | === Система топиков, нод и сервисов === | ||
+ | В пакете симуляции управления манипулятором при его запуске доступны следующие топики | ||
+ | [[Файл:Топики.png|центр]] | ||
+ | |||
+ | На рисунке представлен список всех топиков, работающих в системе ROS при запуске пакетов управления. Из них только топик /angle_robot/joint_states содержит полезную информацию, а именно текущие обобщенные координаты сочленений манипулятора. | ||
+ | Далее на рисунке представлен список нод, работающих в системе ROS при запуске модели для симуляции. | ||
+ | [[Файл:Ноды.png|центр]] | ||
+ | На рисунке изображены ноды /rosout и /rviz, которые являются системными. Далее нода /angle_robot/robot_state_publisher3 производит перемещение визуальной модели манипулятора, нода /main_to_point_control принимает поступающие команды, решает обратную задачу кинематики и отправляет полученные требуемые обобщенные координаты ноде /convert_and_publish,нода /convert_and_publish производит кинематическое моделирование движения робота. | ||
+ | [[Файл:Граф.png|центр]] | ||
+ | На рисунке выше изображен граф взаимодействия нод в системе при запуске пакета симуляции. |
Текущая версия на 16:18, 5 августа 2020
Содержание
Установка ПО
Загрузка и установка окружения
Для работы с пакетами управления манипулятором в среде ROS необходимо создать окружение. Для этого можно использовать виртуальную машину, порядок установки которой изложен по следующей ссылке. В случае, когда на персональном компьютере уже установлена Linux-система, то для корректной работы с пакетами управления манипулятором необходимо иметь систему Ubuntu 18.04 и ROS Melodic.
Скачивание необходимых пакетов
Для работы с манипулятором в системе ROS необходимо скачать специальные пакеты управления, позволяющие работать как с моделью для симуляции, так и с реальным роботом. Пакеты располагаются на GitHub. Скачать их можно либо через инструменты git (команда git clone {ссылка на скачиваемые файлы}) либо непосредственно с сайта.
В результате скачивания любым из представленных способов получены две папки (workspace). Одна из папок содержит пакеты для управления реальной моделью, вторая для работы с симуляцией. Полученные папки требуется расположить в следующем формате:
В данном случае папка robotic_arms_ws содержит пакеты для работы с реальным роботом, папка robotic_arms_ws_simulation - пакеты для работы с моделью для симуляции.
Описание кинематики манипулятора
Описание манипулятора
В качестве объекта управления используется манипулятор с угловой кинематикой компании Aplied Robotics.
Данный манипулятор представляет из себя устройство, в состав которого входят только вращательные подвижности. Всего подвижностей манипулятора пять - три переносные и две ориентирующие. Благодаря этому для однозначного задания положения схвата манипулятора в трехмерном пространстве достаточно указать три декартовы координаты центра системы координат схвата, а так же два угла ориентации её осей. Наличие только пяти степеней подвижности вносит некоторые ограничения в позиционировании схвата, так как для задания ориентации твердого тела в пространстве необходимо указать шесть параметров - три координаты положения и три угла ориентации. По этой причине схват манипулятора может не достигать некоторых положений.
На данной схеме изображены обобщенные координаты подвижностей манипулятора q1 - q5, звенья руки с индексами 0 - 4, а также схват 5. Под номером 0 обозначено условно неподвижное звено (стойка), которое является базовым. Все координаты, связанные с этим звеном, называются базовыми. За счет наличия пяти степеней подвижности, звенья манипулятора от 2 до 5 совершают плоское движение. Обобщенная координата q1 осуществляет вращения этой плоскости вокруг звена 1. Схват представляет из себя устройство, состоящее из сервомотора, двух пальцев, направляющей движения пальцев и дополнительных соединительных деталей.
Структура системы управления
Для структурирования системы управления удобно ее разделить на три основных модуля: модуль управления приводами, модуль управления рукой манипулятора, модуль управления схватом. Взаимосвязи между ними изображены на следующей схеме:
Модуль управления рукой манипулятора
Данный модуль реализует функционал по управлению рукой манипулятора. В нем производится решение прямой и обратной позиционной задачи кинематики, реализуется код по формированию и отображению траектории движения схвата, преобразование координат из показаний энкодеров приводов в радианы и обратно, а также реализует функционал, позволяющий в удобной форме задавать команду для движения схвата манипулятора, при этом контролируя достижение заданной точки.
Модуль управления схватом манипулятора
Модуль управления схватом манипулятора позволяет задавать команды по сжатию и отпусканию объектов, при этом реализуя обратную связь с информацией о том, находится ли деталь в схвате.
Модуль управления приводами манипулятора
Данный модуль реализован с помощью готовых библиотек по работе с сервомоторами Dynamixel. Он позволяет получать данные энкодеров, настраивать параметры ПИД регуляторов, получать значения с датчиков температур и тока сервомоторов, используя USB порт компьютера. Подключение манипулятора (цепи сервомоторов) к USB - порту ПК производится с помощью адаптера USB - DXL - AR и SMPS2Dynamixel, позволяющего обеспечить для сервомоторов отдельное 12V питание
Модель для симуляции
Структура пакета
Структура пакета управления моделью в симуляции имеет следующий вид:
Представленная структурная схема описывает подход к расположению различных модулей системы управления. Данная схема одинаков как для реального робота, так и для модели в симуляции за исключением пакета управления сервомоторами, который отсутствует для симуляции. В данной схеме выделены три основных блока: pc_image - пакет визуализации движения робота, nanopi_image - пакет управления роботом, arms_control_pkg - пакет запуска системы управления и визуализации.
Запуск модели в симуляции
Перед работой с пакетами управления необходимо произвести сборку проекта. Для этого, находясь в папке workspace требуется выполнить команду catkin_make.
Запуск модели в симуляции производится с помощью набора команд:
source devel/setup.bash
roslaunch arms_control_pkg angle_arm_control.launch
В результате выполнения команды запустится визуализация робота в среде RVIZ.
Для формирования задания манипулятору используются сервисы. Для задания команды необходимо открыть новый терминал в той же директории, из которой запускалась модель симуляции и выполнить команду source devel/setup.bash. Команда для задания желаемой точки и ориентации имеет следующий вид:
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 – если обратная задача кинематики не решается.
Для управления схватом манипулятора так же, как и в случае управления рукой, необходимо открыть новый терминал в той же директории и выполнить команду source devel/setup.bash. С помощью следующей команды производится вызов сервиса:
rosservice call /grippe_cmd “point: ‘расстояние между губками’”
Например ‘0.2’ – полностью открыт, ‘0’ – закрыт. Схват открывается и закрывается моментально.
Пример работы симуляции при следующем наборе управляющих точек: 240 150 300 0 0; -240 -150 200 -1 -1; 350 0 200 -0.5 1; 150 150 200 -0.5 1
Система топиков, нод и сервисов
В пакете симуляции управления манипулятором при его запуске доступны следующие топики
На рисунке представлен список всех топиков, работающих в системе ROS при запуске пакетов управления. Из них только топик /angle_robot/joint_states содержит полезную информацию, а именно текущие обобщенные координаты сочленений манипулятора. Далее на рисунке представлен список нод, работающих в системе ROS при запуске модели для симуляции.
На рисунке изображены ноды /rosout и /rviz, которые являются системными. Далее нода /angle_robot/robot_state_publisher3 производит перемещение визуальной модели манипулятора, нода /main_to_point_control принимает поступающие команды, решает обратную задачу кинематики и отправляет полученные требуемые обобщенные координаты ноде /convert_and_publish,нода /convert_and_publish производит кинематическое моделирование движения робота.
На рисунке выше изображен граф взаимодействия нод в системе при запуске пакета симуляции.