本帖最后由 scaple 于 2014-8-20 01:27 编辑
阶段性进展
上周一直在分析通讯协议,基本上就是在qq群里交流学习,没顾上过来更新进展.
前面一直在努力解决的问题是如何才能跳出Mavlink协议的限制,争取更大的通用性.实现的思路是采用了一个名为 DlinkManager(DLM) 的客户端程序来实现通讯协议的转换.简单的说,DLM是一个源码开放的程序框架,它使用内存共享的方式与CSS进行数据通讯,在两者间,可以进行串行\并行数据通讯以及命令响应函数的设定与使用.实际上,在大概一周之前这个框架程序就已经完成了.紧接着就带来一个问题,既然已经具备了多协议的能力,那为何不做个 example 来演示一下这个特性呢?
一开始我考虑的是CC3D,它的通讯协议文档相对完善,但是仔细研究后感觉目前CC3D似乎正处于发展过程中,功能不是太完善。于是目光又转回到PPZ,之所以一开始没有考虑PPZ,是因为我这里没有任何Linux的运行、开发环境,自己对Linux也完全不熟悉。所以前面买了 PPZ Lisa 回来后就一直没有动过。另外就是PPZ的协议文档资料太少,再加上PPZ是一个使用32位芯片、卡尔曼滤波和姿态四元数算法的飞控,先前据此就一直以为PPZ的通讯协议恐怕就像它的算法一样复杂而高端,于是就一直没有认真研究过它。
PPZ群中的@周正朋友提供了关于PPZ协议的基本信息,认真一看,这玩意儿不像想象中那么复杂嘛。仔细研究下来,ppz协议构成要比mavlink简单,但是协议内容要更多更复杂一些。总体来看难度不是太大。于是就努力来实现ppz协议的解析。
这里要特别感谢“电子虫”和“kevin”两位朋友,如果没有他们提供的大量帮助、建议以及数据,那我在对ppz没有任何了解,也不具有ppz运行环境的情况下,根本不可能在短时间初步搞定ppz协议。
目前,ppz协议已经能够进行解析。但还不能对ppz实施各种上行控制,因为要了解上行控制的实现过程,要么需要有一定的文档说明,要么就要对ppz官方gcs与ppz之间的通讯过程进行监-听及分析,而我这里存在的最大障碍就是:1、没有ppz及linux的运行环境;2、自己对ppz几乎完全不了解。上述问题,我将在将来适当时候加以解决。
截至目前,最大的心病:Mavlink协议的限制,目前理论上已经完全得到了解决。对CSS功能上最大的遗憾消除掉了。剩下的工作就是一些小的方面完善修改了!
ppz协议解析
CSS端设定DLM数据交换帧与CSS总线的关联
CSS同时接收APM、PPZ姿态数据
APM、PPZ在静止状态下滚转、航向角数据稳定性对比
|