更改 Mavlink 消息速率 ArduPilotMega
Changing Mavlink Message Rate ArduPilotMega
我正在做一个使用Mavlink协议(在c ++中)与ArduPilotMega(2.6)通信的项目。
例如,我能够阅读诸如态度之类的消息。当前消息速率(适用于所有消息)为 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_system
,target_component
和sysid
,compid
之间的区别。我为每个值尝试了几个值,但没有任何效果。
是否有任何 ACK 能够告诉我它是否得到了命令?
我想你错过了start_stop字段。 下面的示例正在工作。
final msg_request_data_stream msg = new msg_request_data_stream ();
msg.req_message_rate = rate;
msg.req_stream_id = (short) streamId;
msg.target_component = (short)compID;
msg.target_system = (short)sysID;
/*
GCS_COMMON.cpp contains code that sends when value =1
and stop when value = 0
that is it.
*/
if (rate > 0) {
msg.start_stop = 1;
} else {
msg.start_stop = 0;
}
来自 Robotis Stack Exchange 答案,
要更改消息速率,最简单的方法是使用任务规划器更改 SR_* 参数值。最大速率为 10Hz。
例如,为了将 ATTITUDE 消息速率更改为 10Hz,我只需要将 SR_EXTRA1 参数更改为 10。
有关哪个参数更改每条消息的更多信息,请参阅 ArduCopter 固件中的GCS_Mavlink.cpp文件。
相关文章:
- 使用专用显卡进行 OpenGL 渲染时帧速率较低
- 在打开多个其他窗口时使用全屏窗口时帧速率非常低
- libcurl :显示正在运行的上传和下载速率
- 如何在IQualProp::get_AvgFrameRate中重置帧速率?
- 为什么当通过 TCP 发送的消息速率增加时,请求-响应消息对的延迟会降低?
- 同步两个具有不同帧速率的传感器
- 如何在不同的线程中保持一定的帧速率
- 根据帧速率缩放/缩小数字
- 将Kinect v2帧速率(rgb、深度、骨架)设置为每秒25帧
- 助推.野兽速率限制
- 直接显示返回错误的帧速率 FPS
- 在高数据包速率下最大限度地减少丢弃的 UDP 数据包 (Windows 10)
- SDL 帧速率上限实施
- 以高数据速率发送图像数据超过提升::asio::udp?
- 我们应该认为评估特征检测,描述和匹配的主要速率和值是多少
- 在 OpenGL 中,在保持良好帧速率的同时,VBO 中有多少个顶点的好目标是什么
- 对"保存::速率"的未定义引用
- 视频流控制帧速率x264
- 使用C (Linux)更改BlueFox3相机的流帧速率
- 更改 Mavlink 消息速率 ArduPilotMega