> For the complete documentation index, see [llms.txt](https://voltbro.gitbook.io/robot-sobaka-mors/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://voltbro.gitbook.io/robot-sobaka-mors/ustroistvo-robota/ros-servisy/robot_action.md).

# robot\_action

Сервис используется для вызова скриптов действий: встать, лечь, дать лапу, кувырок, помахать лапой. Сервер работает в ноде [locomotion\_controller](/robot-sobaka-mors/ustroistvo-robota/ros-pakety/mors_base/locomotion_controller.md). Файл с разметкой сообщения сервиса [QuadrupedCmd](https://github.com/voltdog/mors_base/blob/main/mors/srv/QuadrupedCmd.srv) находится в пакете [mors](/robot-sobaka-mors/ustroistvo-robota/ros-pakety/mors_base/mors.md). Если вы хотите вызывать сервис со стороннего компьютера, то вам нужно скачать этот пакет  c [Github](https://github.com/voltdog/mors_base/tree/main/mors) в свое рабочее пространство ROS и затем произвести компиляцию.&#x20;

Файл сервиса 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"
```

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