# Инструкция по добавлению нового робота в фреймворк Robossembler ROS 2 Прежде всего необходимо скачать пакет робота, содержащий файлы `xacro` или `urdf`, а также файлы геометрии робота в формате `.stl`, `.dae`, `.obj` и других. Перед началом работы важно ознакомиться с основными аспектами формата [xacro](https://github.com/ros/xacro/wiki). Этот формат позволяет переиспользовать существующие фрагменты URDF-описания робота, что упрощает создание и модификацию описания. ### Шаги по добавлению нового робота: 1. **Установка пакета робота** После установки пакета робота создайте файл `xacro_args.yaml` в директории `{description_package}/config/`. В этом файле необходимо указать аргументы для преобразования xacro-файла в URDF. 2. **Настройка запуска** Отредактируйте файл [`rbs_bringup.launch.py`](../../rbs_bringup/launch/rbs_bringup.launch.py), указав параметры для запуска робота. Пример стандартной реализации: ```python main_script = IncludeLaunchDescription( PythonLaunchDescriptionSource( [ PathJoinSubstitution( [FindPackageShare("rbs_runtime"), "launch", "runtime.launch.py"] ) ] ), launch_arguments={ "with_gripper": "true", "gripper_name": "rbs_gripper", "robot_type": "rbs_arm", "description_package": "rbs_arm", "description_file": "rbs_arm_modular.xacro", "robot_name": "rbs_arm", "use_moveit": "false", "moveit_config_package": "rbs_arm", "moveit_config_file": "rbs_arm.srdf.xacro", "use_sim_time": "true", "hardware": "gazebo", "use_controllers": "true", "scene_config_file": "", "base_link_name": "base_link", "ee_link_name": "gripper_grasp_point", "control_space": "task", "control_strategy": "position", }.items(), ) ``` Здесь выполняется запуск другого launch-файла с указанными аргументами. Ниже приводится описание каждого аргумента. ### Описание параметров: - **`with_gripper`** Указывает, есть ли на роботе захватное устройство (гриппер). Если значение `true`, будет настроен и запущен `gripper_controller`. - **`gripper_name`** Используется как ключевое слово для указания линков и джоинтов, относящихся к грипперу. Также применяется в xacro-аргументах. - **`robot_type`** Обозначает группу роботов одного типа. Например, все роботы с разными именами, но одинаковой конструкцией. - **`description_package`** Пакет, содержащий описание URDF робота. Обязательный параметр. Используется для определения пути к файлу описания и конфигурации контроллеров. - **`description_file`** Имя файла описания, который должен находиться в `{description_package}/urdf/`. - **`robot_name`** Уникальное имя робота, которое позволяет отличить его от других в сцене. - **`use_moveit`** Указывает, нужно ли использовать [MoveIt 2](https://moveit.picknik.ai/humble/index.html). Для базовых перемещений MoveIt 2 не обязателен, но для работы с препятствиями рекомендуется его включить. - **`moveit_config_package`** Имя пакета конфигурации MoveIt 2, который генерируется на основе `{description_package}`. Обязательный параметр, если используется MoveIt 2. - **`moveit_config_file`** Файл запуска MoveIt 2, находящийся в `{moveit_config_package}/launch/`. - **`use_sim_time`** Обязательный параметр при работе в симуляции. Обеспечивает синхронизацию времени с симулятором. - **`hardware`** Указывает интерфейс для управления роботом. Например, `gazebo`. Используется в основном в xacro-файлах. - **`use_controllers`** Указывает, нужно ли использовать стандартные контроллеры. Если значение `false`, робот не сможет двигаться. Влияет на запуск файла [control.launch.py](../../rbs_bringup/launch/control.launch.py). - **`scene_config_file`** Файл конфигурации сцены в формате YAML. Пример можно найти [здесь](../../env_manager/rbs_runtime/config/default-scene-config.yaml). Обратите внимание на соответствие количества степеней свободы робота. - **`base_link_name`** Имя базового линка, от которого начинается робот. Важно для настройки навыков. Рекомендуется свериться с URDF. - **`ee_link_name`** Имя конечного линка (энд-эффектора), где заканчивается робот. Этот параметр также настраивается на основе URDF. - **`control_space`** Указывает, в каком пространстве робот будет управляться. Возможные значения: - `task` — управление в пространстве задач (например, с использованием позиций и ориентации в рабочем пространстве). - `joint` — управление в пространстве суставов (например, с использованием угловых значений для каждого сустава робота). Значение по умолчанию: `task`. - **`control_strategy`** Указывает стратегию управления роботом. Возможные значения: - `position` — управление положением, когда задаются желаемые позиции для суставов или рабочей точки. - `velocity` — управление скоростью, когда задаются желаемые скорости движения. - `effort` — управление усилием, когда задаются моменты или силы, прикладываемые к суставам. Значение по умолчанию: `position`.