移动机器人(四)四轴飞行器

四轴飞行控制原理

四轴飞行器在空间上有6个自由度,分别是沿3个坐标轴进行平动和转动,通过对四个旋翼的转速控制来实现,6个自由度方向的运动姿态分别为:垂直升降、俯仰角度、前后飞行、横滚角度、左右侧向飞行。
四轴飞行器机体结构有“X”型和“+”型两种,我们通过“X”型进行飞行控制的讲解
请添加图片描述

类似麦克纳姆轮,螺旋桨转动产生的力除了垂直向上的升力,还有一个切向的空气的反作用力如图红色箭头),通过组合每一个螺旋桨的切向力,我们可以实现飞行器在空间中的运动。M1 和 M3 的螺旋桨物理结构上是相同的,M2 和 M4 相同(和前者是手性对称的,如果都相同机体不出意外也会跟着旋转),它们的旋转方向也是相反的。
在这里插入图片描述

(1)垂直升降:当四个电机输出平衡时飞行器垂直运动,这点我们通过设置相同的 PWM 值可能无法实现,因为电机的物理状况有所差异。为此我们引入 PID 闭环控制,并通过姿态传感器进行姿态的观测。
(2)俯仰/前后运动:M1 和 M2 电机输出更大,机体会出现如图的翻转,并且向后运动。
在这里插入图片描述

(3)横滚/左右运动类同(2),M1 和 M4 获得更大输出。
(4)偏航角度:M1 和 M3 获得更大输出,此时航向逆时针偏转。

动力分配

可以发现,机体的运动和机体姿态密切相关,机体向哪边倾斜,也会同时向哪边运动。因此,飞四轴时我们很大程度是通过控制姿态来控制它怎么飞。结合 code ,电机除了 thr_temp(throttle) 的一个基本动力分配外,还有结合姿态输出分配的控制量,约定输出为正时,绕相应坐标轴逆时针旋转。(代码和上面图片对电机的编号有出入)

	int16_t thr_temp;
	thr_temp = Remote.thr - 1000;	// 从遥控处接收油门值

	if (Remote.thr < 1020) // 油门过低
	{
		MOTOR1 = MOTOR2 = MOTOR3 = MOTOR4 = 0;
		break;
	}
	MOTOR1 = MOTOR2 = MOTOR3 = MOTOR4 = LIMIT(thr_temp, 0, 900); // 基本动力分配(垂直运动)

	MOTOR1 += +pidRateX.out - pidRateY.out - pidRateZ.out; // 结合姿态输出分配各个电机的控制量
	MOTOR2 += +pidRateX.out + pidRateY.out + pidRateZ.out;
	MOTOR3 += -pidRateX.out + pidRateY.out - pidRateZ.out;
	MOTOR4 += -pidRateX.out - pidRateY.out + pidRateZ.out;

IIC

在这里插入图片描述
I2C 属于两线式串行总线,由飞利浦公司开发用于 MCU 和外围设备进行通信的一种总线,属于一从多主的总线结构。总线上的每个设备都有一个特定的设备地址,以区分同一 I2C 总线上的其它设备。I2C 接口有串行时钟线(SCL)和串行数据线(SDA)组成,可用于发送和接收数据。通信均由主设备发起,从设备被动响应。

串级PID

在这里插入图片描述
PID 控制器属于无模型控制(十分神奇)。(仿真实验比较难模拟物理世界的“反馈”)
串级 PID是由两个 PID 模型“串联”而成,角度环(又称外环)的输出作为角速度环(又称内环)的输入。角速度由陀螺仪直接测出,不易受到干扰,相比角度通过多重传感器融合计算得到,反应更加迅速,解决飞行器失衡和跟随滞后问题。

参考

https://zhuanlan.zhihu.com/p/503219395 IIC通信(软硬件实现)

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

u小鬼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值