匿名无人机控制过程和模式总结

一直想写写这方面的总结。。

代码看了一阵,各个功能分成块,大部分已经算是比较明白了,但整合到一起,系统开始运行时,就很容易懵比。。。难点就在于对飞行器的工作模式(定高自稳啥的到现在还没分清如果有读者知道还请指教orz)以及各个标志位(上锁啊解锁啊锁定命令之类的),要说逻辑,肯定是有的,但就是非常的琐碎和复杂,因此想要对无人机实现控制,这些过程中的节点都是不能忽视的,还有灯啊什么的也要看看。。。

这个最复杂的部分就是解锁那里,因为我们本身的遥控解锁,但是比赛中需要我们按键解锁,如何加进按键,以及如何利用按键控制工作模式,就需要对这个过程的理解比较详细。
还有最开始的起飞状态,包括一键起飞等等。。

1、解锁的一般步骤
无人机从上电复位,就一直在轮询主函数,然而此时还是锁定状态。遥控器内八外八都可以令其解锁,但实际过程是啥样的呢?

无人机在初始的轮询中会先检测硬件,就是这个程序:
在这里插入图片描述
必要的外设都ok的时候,Ano_RC.c中的解锁程序才会令解锁允许标志位置位(实际上是解锁错误标志位flag.unlock_err清零,一个意思,为了表述方便)
也就是说,外设ok的话,才会允许你解锁,否则根本不允许解锁。

那允许解锁后怎么解锁呢?我们只需要把解锁命令标志置位就可以,顾名思义,就是一个命令飞控解锁的标志位。
所以,我们的解锁操作必须满足三个条件:

①解锁标志位flag.unlock_sta为0,也就是现在在锁定状态
②解锁允许标志位有效,也就是硬件状态合格,允许你解锁
③解锁命令标志位有效,也就是有解锁的命令
全部满足,飞行器才会解锁,否则不会
解锁后,三个标志位的状态保持为:
flag.unlock_cmd=1
flag.unlock_err=0
flag.unlock_sta=1
直到锁定命令出现才会改变。

2、遥控器的解锁过程

说了半天,跟遥控没有关系,但以上是所有解锁都必须经过的流程。
实际上在轮询中,飞控一直在监测接收到的遥控器的遥感状态,一旦检测到内八或者外八,就会进入“解锁中”状态,满足条件的情况下,持续一定的时间,就会令flag.unlock_cmd有效,从而实现解锁。
这就是遥控解锁的步骤,这么看又好像很简单。

3、飞机的锁定步骤

说完解锁,那锁定的过程呢?
其实解锁和锁定是差不多的,利用了那几个相同的标志位,以及相同的遥控状态检测,甚至更简单一点。
只要我们把flag.unlock_cmd置零,那么飞机就会上锁。
而flag.unlock_cmd什么时候会为零呢?就是我们遥控器满足内八或者外八的条件时。
这也就是利用遥控锁定的过程。

4、没有遥控器时

抛开遥控器,我们怎么实现解锁和锁定?
其实刚刚说清楚了已经,只要操作flag.unlock_cmd就可以了。
将flag.unlock_cmd置位,飞机就会解锁,清零,就会上锁,就这么简单,而且遥控器一直有效,程序出了故障,飞机乱飞,可以用遥控器降下来手动然后锁定。

一键起飞这个,有空另写。
因为某些原因,以后会晚上写代码,白天休息。。。。

  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值