Linux camera驱动开发(camera和飞控的结合)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

传统的飞控,尤其是无人机,或者是四旋翼,最多是一个玩具。正是由于dji的存在,让飞控和camera做了一个巧妙的结合,从而迸发出巨大的生命力。人类对飞行的向往是与生俱来的,而飞控+四旋翼的出现,帮助人们完成了这么一个梦想。所以我们学习camera的同时,可以更多地拓宽一下自己的眼界,比如camera+飞控,就是这么一种巧妙的结合。

1、飞控的输入

飞控的输入主要是来自于两个方面,一方面是操作者的按键命令,比如说是上升、下降,还是左转、右转、前进、后退,或者是原地正向旋转、逆向旋转。另外一方面,就是imu传感器,有了这个传感器,通过计算得到角速度、角加速度。

2、飞控的输出

飞控的输出,则是通过pwm,借助于驱动板,对四个电机进行设置。**整体上,按键的油门,可以看成是四个电机的一个总转速之和。**但是四个电机是如何分配的,这里面就要看操作者是想做什么动作了。

假设是上升,那么1、2、3、4同时开始增大转速,反之,下降就是同时降低转速。左转的话,可以保持2、4转速不变,降低1的转速,增大3的转速,右转类似。前进、后退也是一样,保持1和3的转速,调整2和4的转速,形成一个速度差,就可以做出对应的效果。

如果是原地旋转,那么1、2、3、4之间依次是加速、减速、加速、减速,或者是减速、加速、减速、加速,就可以做出对应的动作。

3、控制目标

在控制手柄上面,方向方面最主要的是前、后和左、右操作,每一次操作其实就是设置一个目标旋转角度。要么是前、后旋转角度,要么是左、右旋转角度,对电机的控制,就是为了实现这样一个旋转角度。

4、旋转角度的计算

**角度本身是没有办法通过传感器imu直接获取的,主要是通过积分、卡尔曼滤波和四元数的方法获取。**当然测量的过程当中,不可避免地会引入噪声。怎么处理这些噪声也要花费很大的功夫。

5、控制方法

有了pwm,有了控制目标之后,下面就是通过自动控制算法实现这个控制目标。目前来说,用的最多的算法还是pid算法。**详细一点,就是角度控制外环 + 角速度控制内环 + 电机混控矩阵。**因为计算工作量不算特别大,并且对实时性要求有点高,所以一般都是用mcu来完成,尤其是stm32的mcu。

这样梳理下来,飞控的处理流程就是读取imu+读取key输入-》计算偏转角-》pid计算对应的pwm数值-》输出给四个电机。要做得好一点的话,可以6ms做一个时间中断,每次做一部分计算即可。

6、异常和告警的处理

当然除了飞控本身之外,异常和告警处理也是非常重要的。比如说电量告警,比如说传感器失效告警,比如说电机过热告警等等,这些异常的检测是每时每刻都需要做的。而且,很多时候,有一些器件还需要多余度设计,这样才能最大程度避免风险和降低损失。

7、飞控之上加一个相机

既然飞控ok了,这个时候上面就可以加一个soc开发板。soc本身都是为了拍摄图像做准备的,当然不仅仅是图像本身,还可以用这个soc做一些复杂的事情,比如说农业机器人、比如说军事作业、再比如避障和自动飞行,都可以通过soc来处理的。总之,飞控只是一个基础,大家可以在这个基础上做很多的事情。

注:

飞控的电机不需要编码器,这一点于机器人、AGV或者二轮小车不太一样。这是因为,电机转速和四旋翼的空速没有直接关系,一般是先控制姿态,再控制速度。

相关推荐
lisw055 小时前
算法与软件的本质区别
驱动开发·算法·数学建模
泡海椒6 小时前
JQuick-SQL “数据源 SPI”辨析:应用适配器与 Function SPI 的正确边界
数据库·驱动开发·sql
万物智能信息科技7 小时前
Zigbee透传驱动开发—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
驱动开发·华为·开源·harmonyos·鸿蒙
AMASENSYS艾马斯7 小时前
低压变频器输入输出电抗器选型指南
驱动开发·单片机·机器学习·硬件工程·精益工程
软件工程师文艺2 天前
AI 编程新范式:Spec Kit 的规格驱动开发到底在解决什么
人工智能·驱动开发
AMASENSYS艾马斯2 天前
变频器过载能力参数解读与工程应用
驱动开发·嵌入式硬件·其他·硬件工程·精益工程
万物智能信息科技2 天前
LoRa串口透传驱动开发—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
驱动开发·嵌入式硬件·华为·开源·harmonyos
Keith Guo3 天前
Event Task Matrix(ETM)工作机制
驱动开发·esp32·etm
一直C4 天前
嵌入式 Linux 驱动开发学习笔记:内核定时器、platform 总线与 I²C 驱动
linux·驱动开发·嵌入式硬件·学习·imx6ull
小此方4 天前
Linux网络(三十三):告别O(n)噩梦:从select/poll的挣扎到epoll红黑树+回调的降维打击,一文打通IO多路复用
linux·网络·驱动开发