-
Notifications
You must be signed in to change notification settings - Fork 0
Nodes
Нода - контроллер движения. Ради ее создания и существует весь этот проект. Она дает возможность (пока, правда, в перспективе, потому что на данный момент нода еще не дописана) заставлять робота принимать желаемую конфигурацию и проводить его собственный схват по задаваемой параметризованной временем траектории.
-
joint_states (sensor_msgs/JointStates)
С данного топика нода получает информацию о текущем состоянии робота, а именно значения для углов, скоростей и моментов в его сочленениях.
-
target_pose (brics_actuator/JointPositions)
Через данный топик ноде отправляются задания на перевод робота в желаемую конфигурацию.
-
arm_1/arm_controller/torques_command (brics_actuator/JointTorques)
В данный топик нода отправляет управляющие роботом сигналы - желаемые значения моментов на его приводах.
-
~pose_regulation/kp (list of doubles, default: [1.0, 1.0, 1.0, 1.0, 1.0])
Значения для диагональных элементов матрицы Kp, входящей в выражение для расчета управляющих моментов в задаче достижения роботом желаемой конфигурации.
-
~pose_regulation/kd (list of doubles, default: [1.0, 1.0, 1.0, 1.0, 1.0])
Значения для диагональных элементов матрицы Kd, входящей в выражение для расчета управляющих моментов в задаче достижения роботом желаемой конфигурации.
Нода, реализующая более удобный интерфейс к топику target_pose ноды control_node. Принимает массив из пяти значений, имеющих смысл желаемых углов в сочленениях робота, в топике simple_pose и переотправляет их в виде должным образом сформированного сообщения типа brics_actuator/JointPositions в топик target_pose.
-
simple_pose (std_msgs/Float64MultiArray)
Полученный в данном топике массив из 5 значений нода перетоправляет в топик target_pose как углы, которые должны быть обеспечены в сочленениях робота.
-
target_pose (brics_actuator/JointPositions)
В данный топик нода переотправляет те значения для углов в сочленениях робота, которые она получила в топике simple_pose.
Нода предназначена для создания текстового файла, содержающего значения для углов в сочленениях робота, соответствующих позициям (конфигурациям), которые должен пройти робот под управлением ноды collect_ident_data.py. Также нода позволяет провести псевдосимуляцию данного процесса (прохождения роботом через позиции (конфигурации), записанные в упомянутый файл).
-
joint_states (sensor_msgs/JointStates)
С данного топика нода получает информацию о текущих значениях углов в сочленениях робота или его urdf модели, "управляемой" нодой joint_state_publisher.
-
poses/joint_states (sensor_msgs/JointStates)
В данный топик во время упомянутой выше псевдосимуляции нода отправляет информацию об углах в сочленениях робота. Подразумевается, что этот топик указан в параметре source_list запущенной ноды joint_state_publisher.
-
add_pose (std_srvs/Trigger)
Обращение пользователя к данному сервису вызывает запись текущей позиции (конфигурации) робота в упомянутый выше текстовый файл.
-
show_poses (std_srvs/Empty)
Запрос, отправленный на данный сервис, начинает упомянутый выше процесс псевдосимуляции.
-
~file_with_poses (string, default: "poses.txt")
Имя выше упомянутого текстового файла.
Во-первых, данная нода "заставляет" манипулятор последовательно пройти через позиции (конфигурации), указанные в текстовом файле, имя которого передается ноде через один из ее параметров. Во-вторых, во время указанного движения робота она записывает значения углов, скоростей и моментов в его сочленениях в другой текстовый файл. В-третьих, по завершении описанных выше действий нода возвращает робота в его стартовую позицию (embryo position).
-
joint_states (sensor_msgs/JointStates)
С данного топика нода получает информацию о текущих значениях углов, скоростей и моментов в сочленениях робота с тем, чтобы записать их во второй из упомянутых выше файлов.
-
arm_1/arm_controller/position_command (brics_actuator/JointPositions)
В данный топик нода отправляет команды на переход робота в ту или иную позицию (конфигурацию).
-
make_movements (std_srvs/Empty)
Вызов данного сервиса начинает описанные выше процессы: движение робота через желаемые позиции и запись описывающей его состояние информации в текстовый файл.
-
~file_with_poses (string, default: "poses.txt")
Имя текстового файла, содержащего значения углов, соответствующих желаемым позициям (конфигурациям) робота.
-
~file_with_data (string, default: "data.txt")
Имя текстового файла, в который данная нода будет записывать значения для углов, скоростей и моментов в сочленениях робота во время его движения.
Нода служит для проверки правильности работы решателя ПЗК из libs.kinematics. При своей работе в каждый момент времени она считывает информацию о текущих значениях углов в сочленениях робота или его urdf модели, "управляемой" нодой joint_state_publisher, решает ПЗК с помощью обращения к libs.kinematics и на основании полученного решения размещает (с учетом ориентации) сисктему координат test_box в том месте, где, как это следует из результатов решения ПЗК, находится конец пальцев схвата.
-
joint_states (sensor_msgs/JointStates)
Из данного топика нода берет информацию о текущих значениях углов в сочленениях робота.
-
ground_link --> <одна из систем координат манипулятора >
Нода использует решение ПЗК для трансляции (broadcasting) преобразования между системами координат ground_link (соответствует Ox0y0z0) и test_box (соответствует Ox5y5z5). Следовательно, для корректного отображения результатов ее работы ROS должен знать, где находится система координат ground_link относительно манипулятора.
-
ground_link --> test_box
См. предыдущий пункт "Требуемая информация о tf преобразованиях".
Представляет собой одну из нод, служащих для проверки правильности работы решателя ОЗК из libs.kinematics. Данная нода при получении запроса в сервисе ik решает ОЗК с помощью обращения к libs.kinematics и использует полученное решение для формирования и последующей отправки сообщения в топик joint_states.
-
joint_states (sensor_msgs/JointStates)
В этот топик нода отправляет информацию о найденном решении ОЗК (если таковое, конечно, было получено).
-
В качестве реакции на вызов данного сервиса нода пытается решить ОЗК относительно полученных при запросе позиции и ориентации. Об успехе или провале поиска решения нода отчитывается в ответном сообщении запроса.
-
ground_link ) --> < одна из систем координат манипулятора >
Полученные при запросе к сервису ik позицию и ориентацию для большего удобства отладки нода использует в том числе и для трансляции (broadcasting) преобразования между системами координат ground_link (соответствует Ox0y0z0) и test_box (соответствует Ox5y5z5).
-
ground_link --> test_box
См. предыдущий пункт "Требуемая информация о tf преобразованиях".
Представляет собой одну из нод, служащих для проверки правильности работы решателя ОЗК из libs.kinematics. Данная нода принимает при собственном запуске 6 аргументов командной строки: три координаты и углы крена, тангажа и рыскания - и использует их для отправки запроса в сервис ik. Характер полученного от последнего ответа нода описывает коротким текстовым сообщением, выводимым в консоль.
-
Нода вызывает этот сервис сразу после собственного запуска. В качестве данных для сообщения запроса она использует значения, переданные ей в качестве аргументов командной строки.
Публикует простую траекторию движения манипулятора в декартовом пространстве - отрезок прямой, по которому схват манипулятора (точнее система координат 0x5y5z5) должен пройти с постоянной скоростью.
-
decart_trajectory (youbot_arm_control/DecartTrajectory)
В данный топик нода во все время своей работы публикует описанную выше траекторию.
-
ground_link --> < одна из систем координат манипулятора >
В качестве отсчетной системы координат в сообщениях, отправляемых в топик decart_trajectory, нода использует систему координат ground_link (соответствует 0x0y0z0). Следовательно, может быть необходимо указать, как последняя расположена относительно систем координат мнипулятора.
Нода, осуществляющая перевод желаемых траекторий манипулятора из декартового пространства в конфигурационное.
Для расчета скоростей по значениям углов и ускорений по значениям скоростей используются первые конечные разности.
-
decart_trajectory (youbot_arm_control/DecartTrajectory)
Через данный топик нода получает траекторию движения схвата манипулятора в виде набора последовательных поз (позиция + ориентация), которые должен пройти схват манипулятора (точнее система координат 0x5y5z5), и соответствующих им моментов времени (первой позе сооветствует нулевое время).
-
joint_trajectory (trajectory_msgs/JointTrajectory)
В этот топик нода публикует результат перевода траектории из топика decart_trajectory в соответствующей ей набор последовательных значений для углов в сочленениях робота, их скоростей и ускорений, а также соответствующих моментов времени.
-
translate_trajectory (std_srvs/Trigger)
В результате отправки запроса к данной ноде через этот сервис она предпринимает попытку осуществить перевод траектории из декартового пространства, которая доступна в топике decart_trajectory, в траекторию в конфигурационном пространстве и опубликовать результат в топик joint_trajectory.
-
~min_q (list of doubles, default: [0.1, 0.1, -5.08, 0.1, 0.1])
Минимальные значения для углов в сочленениях робота. В описании траектории в конфигурационном пространстве не должно быть "точек", значения углов которых будут меньше, чем представленные в min_q.
-
~max_q (list of doubles, default: [5.8, 2.6, -0.1, 3.48, 5.75])
Максимальные значения для углов в сочленениях робота. В описании траектории в конфигурационном пространстве не должно быть "точек", значения углов которых будут больше, чем представленные в max_q.
-
~file_with_trajectory_name (string, default: "file_with_trajectory_name.txt")
Имя файла, в который будет сохраняться самая последняя переведенная в конфигурационное пространство траектория. Каждая из "точек" последней записывается в файл в виде отдельной строки имеющей следующий формат: "углы скорости ускорения время".
Нода публикует сообщения, которые могут быть использованы в rviz для визуализации траектории, описанной сообщениями типа youbot_arm_control/DecartTrajectory.
-
decart_trajectory (youbot_arm_control/DecartTrajectory)
С этого топика нода получает информацию о траектории, для которой необходимо создать визуализационные сообщения.
-
trajectory_polygon (geometry_msgs/PolygonStamped)
В данный топик нода публикует пространственную ломаную, проходящую через точки, составляющие траекторию, публикуемую в топик decart_trajectory.
-
trajectory_poses (geometry_msgs/PoseArray)
В данный топик нода публикует массив поз, составляющих траекторию, публикуемую в топик decart_trajectory.
Нода обеспечивает идеализированную симуляцию (визуализацию) процесса отработки роботом траектории, публикуемой в топик joint_trajectory.
-
joint_trajectory (trajectory_msgs/JointTrajectory)
Процесс отработки роботом траектории, публикуемой в данный топик, нода и визуализирует.
-
poses/joint_states (sensor_msgs/JointStates)
В данный топик во время упомянутой выше симуляции нода отправляет информацию об углах в сочленениях робота. Подразумевается, что этот топик указан в параметре source_list запущенной ноды joint_state_publisher.
-
show_trajectory (std_srvs/Trigger)
После отправки запроса на данный сервис нода начинает описанный выше процесс симуляции.