servo_cmd_ros2lcm

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

ROS API

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

Параметры

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

  • frequency (по умолчанию: 500) - частота работы модуля

  • ros_joint_cmd_topic (по умолчанию: "joint_group_position_controller/command") - название ROS-топика для передачи желаемых значений на приводы

  • lcm_joint_cmd_topic (по умолчанию: "SERVO_CMD") - название LCM-канала, по которому передаются команды на приводы

  • joint_order (по умолчанию: [3, 5, 4, 9, 11, 10, 0, 2, 1, 6, 8, 7]) - порядок нумерации приводов. Если в вашем ROS-пакете, управляющем роботом, порядок отличается от стандартного, то проще всего изменить его здесь, не изменяя ваш модуль управления.

  • joint_directions (по умолчанию: [ 1, -1, -1, 1, 1, 1, -1, -1, -1, -1, 1, 1]) - направления движения приводов. 1 - против часовой стрелки, -1 - по часовой стрелке. Порядок приводов является стандартным для робота. Если в вашем ROS-пакете, управляющем роботом, направления от стандартного принятого в роботе, то проще всего изменить его здесь, не изменяя ваш модуль управления.

Входящие топики

LCM API

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

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

    float position[12]; // угловое положение [рад]
    float velocity[12]; // угловая скорость [рад/сек]
    float torque[12]; // момент [Н м]
    float kp[12]; // пропорциональный коэффициент
    float kd[12]; // дифференциальный коэффициент
}

Last updated