LCM-каналы

Для более быстрого обмена данными контроллер робота использует протокол LCM для межпроцессного взаимодействия. Обмен по этому протоколу происходит исключительно с аппаратной частью робота: приводами, энкодерами и IMU. В системе имеется три LCM-канала. Рассмотрим каждый из них.

  • IMU_DATA: канал для получения данных с IMU робота. Формат сообщения:

struct imu_lcm_data
{
    float orientation_quaternion[4];

    float orientation_euler[3];
    float orientation_covariance[9];

    float angular_velocity[3];
    float angular_velocity_covariance[9];

    float linear_acceleration[3];
    float linear_acceleration_covariance[9];

    float magnetic_field[3];
    float magnetic_field_covariance[9];

    float temperature;
    float temperature_variance;
}

  • SERVO_CMD: предназначен для отправки задающих параметров сервоприводов. Формат сообщения имеет следующий вид:

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

    float position[12];  // угловое положение [рад]
    float velocity[12];  // угловая скорость [рад/сек]
    float torque[12];  // момент [Н м]
    float kp[12];  // пропорциональный коэффициент
    float kd[12];  // дифференциальный коэффициент
}
  • SERVO_STATE: предназначен для получения состояния сервоприводов. Формат сообщения имеет следующий вид:

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

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

Last updated