四轴电机控制
来源:互联网 发布:surface rt软件 编辑:程序博客网 时间:2024/04/29 02:57
来源于网络。
今天我们来讨论一下如何调整四轴的4个电机的转速,来使四轴朝4个方向运动起来的。
多旋翼可能有很多轴,或者对称或者不对称。我们以四轴,X形状为例。
为方便说明,我们把电机进行编号,右下为9号,右上为10号,左下为11,左上为3号电机。
1.飞行器保持悬停, 4个电机的转速保持一致,来使飞行器保持水平。
四个电机的转速=悬停油门
2.当我们希望飞行器向右飞的时候,我们设定在第一种情况的基础上,增加左边两个电机(3,11)的转速,减小右边两个电机(9,10)的转速。
9号电机=悬停油门 - 右倾的量
10号电机= 悬停油门 - 右倾的量
11号电机 = 悬停油门 + 右倾的量
3号电机= 悬停油门 + 右倾的量
3.当我们希望飞行器向左飞的时候,上面的公式依然成立,只不过右倾的量是负数了。
4.当我们希望飞行器向前飞的时候,那么我们要增加后面一组电机(11,9)的转速,减小前面一组电机(3,10)的转速
9号电机=悬停油门 + 前飞的量
10号电机= 悬停油门 - 前飞的量
11号电机 = 悬停油门 + 前飞的量
3号电机= 悬停油门 - 前飞的量
5.飞行器向后飞的情况,上面公式依然成立,前飞的量为负数。
6.当我们希望飞行器顺时针旋转,我们增加10号,11号对角线两个电机的转速,减小3号,9号这条对角线电机的转速。
9号电机=悬停油门 - 旋转的量
10号电机= 悬停油门 + 旋转的量
11号电机 = 悬停油门 + 旋转的量
3号电机= 悬停油门 - 旋转的量
7.当我们希望飞行器逆时针旋转,我们减小10号,11号对角线两个电机的转速,增加3号,9号这条对角线电机的转速。继续使用上面的公式。
8. 最后,针对一个电机,它同时要负责前后左右和旋转的情况,那它就叠加了4种情况下的值:
9号电机 = 悬停油门 - 右倾的量 + 前飞的量 - 旋转的量
10号电机 = 悬停油门 - 右倾的量 - 前飞的量 + 旋转的量
11号电机 = 悬停油门 + 右倾的量 + 前飞的量 + 旋转的量
3号电机 = 悬停油门 + 右倾的量 - 前飞的量 - 旋转的量
所以实现代码如下:
#define PIDMIX(X,Y,Z) rcCommand[THROTTLE] + axisPID[ROLL]*X + axisPID[PITCH]*Y+ YAW_DIRECTION * axisPID[YAW]*Z
#ifdef QUADX
motor[0] = PIDMIX(-1,+1,-1); //REAR_R
motor[1] = PIDMIX(-1,-1,+1); //FRONT_R
motor[2] = PIDMIX(+1,+1,+1); //REAR_L
motor[3] = PIDMIX(+1,-1,-1); //FRONT_L
#endif
一切对称,不对称的多旋翼布局都基于此理论。
前面来源具体不清楚。。。
接下来说说我调试的时候的心得:
首先,把上面看懂。我的四轴的程序改匿名四轴的,移植的话需要的知道计算后的角度坐标方向,陀螺仪的坐标方向,最后就是正负的问题。这个不难,静下心来分析很快就能飞了。
具体做法:先画出四个电机位置,并标号,找个方法测出四轴的角度坐标和陀螺仪坐标,我是用nrf2401发回来,在OLED显示的。也可以用串口+匿名四轴的上位机。
跳过前面那一步,那就只能猜了。。
剩下的单轴举例分析,例如四轴现在的位置向前倾了,平衡的话需要回中,则前面两个电机加速,后面两个减速,我的角度坐标前倾为正,计算的时候符号也没有取反, 对应PIT轴输出,前面两个取正,后面两个取负。以此类推。
- 四轴电机控制
- 51单片机控制四相步进电机
- 51单片机控制四相步进电机
- 四相步进电机的控制
- 51单片机控制四相步进电机
- 从零开始学习VC++6.0之并口控制(第六课 四轴步进电机控制)
- 【转】51单片机控制四相步进电机
- 电机控制基本原理
- L298n控制步进电机
- 步进电机的控制
- 压力传感器控制步进电机
- dsPIC33F电机控制Motor
- 电机PID稳定控制
- 步进电机转速控制
- arduino控制步进电机
- 步进电机控制
- Arduino—电机控制
- 步进电机综合控制
- oracle中的的表查询语句
- OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类
- BP神经网络PYthon实现(带有”增加充量项“)
- 磺兴饺该露露腔山跋刈偻拓赵破热
- myeclipse,源代码更改后,重新编译,执行,仍然执行的是原来的代码。
- 四轴电机控制
- win7安装ubuntu 14以及python环境,不同版本python之间切换(virturalenv)
- Text Reverse
- 屏幕方向变化时Activity销毁
- eclipse图标含义
- Android 开发 Socket 基于UDP通讯
- 开始iOS 7中自动布局教程
- systemctl命令用法
- 分离adapter的getView方法代码,写出个清爽的adapter