一、
1.下载安装一个mavlink文件或者在原文件上修改
安装步骤(包含mavlink generator)。可参照文章。
PX4自定义Mavlink消息(一)px4发送_Sense97的博客-CSDN博客
2.生成自己定义的.h的头文件,将头文件放入下图目录下。
在此目录下的common.h文件里面添加4处。在ardupilotmega 中的ardupilotmega .h与standard中standard.h同方式修改(2)(3)(4)步
(1)在common.h文件中加入头文件路径
(2)将{14, 0, 33, 33, 0, 0, 0}添加到上述的下图的位置
(3)将MAVLINK_MESSAGE_INFO_SEND_VIR添加到三个文件的下图位置,也是按对应ID从小到大的顺序
(4)将{ “SEND_VIR”, 14}添加到三个文件的下图位置,按首字母的拼音顺序
3. 在mavlink.messages.cpp中添加以下
//自定义
class MavlinkStreamSendVir : public MavlinkStream
{
public:
const char *get_name() const
{
return MavlinkStreamSendVir::get_name_static();
}
static const char *get_name_static()
{
return "SEND_VIR";
}
static uint16_t get_id_static()
{
return MAVLINK_MSG_ID_SEND_VIR;
}
uint16_t get_id()
{
return get_id_static();
}
static MavlinkStream *new_instance(Mavlink *mavlink)
{
return new MavlinkStreamSendVir(mavlink);
}
unsigned get_size()
{
return MAVLINK_MSG_ID_SEND_VIR_LEN + MAVLINK_NUM_NON_PAYLOAD_BYTES;
}
bool const_rate()
{
return true;
}
private:
MavlinkStreamSendVir(MavlinkStreamSendVir &) = delete;
MavlinkStreamSendVir &operator = (const MavlinkStreamSendVir &) = delete;
protected:
explicit MavlinkStreamSendVir(Mavlink *mavlink) : MavlinkStream(mavlink)
{}
struct vehicle_status_s _status = {};
bool send(const hrt_abstime t){
mavlink_send_vir_t msg = {};
;
msg.lat=1;
msg.lon=1;
mavlink_msg_send_vir_send_struct(_mavlink->get_channel(),&msg);
return true;
}
};
4.在mavlink.cpp中添加以下
5.在QGC/libs/mavlink....下图目录下重复第2.步(只需要在ardupilotmega文件下重复上文在common文件下的步骤)
参考QGC接收PX4自定义Mavlink消息(二)qgc接收_Sense97的博客-CSDN博客
6.在Vehicle.cc文件中加入qDebug来测试qgc有没有接收成功:
7.飞控上电,QT中打开QGC就可以看到上图所示测试结果
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)