目录
1、利用SimpleExample和Mavlink inspector的调试使用
在地面站做一些显示和指令写入的时候,因为PX4和Ardupilot固件的差异,在显示和指令写入都有不同。会有一些调试技巧,来帮助更好的调试。本次课程主要的MAVLINK库是剥离于MP的代码,所以课程的重点也是讲解ardupilot固件的地面站。甚至不同机型用不同的地面站,来降低地面站的兼容性和复杂程度。下面的PX4的固件地面站的编写只是做一个方向说明,在第三章不做深入讲解。
1、利用SimpleExample和Mavlink inspector的调试使用
如果调试Ardupilot固件SimpleExample(在前几节介绍过),我们只要修改一下代码就可以知道打印出当前的消息ID。这个可以直观看到消息ID,然后我们在http://mavlink.org/messages/common 里面对于也可以找到目前飞控系统对外发布了什么消息,找到我们想要的消息,解析即可。
如果调试PX4的固件也有比较好的工具就是:
Mavlink inspector这是Mavlink消息监视工具,不过这个工具也支持Ardupilot固件。QGC的地面站同时指出Ardupilot固件和PX4的固件,其实QGC的软件也非常强大和开源,只是过年用的人比较少。用QGC这个工具也非常方便调试MAVLINK消息。
2、Mavlink设置模式指令的填充
虽然MAVLINK库做了比较好的封装,但是还是有一些填充要点要注意,不同机型的填充指令的区分,Ardopilt和PX4固件的多机型支持,尤其是模式指令发送,不同的机型的模式不一样,发送的指令ID也不一样,有些模式的发送要跟踪到控制器代码里面 典型模式发送的mavlink库函数如下
public void setMode(byte sysid, byte compid, string modein)
{
mavlink_set_mode_t mode = new mavlink_set_mode_t();
if (translateMode(sysid, compid, modein, ref mode))
{
setMode(sysid, compid, mode);
}
}
public void setMode(byte sysid, byte compid, mavlink_set_mode_t mode, MAV_MODE_FLAG base_mode = 0)
{
mode.base_mode |= (byte