如何使用node-mavlink从NodeJS将参数写入ArduPilot(APM)?
例如更改地理围栏启用?

最佳答案

您应该在此处阅读有关mavlink参数协议的文档:http://qgroundcontrol.org/mavlink/parameter_protocol

基本思想是,您发送PARAM_SET消息以设置参数值,然后等待具有刚刚设置的值的PARAM_VALUE消息形式的ACK。



PARAM_SETPARAM_VALUE消息的文档位于mavlink定义XML文件中:https://github.com/omcaree/node-mavlink/blob/c30f8a63ca6a1ebc1669fefcd07bb3780540e41b/src/mavlink/message_definitions/v1.0/common.xml#L966

这是创建和发送PARAM_SET消息以启用地理围栏的(未经测试的)示例。

我检查了ArduCopter/APM:Copter parameter documentation以了解所需的参数称为FENCE_ENABLE,并且1的值表示已启用该参数。我检查了mavlink message definition for the MAV_PARAM_TYPE enum来了解param_type参数的枚举值以指定UINT_8(我对布尔型参数类型的最佳猜测)。

myMAV.createMessage(
  "PARAM_SET",
  {
    'target_system': 1,
    'target_component': 1,
    'param_id': 'FENCE_ENABLE',
    'param_value': 1.0,
    'param_type': 1
  },
  function(message) {
    serialport.write(message.buffer);
  });


(有关如何加载和初始化库的信息,请参见"Initialization" section of the node-mavlink documentation。)

我尚未编写从无人机接收ACK的代码,但"Parsing Data" section of the documentation将指导您如何执行此操作。

09-25 11:51