我正在尝试通过3DR无线电遥测将Mavlink (安装在RPi上)与QGroundControl连接,以便从RPi传输遥测数据,而不依赖于Ardupilot/Px4飞行控制器。我想使用mavlink的消息格式来实现GPS或位置等数据的传输,而不依赖于ardupilot/PX4。
到目前为止,我已经从mavlink git中获取了示例代码,并按照说明构建了代码。我启动了QGroundControl,并且能够从QGC接收系统ID和组件ID。我修改了代码,将心跳从RPI-mavlink传输到QGroundControl。
mavlink_msg_heartbeat_pack(system_id, 200, &msg, MAV_TYPE_HELICOPTER, MAV_AUTOPILOT_GENERIC, MAV_MODE_GUIDED_ARMED, 0, MAV_STATE_ACTIVE);
int len_hb = write_message(msg);在构建并执行这段代码之后,我希望QGroundControl能够连接/显示收到的消息,但在QGroundControl上却什么都没有。
我需要了解我所做的是不是正确的方式,或者是否有预先定义的方法来建立这种交流。请帮助我在没有ardupilot/Px4的情况下完成消息传输的文档(如果有)。如果有人能在这个问题上指导我,那将是非常有帮助的。
谢谢
发布于 2020-12-01 21:06:31
如果使用RPi,则不需要3DR无线电遥测。您可以通过WiFi或远程终端设备连接RPi,以发送/接收Mavlink数据。您需要:
,您可以在地面站接收mavlink数据,您可以使用pymavlink发送mavlink消息。有一个sample code
发布于 2021-06-18 23:39:31
如果我没理解错的话,那么你要做的就是用树莓派开发你自己的飞行控制器。并且,您希望它在QGC中被检测为车辆。
您从mavlink存储库引用的示例代码在地面站上用于接收来自飞行控制器的消息,并向其发送命令消息。但是,您正在尝试从飞行控制员向地面站发送消息。
您首先要做的是保持以1 1Hz的频率发送心跳消息,如mavlink文档页面上的heartbeat microservice中所述。我猜,如果QGroundControl连续5秒接收到来自车辆的心跳信号,它就会检测到车辆。在此之后,您还必须以1 1Hz的频率发送心跳,否则即使您正在向QGC发送其他mavlink消息,QGC也会显示通信丢失。
最重要的是,有许多mavlink消息,可以对不同的飞行控制器有不同的解释。因此,在某些情况下,你要么必须在一定程度上将你的代码与现有的飞行控制器相匹配,要么你必须修改QGC以适应你实现飞行控制器的方式。
https://stackoverflow.com/questions/64981118
复制相似问题