Anonymous
Не могу отправить переопределения RC в Mavproxy
Сообщение
Anonymous » 31 янв 2025, 19:19
Я не могу управлять отправкой переопределения RC в Mavproxy < /p>
Код: Выделить всё
void MAVProxyHandler::SendRCOverride(uint16_t chan1, uint16_t chan2, uint16_t chan3, uint16_t chan4,
uint16_t chan5, uint16_t chan6, uint16_t chan7, uint16_t chan8) {
mavlink_message_t msg;
mavlink_rc_channels_override_t rc_override;
memset(&rc_override, 0, sizeof(rc_override));
rc_override.target_system = 1;
rc_override.target_component = 1;
rc_override.chan1_raw = chan1;
rc_override.chan2_raw = chan2;
rc_override.chan3_raw = chan3;
rc_override.chan4_raw = chan4;
rc_override.chan5_raw = chan5;
rc_override.chan6_raw = chan6;
rc_override.chan7_raw = chan7;
rc_override.chan8_raw = chan8;
mavlink_msg_rc_channels_override_encode(1, 200, &msg, &rc_override);
SendMAVLinkMessage(msg);
}
< /code>
Просто ничего не происходит. Но я ожидаю измененных значений структуры RC_Channels: < /p>
RC_CHANNELS {time_boot_ms : 18715335, chancount : 0, chan1_raw : 0, chan2_raw : 1500, chan3_raw : 0, chan4_raw : 1500, chan5_raw : 0, chan6_raw : 0, chan7_raw : 0, chan8_raw : 0, chan9_raw : 0, chan10_raw : 0, chan11_raw : 1500, chan12_raw : 1500, chan13_raw : 0, chan14_raw : 0, chan15_raw : 0, chan16_raw : 0, chan17_raw : 0, chan18_raw : 0, rssi : 255}
< /code>
Точно так же, как работает для моего сценария в Python: < /p>
channels[roll_channel] = set_roll
channels[pitch_channel] = set_pitch
channels[throttle_channel] = set_throttle
self.connection.mav.rc_channels_override_send(
self.connection.target_system,
self.connection.target_component,
**channels,
force_mavlink1=False
)
< /code>
Также я могу установить режим полета для самолета (поэтому я предполагаю, что связь Mavproxy работает нормально): < /p>
void MAVProxyHandler::SetFlightMode(uint32_t customMode) {
mavlink_message_t msg;
mavlink_command_long_t cmd;
memset(&cmd, 0, sizeof(cmd));
cmd.target_system = 1;
cmd.target_component = 1;
cmd.command = MAV_CMD_DO_SET_MODE;
cmd.confirmation = 0; // No confirmation required
cmd.param1 = MAV_MODE_FLAG_CUSTOM_MODE_ENABLED; // Enable custom mode
cmd.param2 = static_cast(customMode); // Set the custom mode
cmd.param3 = 0; // Unused parameters
cmd.param4 = 0;
cmd.param5 = 0;
cmd.param6 = 0;
cmd.param7 = 0;
mavlink_msg_command_long_encode(1, 200, &msg, &cmd);
SendMAVLinkMessage(msg);
}
Также я запросил DataStream для mavlink_msg_id_rc_channels :
Код: Выделить всё
void MAVProxyHandler::RequestDataStream(uint16_t message_id, uint32_t interval_us) {
mavlink_message_t msg;
mavlink_command_long_t cmd;
memset(&cmd, 0, sizeof(cmd));
cmd.target_system = 1;
cmd.target_component = 1;
cmd.command = MAV_CMD_SET_MESSAGE_INTERVAL;
cmd.param1 = message_id;
cmd.param2 = static_cast(interval_us);
cmd.param3 = 0;
cmd.param4 = 0;
cmd.param5 = 0;
cmd.param6 = 0;
cmd.param7 = 0;
mavlink_msg_command_long_encode(1, 200, &msg, &cmd);
SendMAVLinkMessage(msg);
}
Чего мне не хватает, чтобы включить переоценки каналов RC? > И я ожидаю, что rc_channels из штуковины Mavproxy's Stus.>
Подробнее здесь:
https://stackoverflow.com/questions/794 ... e-mavproxy
1738340362
Anonymous
Я не могу управлять отправкой переопределения RC в Mavproxy < /p> [code]void MAVProxyHandler::SendRCOverride(uint16_t chan1, uint16_t chan2, uint16_t chan3, uint16_t chan4, uint16_t chan5, uint16_t chan6, uint16_t chan7, uint16_t chan8) { mavlink_message_t msg; mavlink_rc_channels_override_t rc_override; memset(&rc_override, 0, sizeof(rc_override)); rc_override.target_system = 1; rc_override.target_component = 1; rc_override.chan1_raw = chan1; rc_override.chan2_raw = chan2; rc_override.chan3_raw = chan3; rc_override.chan4_raw = chan4; rc_override.chan5_raw = chan5; rc_override.chan6_raw = chan6; rc_override.chan7_raw = chan7; rc_override.chan8_raw = chan8; mavlink_msg_rc_channels_override_encode(1, 200, &msg, &rc_override); SendMAVLinkMessage(msg); } < /code> Просто ничего не происходит. Но я ожидаю измененных значений структуры RC_Channels: < /p> RC_CHANNELS {time_boot_ms : 18715335, chancount : 0, chan1_raw : 0, chan2_raw : 1500, chan3_raw : 0, chan4_raw : 1500, chan5_raw : 0, chan6_raw : 0, chan7_raw : 0, chan8_raw : 0, chan9_raw : 0, chan10_raw : 0, chan11_raw : 1500, chan12_raw : 1500, chan13_raw : 0, chan14_raw : 0, chan15_raw : 0, chan16_raw : 0, chan17_raw : 0, chan18_raw : 0, rssi : 255} < /code> Точно так же, как работает для моего сценария в Python: < /p> channels[roll_channel] = set_roll channels[pitch_channel] = set_pitch channels[throttle_channel] = set_throttle self.connection.mav.rc_channels_override_send( self.connection.target_system, self.connection.target_component, **channels, force_mavlink1=False ) < /code> Также я могу установить режим полета для самолета (поэтому я предполагаю, что связь Mavproxy работает нормально): < /p> void MAVProxyHandler::SetFlightMode(uint32_t customMode) { mavlink_message_t msg; mavlink_command_long_t cmd; memset(&cmd, 0, sizeof(cmd)); cmd.target_system = 1; cmd.target_component = 1; cmd.command = MAV_CMD_DO_SET_MODE; cmd.confirmation = 0; // No confirmation required cmd.param1 = MAV_MODE_FLAG_CUSTOM_MODE_ENABLED; // Enable custom mode cmd.param2 = static_cast(customMode); // Set the custom mode cmd.param3 = 0; // Unused parameters cmd.param4 = 0; cmd.param5 = 0; cmd.param6 = 0; cmd.param7 = 0; mavlink_msg_command_long_encode(1, 200, &msg, &cmd); SendMAVLinkMessage(msg); } [/code] Также я запросил DataStream для mavlink_msg_id_rc_channels : [code]void MAVProxyHandler::RequestDataStream(uint16_t message_id, uint32_t interval_us) { mavlink_message_t msg; mavlink_command_long_t cmd; memset(&cmd, 0, sizeof(cmd)); cmd.target_system = 1; cmd.target_component = 1; cmd.command = MAV_CMD_SET_MESSAGE_INTERVAL; cmd.param1 = message_id; cmd.param2 = static_cast(interval_us); cmd.param3 = 0; cmd.param4 = 0; cmd.param5 = 0; cmd.param6 = 0; cmd.param7 = 0; mavlink_msg_command_long_encode(1, 200, &msg, &cmd); SendMAVLinkMessage(msg); } [/code] Чего мне не хватает, чтобы включить переоценки каналов RC? > И я ожидаю, что rc_channels из штуковины Mavproxy's Stus.> Подробнее здесь: [url]https://stackoverflow.com/questions/79403361/cant-send-rc-overrides-to-the-mavproxy[/url]