emm……搁了很久,不过地面站的代码做完了,上位机也是搞定了。当然,大量借助了ai编程,效率的确高了不少。重点是搞定了协议,上位机也加入了非常多的功能,和上一代不是一个东西了。
这边飞控还在开发中,底层代码已经写完了,但是惯导和ESKF滤波算法还没加入,状态机也没搞好,这些我尽快,不过这个月也是很忙……
这个专栏还是当个记录了,具体的我打算等完全做好,发射测试后在统一发一个文来开源。
所以先上现在的协议:
现在地面站主要是透传,把上位机发的协议加一些纠错啥的发给飞控,飞控传回的也如此。
现在主要有以下几种信息:
1.飞控回传的加速度,角速度,速度,位置,四元数。LoRa模块通信速率较低,为了省链路,这里加速度,角速度,四元数都是int16_t,速度和位置这两个不方便,还是用float。其他信息,比如气压,磁场啥的,还是留在TF卡中。而且这个回传只有1km距离,5Hz频率,高频记录还是在tf卡中。不过5Hz对遥测来说应该够用了。
2.飞控传回的状态,现在有开机,通过自检,任务开始,发射,开伞,着陆。由于飞控自带功率输出口,也可以设置任务开始即点火,如果是遥控点火,那么任务开始就是火箭安装好后开始解算位置。
3.地面站向飞控发送的命令,PING为检测飞控是否在线,UNLOCK和LOCK则是锁,进入后默认锁住,开锁后才能发送开始任务命令,START开始任务。而且协议还包括一些纠错措施,如果是飞控点火的话可以避免遥控点火的可能干扰带来提前点火的危险。
4.飞控回传的ACK。
现在地面站和上位机还没有做拉距测试,不知道有没有bug,而且以后可能会改,所以先不上代码了,发个ui截图。
可以看到保持了上一代的实时曲线图和姿态图,还有实时数据,而且还有回传数据信号强度和信噪比的实时数据,方便测试,也能供后期检查问题。不过删了实时加速度和角速度的曲线图,ui不够放,而且人也看不过来。
最重要的改进就是加入了数据保存(在logs文件夹,具体位置可配置)与处理数据(在data文件夹,具体位置可配置,有生成模拟验证数据来验证处理数据功能)。
处理数据能根据保存的数据生成从发射到着陆(如果没收到着陆信息则处理到记录结束)的加速度、角速度、速度、位置、欧拉角、信号强度与信噪比曲线图,记录了最大加速度、速度、高度的txt文件,以及姿态与轨迹gif动图。而且这个功能包括自动空出通讯丢失的时间,标注开伞点。这个功能在火箭丢失时也能记录并处理一定数据,用于分析飞行情况。
现在展示一下它处理的模拟数据。
我觉得应该这个月底能做完吧,到时候测试好了可以先发上来,然后后续再找时间上箭测试。