> 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/primery.md).

# Примеры

Для простоты понимания, как взаимодействовать с роботом через ROS и LCM, мы сделали ряд примеров. Если вы хотите делать собственно ПО для робота, настоятельно рекомендуем сначала изучить эти примеры. В файлах примеров имеются комментарии. Зная общие принципы Python и ROS, вы без труда сможете в них разобраться. Запускать примеры можно как в [симуляторе](/robot-sobaka-mors/simulyaciya/opisanie-imitacionnoi-modeli.md), так и на реальном роботе.

Все примеры, касающиеся ROS, лучше всего запускать с вашего компьютера, который подключен к роботу по сети. Чтобы подключиться, следуйте инструкциям в разделах [Подключение к роботу по сети](/robot-sobaka-mors/nastroika-i-obsluzhivanie/podklyuchenie-k-robotu-po-seti.md) и [Подключение к ROS на роботе](/robot-sobaka-mors/nastroika-i-obsluzhivanie/podklyuchenie-k-ros-na-robote.md).

Пример, касающийся LCM (demo\_lcm.py), запускайте на бортовом компьютере робота.

{% hint style="info" %}
Скачать примеры  можно по [ссылке](https://github.com/voltdog/mors_demo).
{% endhint %}

Ниже приведен общий принцип работы с примерами:

1. Включите робота и настройте подключение по [сети](/robot-sobaka-mors/nastroika-i-obsluzhivanie/podklyuchenie-k-robotu-po-seti.md) и [ROS](/robot-sobaka-mors/nastroika-i-obsluzhivanie/podklyuchenie-k-ros-na-robote.md)
2. Скачайте пакет mors\_demo в своё рабочее пространство ROS

```
cd <ROS-workspace>/src
git clone https://github.com/voltdog/mors_demo.git
```

3. Произведите компиляцию

```
cd <ROS-workspace>
catkin_make
```

4. Чтобы не уменьшить риск поломки робота, в первый раз запускайте каждый пример, установив робота на стойку.&#x20;
5. Запустите любой пример из папке scripts

```
rosrun mors_demo demo_body.py
```

{% hint style="warning" %}
Если во время выполнения примеров вы наблюдаете рывки, то обратитесь к разделу [Устранение неполадок](/robot-sobaka-mors/nastroika-i-obsluzhivanie/ustranenie-nepoladok.md#esli-robot-dergaetsya-vo-vremya-vypolneniya-primerov).
{% endhint %}

## Описание примеров

### demo\_actions

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

{% hint style="warning" %}
Перед запуском убедитесь, что слева от робота есть 1.5 м свободного пространства!
{% endhint %}

Запуск скрипта:

```
rosrun mors_demo demo_actions.py
```

### demo\_body

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

Запуск скрипта:

```
rosrun mors_demo demo_body.py
```

### demo\_joints

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

{% hint style="warning" %}
Обязательно установите робота на стойку перед запуском этого примера! Будьте аккуратны: робот достаточно сильно размахивает ногами.
{% endhint %}

Запуск скрипта:

<pre><code><strong>rosrun mors_demo demo_joints.py
</strong></code></pre>

### demo\_lcm

Этот пример делает то же самое, что и demo\_joints.py, но только взаимедействие в приводами происходит напрямую через LCM. Во время работы скрипта производится вывод в консоль текущих показаний датчиков угла поворта сочленений.

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

1. Подключитесь к роботу через SSH или RDP.
2. Перейдите в ros-воркспейс и скачайте пакет mors\_demo:

```
cd mors_ws/src
git clone https://github.com/voltdog/mors_demo.git
```

3. Произведите сборку пакета:

```
cd ~/mors_ws
catkin_make --only-pkg-with-deps mors_demo
```

4. Завершите работу [ubuntu-сервиса](/robot-sobaka-mors/nastroika-i-obsluzhivanie/ubuntu-servis.md) mors.service

```
sudo systemctl stop mors.service
```

5. Запустите скрипт инициализации приводов

```
cd ~
./start_offsets.sh
```

Если вы видите постоянно бегущие данные и они не прекращаются, то не обращайте на это внимание.

6. В новом терминале запустите roscore:

```
roscore
```

7. Еще в одном терминале запустите пример:

```
rosrun mors_demo demo_lcm.py
```

Если потом вы решить запустить другие примеры или включить управление роботом с джойстика, то  это можно сделать тремя способами:

* перезагрузить робот
* запустить launch-файл управляющего ПО:

```
roslaunch mors bringup.launch
```

* запустить ubuntu-сервис

```
sudo systemctl start mors.service
```

### demo\_leds

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

Запуск скрипта:

<pre><code><strong>rosrun mors_demo demo_leds.py
</strong></code></pre>

### demo\_legs

Файл содержит пример кода управления стопами шагающего робота МОРС. Во время демонстрационного примера робот двигает стопами по окружности. Каждая нога отрабатывает движение в своей плоскости.

{% hint style="warning" %}
Перед запуском примера, поставьте робота на стойку!
{% endhint %}

Запуск скрипта:

<pre><code><strong>rosrun mors_demo demo_legs.py
</strong></code></pre>

### demo\_sensors

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

Список выводимых данных:

* углы поворота сочленений
* кватернион углового положения
* линейные ускорения
* температура
* входное напряжение
* потребляемый ток
* состояние кнопки на корпусе

Запуск скрипта:

<pre><code><strong>rosrun mors_demo demo_sensors.py
</strong></code></pre>

### demo\_walk

Файл содержит пример управления ходьбой робота (вдоль осей XY и вокруг оси Z).

{% hint style="warning" %}
Перед запуском примера, убедитесь, что сперереди у робота есть минимум 3 метра свободного пространства!
{% endhint %}

Запуск скрипта:

```
rosrun mors_demo demo_walk.py
```
