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