更改Mavlink消息速率ArduPilotMega

时间:2016-05-23 06:26:21

标签: c++ robotics dronekit mavlink

我正在开发一个使用Mavlink协议(在c ++中)与ArduPilotMega(2.6)进行通信的项目。
我能够阅读诸如ATTITUDE之类的消息。当前的消息速率(对于所有消息)是2Hz,我想提高这个速率 我发现我应该使用MAV_CMD_SET_MESSAGE_INTERVAL设置MESSAGE_INTERVAL以便更改它。

所以我的问题是:
如何在c ++中使用mavlink发送此命令消息?

我尝试使用下面的代码进行操作,但它不起作用。我想我必须使用上面提到的命令,但我不知道如何。

mavlink_message_t command;
mavlink_message_interval_t interval;

interval.interval_us = 100000;
interval.message_id = 30;

mavlink_msg_message_interval_encode(255, 200, &command, &interval);
p_sensorsPort->write_message(command);

更新:我也尝试过以下代码,也许我没有给它正确的系统ID或组件ID。

mavlink_message_t command;
mavlink_command_long_t interval;

interval.param1 = MAVLINK_MSG_ID_ATTITUDE;
interval.param2 = 100000;
interval.command = MAV_CMD_SET_MESSAGE_INTERVAL;
interval.target_system = 0;
interval.target_component = 0;

mavlink_msg_command_long_encode(255, 0, &command, &interval);
p_sensorsPort->write_message(command);

也许我错过了target_systemtarget_componentsysidcompid之间的区别。我为每一个尝试了几个值,但没有任何效果 有没有能告诉我它是否能得到命令的ACK?

2 个答案:

答案 0 :(得分:0)

来自Robotis Stack Exchange回答,

要更改消息速率,最简单的方法是使用Mission Planner更改 SR _ * 参数值。最大速率为10Hz 例如,为了将ATTITUDE消息速率更改为10Hz,我只需将 SR_EXTRA1 参数更改为10.

有关哪个参数更改每条消息的详细信息,请参阅ArduCopter固件中的GCS_Mavlink.cpp文件。

答案 1 :(得分:0)

我猜你错过了start_stop字段。以下样本正在运行。

[nodemon] starting `node server.js`
listening to http://127.0.0.1:8000
_http_outgoing.js:456
    throw new TypeError('First argument must be a string or Buffer');
    ^

TypeError: First argument must be a string or Buffer
    at ServerResponse.OutgoingMessage.write (_http_outgoing.js:456:11)
    at Object.exports.get (C:\HorquetaNet\controllers\home.js:15:7)
    at Object.exports.get (C:\HorquetaNet\router.js:18:37)
    at Server.<anonymous> (C:\HorquetaNet\server.js:5:23)
    at emitTwo (events.js:106:13)
    at Server.emit (events.js:191:7)
    at HTTPParser.parserOnIncoming [as onIncoming] (_http_server.js:546:12)
    at HTTPParser.parserOnHeadersComplete (_http_common.js:99:23)
[nodemon] app crashed - waiting for file changes before starting...