# Описание имитационной модели

<figure><img src="https://2841855051-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWMZrcMSoDlC4YPw6l8xM%2Fuploads%2F55bzCwEd4jdyeVjhfBHz%2FScreenshot%20from%202024-09-23%2015-49-38.png?alt=media&#x26;token=acb3c548-32d2-4f1e-ac1c-dba946626226" alt=""><figcaption></figcaption></figure>

В комплект поставки ПО робота входит имитационная модель, сделанная в физическом симуляторе PyBullet. Её удобно использовать для того, чтобы в первом приближении протестировать ваш собственный алгоритм. Модель сделана в виде ROS-пакета.

{% hint style="info" %}
Как установить пакет симуляции робота и все необходимые библиотеки, смотрите в разделе [Установка ПО](https://voltbro.gitbook.io/robot-sobaka-mors/nastroika-i-obsluzhivanie/ustanovka-po).
{% endhint %}

Модель робота выполнена в виде [xacro-файла](https://github.com/voltdog/mors_pc/blob/main/mors_sim/urdf/mors.xacro). В нём описаны кинематическая схема робота, динамические характеристики звеньев и звенья, имитирующие периферийные устройства (imu, lidar, камера, голова). Если вы хотите убрать/добавить какое либо устройство, например голову, то закомментируйте/раскомментируйте соответствующий блок в файле. После этого обязательно нужно сконвертировать xacro-файл в urdf. Для этого введите в терминале:

```
cd ~/mors_ws/src/mors_pc/mors_sim/urdf
rosrun xacro xacro mors.xacro > mors.urdf
```

Взаимодействие с моделью идет по такому же протоколу, что и с аппаратной платформой. Она использует те же самые топики, сервисы и lcm-каналы. Таким образом, если какая-то определенная нода работает на модели, то она с большой вероятностью заработает на роботе. Проблемы могут встретиться только на уровне динамики робота (динамические характеристики, такие как масса, инерция и ЦМ звеньев слегка отличаются) и задержек при передаче данных. В большинстве случаев это не критично, кроме обучения с подкреплением (RL). Если вы захотите использовать RL для контроллера управления ходьбой, то вам придется самостоятельно доработать существующую модель.

## Запуск модели

Для работы симулятора, необходимо, чтобы в файле **.bashrc** не было информации об удаленном подключении к ROS-мастеру. Откройте файл **.bashrc** командой `nano ~/.bashrc` и проверьте наличие строк:

```
export ROS_MASTER_URI=http://10.42.0.1:11311/
export ROS_HOSTNAME=<IP-адрес компьютера>
```

Если их нет, то всё в порядке. Если строчки есть, то просто закомментируйте их или в качестве ROS\_MASTER\_URI поставьте IP-адрес вашего компьютера.

После изменения файла \~/.bashrc перезапустите терминал.

Запустить модель можно четырьмя способами:

* Через launch-файл пакета mors:

```
roslaunch mors bringup_sim.launch
```

При вводе команды запустит симуляцию в pybullet, подгружает config-файл из пакета mors и загрузит все модули для управления ходьбой. Вы можете использовать различные аргументы для изменения параметров загрузки пакетов. Подробнее об этом в разделе Параметры файла bringup\_sim.launch.

* Через launch-файл пакета mors\_sim:

```
roslaunch mors_sim mors_pybullet.launch
```

Команда запускает только симуляцию в pybullet и подтягивает config-файл из пакета mors\_sim

* Запустить напрямую через rosrun:

```
rosrun mors_sim mors_pybullet.py
```

Команда запустит только симуляцию. Загрузится та конфигурация, которая стоит по умолчанию.

* через launch-файл, который откроет 3d-модель робота в Rviz

```
roslaunch mors_sim mors_rviz.launch
```

По этой команде откроется только rviz. Такой способ запуска удобен, когда вы работаете только с xacro-файлом (например, добавляете новое устройство).

<figure><img src="https://2841855051-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWMZrcMSoDlC4YPw6l8xM%2Fuploads%2Flf3ltBJNRcG69DdcggfM%2FScreenshot%20from%202024-09-23%2015-51-59.png?alt=media&#x26;token=e80c0601-b34c-4d90-a59b-847c087a62d5" alt=""><figcaption></figcaption></figure>
