如何使用mavlink从NodeJs发送数据到APM?

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

你应该在这里阅读mavlink参数协议的文档: http ://qgroundcontrol.org/mavlink/parameter_protocol

其基本思路是发送一个PARAM_SET消息来设置一个参数值,然后等待一个具有刚刚设置的值的PARAM_VALUE消息forms的ACK。

在这里输入图像说明

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

以下是创build和发送PARAM_SET消息以启用地理围栏的(未经testing的)示例。

我检查了ArduCopter / APM:Copter参数文档 ,了解到您所需的参数称为FENCE_ENABLE ,值为1表示已启用。 我检查了MAV_PARAM_TYPE枚举的mavlink消息定义,以了解param_type参数的枚举值,以指定UINT_8 (我最好猜测布尔参数的types)。

 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); }); 

(有关如何加载和初始化库的信息,请参阅node-mavlink文档的“初始化”部分 。

我没有编写代码来接收来自无人机的ACK,但文档的“分析数据”部分将指导您如何做到这一点。