无刷云台之跟随模式

本文深入探讨三轴无刷云台的锁定模式与跟随模式,解析其工作原理及实现方式,包括PID控制策略与编码器角度跟踪的技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三轴无刷云台锁定模式跟随模式介绍

目前市面上的手持云台,大概都有两种使用模式:
锁定模式
跟随模式
锁定模式即云台锁定欧拉角,镜头始终锁定Pitch,Roll,Yaw。
跟随模式即云台锁定编码器角度,镜头跟随着电机的固定位置。
一般情况下,功能的实现都是先实现锁定模式,相当于无人机的姿态控制原理,无论云台怎么动,镜头的欧拉角始终不变,这个功能实现之后才好实现跟随模式。

跟随模式的实现

做过云台的工程师知道,云台的实现用的也是串级PID控制。外环用欧拉角角度环,内环用陀螺仪角速度环。而跟随模式的实现,则是用外环的角度期望值时刻更新成编码器的角度值,具体怎么实现呢,先来上一段代码:

EncoderLockAngleErr[0] = (float)MA730_Angle2 / 10 - EncoderLockAngle[0];
if (EncoderLockAngleErr[0] > 180) EncoderLockAngleErr[0] -= 360;
if (EncoderLockAngleErr[0] < -180) EncoderLockAngleErr[0] += 360;
//(float)MA730_Angle2 / 10 为编码器的角度值,我这里是0.1°,除以10是为了转换成1.0°的单位,以跟欧拉角同步
//EncoderLockAngle[0]为需要锁定的编码器的角度,这个角度会根据用户需要(比如打杆)而进行更新
//EncoderLockAngleErr[0]为当前编码器角度跟需要锁定的角度的误差,if (EncoderLockAngleErr[0] > 180) EncoderLockAngleErr[0] -= 360;误差范围-180~180

上面代码我们把误差值计算出来了,然后要怎么利用这个误差值来更新欧拉角的期望角度呢:

Con_Tar_AngleFollow1[0] += (EncoderLockAngleErr[0]) * 0.01f;
//这里做误差值的积分

为啥误差值需要做积分?
我们知道,欧拉角跟编码器角度的相对位置是时刻改变的,并没有固定的相对位置,所以欧拉角只能通过旋转找到EncoderLockAngleErr[0]这个误差值变为0的地方即表示跟随到了编码器的目标角度。
在这,因为用的是积分,所以肯定会存在积分值过大的问题,我们这里给积分值做一个限值处理:

if (Con_Tar_Angle[0] + Con_Tar_AngleFollow1[0] > Euler_Angle_Original[0] + 10)
    Con_Tar_AngleFollow1[0] = Euler_Angle_Original[0] + 10 - Con_Tar_Angle[0];
   if (Con_Tar_Angle[0] + Con_Tar_AngleFollow1[0] < Euler_Angle_Original[0] - 10)
    Con_Tar_AngleFollow1[0] = Euler_Angle_Original[0] - 10 - Con_Tar_Angle[0];

以上代码是我的积分值限值,意思是外环实际欧拉角跟给定期望值的误差不能大于10,若大于10则等于10,这样就避免了积分值过大而引起的一系列的问题。
实际上对于云台还需要有很多细节需要处理,比如有些地方编码器并不是每个角度都能转到的,编码器角度在一些角度内是安全的,在一些角度外是会出问题的,这时候取药对编码器做限值处理;比如云台需要360度全方位控制,而实际上云台在每一个方位的控制都需要做一定的变换;这些细节都是很重要的,后续我会持续更新有关云台的细节处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值