# servo\_state\_lcm2ros

Модуль получает данные о состоянии электроприводов робота (угол, скорость, момент) по LCM-каналу и передает их в ROS.

## ROS API

ROS API состоит из config-файла, вызова сервисов,  входящих и исходящих топиков.

### Параметры

Файл параметров располагается в папке config

* frequency (по умолчанию: 40) - частота работы модуля
* ros\_joint\_state\_topic (по умолчанию: "joint\_states") - название ROS-топика для передачи состояния приводов&#x20;
* lcm\_joint\_state\_topic (по умолчанию: "SERVO\_STATE") - название LCM-канала, по которому передается состояние приводов
* joint\_order (по умолчанию: \[3, 5, 4, 9, 11, 10, 0, 2, 1, 6, 8, 7]) - порядок нумерации приводов. Если в вашем ROS-пакете, управляющем роботом, порядок отличается от [стандартного](https://voltbro.gitbook.io/robot-sobaka-mors/oboznacheniya), то проще всего изменить его здесь, не изменяя ваш модуль управления.
* joint\_directions (по умолчанию: \[ 1, -1, -1, 1, 1, 1, -1, -1, -1, -1, 1, 1]) - направления движения приводов. 1 - против часовой стрелки, -1 - по часовой стрелке. Порядок приводов является [стандартным](https://voltbro.gitbook.io/robot-sobaka-mors/oboznacheniya) для робота. Если в вашем ROS-пакете, управляющем роботом, направления отличаются от стандартного, то проще всего изменить его здесь, не изменяя ваш модуль управления.&#x20;

### Исходящие топики

* joint\_states ([sensor\_msgs/JointState](https://docs.ros.org/en/melodic/api/sensor_msgs/html/msg/JointState.html)) - состояние всех электроприводов робота (угол, скорость момент)

## LCM API

### Формат LCM-сообщения:

```
struct servo_state_msg
{
    float timestamp; // временная метка

    float position[12]; // угловое положение [рад]
    float velocity[12]; // угловая скорость [рад/сек]
    float torque[12]; // момент [Н м]
}
```
