Перейти к основному содержимому

ROS-сервисы

В этом разделе вы найдете информацию обо всех ROS-сервисах, существующих в системе робота МОРС.

robot_mode

Сервис используется для переключения между режимами робота: ходьба, управление корпусом, управление стопами ног по отдельности, управление сервоприводами. Сервер работает в ноде locomotion_controller. Файл с разметкой сообщения сервиса QuadrupedCmd находится в пакете mors. Если вы хотите вызывать сервис со стороннего компьютера, то вам нужно скачать этот пакет c Github в свое рабочее пространство ROS и затем произвести компиляцию.

Файл сервиса QuadrupedCmd.srv имеет следующие поля:

float32 cmd
---
int16 result
string description

cmd - запрос для переключения между режимами: 0 - ходьба, 1 - управление стопами, 2 - управление корпусом, 3 - управление сервоприводами.

result - ответ: 1 - если команда успешно получена и обработана, 0 - в случае ошибки.

description - описание ответа. В случае ошибки поле пустое, в случае успеха - сообщение "get the mode"

к сведению

Во время режима управления сервоприводами вы можете использовать сервисы для установки коэффициентов обратной связи системы управления приводом Kp и Kd.

Во всех остальных случаях, установка Kp и Kd производится через config-файл пакета locomotion_controller.

Пример вызова сервиса через CLI

rosservice call /robot_mode "cmd: 2.0"

При отправке это команды робот переключится в режим управления корпусом.

robot_action

Сервис используется для вызова скриптов действий: встать, лечь, дать лапу, кувырок, помахать лапой. Сервер работает в ноде locomotion_controller. Файл с разметкой сообщения сервиса QuadrupedCmd находится в пакете mors. Если вы хотите вызывать сервис со стороннего компьютера, то вам нужно скачать этот пакет c Github в свое рабочее пространство ROS и затем произвести компиляцию.

Файл сервиса QuadrupedCmd.srv имеет следующие поля:

float32 cmd
---
int16 result
string description

cmd - запрос для вызова действия: 1 - встать, 2 -лечь (подготовка к выключению), 3 - дать лапу, 4 - кувырок, 5 - помахать лапой, 6 - сидеть.

result - ответ: 1 - если команда успешно получена и обработана, 0 - в случае ошибки.

description - описание ответа. В случае ошибки поле пустое, в случае успеха - сообщение "get the action"

Описание действий

Встать

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

Лежать

Сервисное действие, необходимо для подготовки робота к выключению. При вызове действия робот ложится, поджимая под себя ноги, а затем складывает их на спине для более удобной переноски. После завершения действия, полностью снимается питание с сервоприводов. Действие можно вызвать только когда робот стоит.

Дать лапу

Равлекательное действие. При вызове, робот слегка отклоняет корпус назад, приподнимает правую лапу и потом вытягивает её вперед. Действие можно вызвать только когда робот стоит.

Кувырок

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

Помахать лапой

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

Сидеть

Робот садится на несколько секунд и потом встает в исходное положение

Пример вызова сервиса через CLI

rosservice call /robot_action "cmd: 3.0"

При отправке это команды робот выполнит команду "дать лапу".

stride_height

Сервис используется для установки высоты шага во время ходьбы. Сервер работает в ноде locomotion_controller. Файл с разметкой сообщения сервиса QuadrupedCmd находится в пакете mors. Если вы хотите вызывать сервис со стороннего компьютера, то вам нужно скачать этот пакет c Github в свое рабочее пространство ROS и затем произвести компиляцию.

Файл сервиса QuadrupedCmd.srv имеет следующие поля:

float32 cmd
---
int16 result
string description

cmd - высота шага в метрах

result - ответ: 1 - если команда успешно получена и обработана, 0 - в случае ошибки.

description - описание ответа. В случае ошибки поле пустое, в случае успеха - сообщение "get stride height"

Пример вызова сервиса через CLI

rosservice call /stride_height "cmd: 0.04"

При отправке это команды локомоторный контроллер установит высоту шага 4 см.

joints_kp

Сервис используется для установки пропорциональных коэффициентов Kp сервоприводов, когда robot_mode= 3, т.е. робот находится в режиме управления сервоприводами. Сервер работает в ноде locomotion_controller. Файл с разметкой сообщения сервиса JointsCmd находится в пакете mors. Если вы хотите вызывать сервис со стороннего компьютера, то вам нужно скачать этот пакет c Github в свое рабочее пространство ROS и затем произвести компиляцию.

Файл сервиса JointsCmd.srv имеет следующие поля:

float32[] cmd
---
int16 result
string description

cmd - массив из 12 значений Kp для каждого привода. Нумерация приводов идет согласно изображению в разделе Обозначения

result - ответ: 1 - если команда успешно получена и обработана, 0 - в случае ошибки.

description - описание ответа. В случае ошибки поле пустое, в случае успеха - сообщение "get kp"

Пример вызова сервиса через CLI

rosservice call /joints_kp "cmd: [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]"

При отправке это команды Kp привода бедра ноги R1 будет равно 0.5, Kp всех остальных приводов будет равно нулю.

joints_kd

Сервис используется для дифференциальных коэффициентов Kd сервоприводов, когда robot_mode= 3, т.е. робот находится в режиме управления сервоприводами. Сервер работает в ноде locomotion_controller. Файл с разметкой сообщения сервиса JointsCmd находится в пакете mors. Если вы хотите вызывать сервис со стороннего компьютера, то вам нужно скачать этот пакет c Github в свое рабочее пространство ROS и затем произвести компиляцию.

Файл сервиса JointsCmd.srv имеет следующие поля:

float32[] cmd
---
int16 result
string description

cmd - массив из 12 значений Kd для каждого привода. Нумерация приводов идет согласно изображению в разделе Обозначения

result - ответ: 1 - если команда успешно получена и обработана, 0 - в случае ошибки.

description - описание ответа. В случае ошибки поле пустое, в случае успеха - сообщение "get kd"

Пример вызова сервиса через CLI

rosservice call /joints_kd "cmd: [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]"

При отправке это команды Kd привода бедра ноги R1 будет равно 0.5, Kd всех остальных приводов будет равно нулю.