GPS的更新频率是多少?
终于来到科创了,先发个贴,给大家分享一下我四个月之前设计的火箭飞控。
话不多说,上图:
(板子上印反了两个字)
这是我设计的第二代飞控了,沿用一代的arduino nano作为主控,板载nrf24l01,以及维特智能的jy61p陀螺仪和GPS模块,可以带动5个舵机,能回传陀螺仪数据,舵机角度,GPS信息,支持自动开伞和遥控开伞功能。
设计的时候没想太多就拿去印板子结果就悲催了——nano无论是运存还是程序存储空间都不够我用,跑一个舵机控制就要占将近一半的flash,还得跑无线电和积分,更别提速度了。后来想用seeeduino XIAO 做协处理器,结果发现端口不够,就想着用STM32做了算了,结果又在与arduino IDE的兼容性上浪费了一大堆时间(而且我汇编写得特烂)。。。前几天终找到了树莓派RP2040,竟然支持c++(欣喜若狂),马上入手一块开始画三代板。说起画板子,我只会用frizing,这软件唯一的好处就是入手快,但是拓展性太差了(貌似都不能画多层板,线宽都有限制)。
话说我应该是全站玩火箭的人中最年轻的了吧,我才初二刚毕业,买了一堆专业书籍,看边看边上网查资料,十天半月也嚼不出多少东西,搞了几个月终于把大部分图纸画出来了,待到回头上物理课时,真的有点怀疑人生...
希望大家多多支持!(写得有点烂,勿喷)
这个GPS天线也太大了,有比这个小1/4的。整体尺寸长13mm*宽13mm*高6.5mm的。
打算上raspberry pi pico还是直接板上贴2040?
LZ的走线实在有点从心,如果需要,我可以帮忙画板子。
打算上raspberry pi pico还是直接板上贴2040?LZ的走线实在有点从心😂,如果需要...
谢谢关心,画板子就不需要了。目前在理论验证阶段,直接用核心板肯定方便些,不过上箭测试的时候应该会直接贴片,毕竟贴片无论是体积还是价格都有优势。
终于有空了
唉,学习压力真大,好不容易想起科创来了
初三基本没时间玩火箭了,只能偶尔看看书,回忆一下过往
先说一下飞控的事吧,截至今天,已经做了六个版本的板子,三套制导程序
原先用RP2040做主控的方案暂时搁置了,用的是stm32f103c8t6
原因很简单,没时间
掌握一套新的语言要花费不少时间,即使我已经写好了伪代码,还搞过两年信息奥赛
目前比较大的问题是对单片机时钟操作比较生疏,导致积分误差居高不下(后来引用了陀螺仪滤波芯片的时基,问题得到较大改善,但误差仍比较大,若不用GPS修正,百米误差接近十米)
至于制导程序,应该是你们最感兴趣的,却恰恰是我最不想讲的。原因如下:
1、程序不通用,主要是很多修正系数,都是为我自己设计的火箭量身定制的,它们涉及领域广,计算过程复杂,一时半会讲不清。比如两个火箭的质心不一样,鸭翼的机动效果会有大差异,还包括发动机推力、实时空气阻力、重力,运动状态等。这需要重新分类讨论状态转移方程,我的第一代程序就写了上千行,其复杂程度不言而喻。
2、没时间,待会还得写作业,就算是寒假也不会有时间了。这次回来说两句其实是来跟kc告别的。
3、个人语言表述能力弱,算法很复杂(对我来说一般般),自暑假以来几乎没碰过电脑,上次用还是暑假用VS写上位机的时候,所以忘了不少东西。对于算法的解读涉及很多专业知识,尤其是物理,对读者文化要求很高,想要降低阅读门槛是个不小的问题(毕竟我也是个初中生,入坑这两年我很清楚我是怎样跌跌撞撞走过来的)
最终还是归结于一个原因:没时间
如果有时间,没有什么对我是不可能的
眼看又要走了,最早要到明年毕业才能回科创。
留给初中爱好者一点话:
合理安排学校学习和爱好之间的关系,切忌一意孤行
找到好的引导老师很重要
如果是真的爱好,不是为了装逼、混圈子,相信你不会半途而废
切忌浮躁,骄傲,要有目标和执行力。
最后也没啥了,如果需要帮助,私聊我(qq:2492724129),回复可能很慢。
推荐几本适合初中爱好者的书:
再随便贴几张图
贴一篇自己写的唯一一篇博客,算是纪念吧
-----------------------------------------------------------------------------------------------------
最小生成树--kruskal算法
2021-12-24 23:11:37
thumb_up 0
(一)最小生成树:
要求:
1.恰好有n个点,n-1条边;
2.连通
3.边权和最小
求最小生成树的算法一般都使用贪心策略,如Kruskal算法等。
kruskal算法的基本思想:
1.按边权升序排边;
2.并查集判环;
3.选出n-1条边时停止;
#include <bits/stdc++.h>using namespace std;int fa[100005],n,m;struct sides{ int w,x,y; //边权,两个端点; }a[100005];int find(int x) //并查集必备 { if(fa[x]==x) return x; return fa[x]=find(fa[x]); //路径压缩 }void unionn(int x,int y) { int fx=find(x); int fy=find(y); if(fx!=fy) fa[fx]=fy; return ; }int cmp(sides a,sides b){ return a.w<b.w?a.w:b.w; //升序 }void kruskal(){ for(int i=1;i<=n;i++) fa[i]=i; //并查集初始化 sort(a+1,a+m+1,cmp); //边权排序 for(int i=1;i<=m;i++) //选边 { int fx=find(a[i].x); //x's father int fy=find(a[i].y); //y's father if(fx!=fy) //判环 { ans+=a[i].w; //如果必要的话(ans为最小总权值) unionn(fx,fy); //合并 //if(cnt++ ==n-1) return ; //小优化 } } }
代码仅供参考
第一次写博客
------------------------------------------------------------------------------------------------
至此、便没太多想说的了
感谢科创,给了我们年轻一代许多机会
祝自己考上理想的高中,继续朝着梦想努力
祝科创前途光明,国家繁荣昌盛
但愿从今后, 你我永不忘
莫斯科郊外的晚上, 但愿从今后
你我永不忘, 莫斯科郊外的晚上 ——马都索夫斯基《莫斯科郊外的晚上》
有缘再见,科创。
靠,我什么时候写过这种东西。。。
闷骚一点好
时段 | 个数 |
---|---|
{{f.startingTime}}点 - {{f.endTime}}点 | {{f.fileCount}} |
200字以内,仅用于支线交流,主线讨论请采用回复功能。