搜索
bottom↓
12
返回列表 发新帖
楼主: qwe2231695

【庆祝】调了一天PID,终于飞稳了

  [复制链接]

出0入0汤圆

发表于 2013-10-19 11:02:56 | 显示全部楼层
qwe2231695 发表于 2013-10-18 23:10
这个的确容易弄反,只加d,飞机会很难掰动,带有反抗力。反了的话,你朝哪个方向动,那就更加帮你动~ ...

http://v.youku.com/v_show/id_XNjIzMzczMDE2.html
你看看调成这样可以么?我的P是1.4,D是35,D感觉很大啊,油门满了才1000。

还有就是平衡位置不在水平,有点偏差,这个咋办?

出0入0汤圆

发表于 2013-10-19 12:55:19 | 显示全部楼层
qwe2231695 发表于 2013-10-2 00:56
终于有人发现匿名的经典pid的弊端了,那段pid实在太简单太短。努力调好可以稳定的pid后,发现回中是极其 ...

学习了,新环境做好后就优化PID,到时请教你

出105入79汤圆

 楼主| 发表于 2013-10-19 13:04:22 | 显示全部楼层
mahengyu 发表于 2013-10-19 11:02
http://v.youku.com/v_show/id_XNjIzMzczMDE2.html
你看看调成这样可以么?我的P是1.4,D是35,D感觉很 ...

原来你的是大四轴啊,D没有反的,反的话震荡不会收敛。我的D的感觉是一动,他就很大很大反应阻止你,根本动不了,很硬的。

出0入0汤圆

发表于 2013-10-19 17:30:05 | 显示全部楼层
本帖最后由 mahengyu 于 2013-10-19 17:31 编辑
qwe2231695 发表于 2013-10-19 13:04
原来你的是大四轴啊,D没有反的,反的话震荡不会收敛。我的D的感觉是一动,他就很大很大反应阻止你,根本 ...


我的四轴是十字的,我先调了两个电机,能够保持平衡,没加yaw的pid       P是1.2,D是35,I是0.005

再调另外两个,也能够保持平衡

但是加在一起就不行了,四轴振荡,按与十字机架呈45度的方向振荡

我应该怎么办?

出105入79汤圆

 楼主| 发表于 2013-10-19 18:18:01 | 显示全部楼层
mahengyu 发表于 2013-10-19 17:30
我的四轴是十字的,我先调了两个电机,能够保持平衡,没加yaw的pid       P是1.2,D是35,I是0.005

再调 ...

照搬匿名四轴的程序思路做测试   我就是这样测试我的第一台飞机的

出0入85汤圆

发表于 2013-10-19 23:50:01 | 显示全部楼层
学习了~

出0入0汤圆

发表于 2013-10-23 21:13:20 | 显示全部楼层
楼主能讲讲你调四轴PID的经验吗?各需要调到什么程度?

出0入0汤圆

发表于 2013-11-14 11:08:18 | 显示全部楼层
看到楼主真容了。。

出0入0汤圆

发表于 2013-11-16 13:17:26 | 显示全部楼层
呵呵,                           

出0入0汤圆

发表于 2013-11-18 07:20:22 | 显示全部楼层
qwe2231695 发表于 2013-10-2 12:28
楼主位视频上面的使用的是匿名四轴的那种经典PID。这种pid的特点就是:很容易整合好PD参数,然后就可以飞 ...

谢谢学长分享
想问一下这里串级控制两级的输入输出是什么呢
不是自动化的
对这个系统本身也不太了解

出0入0汤圆

发表于 2013-12-1 21:39:44 | 显示全部楼层
qwe2231695 发表于 2013-10-2 12:28
楼主位视频上面的使用的是匿名四轴的那种经典PID。这种pid的特点就是:很容易整合好PD参数,然后就可以飞 ...

楼主好强,串级控制貌似是过程控制里学的

受启发了,专门过来找这个帖子

出0入0汤圆

发表于 2013-12-11 14:48:21 | 显示全部楼层
楼主霸气!

出0入0汤圆

发表于 2013-12-12 20:36:23 | 显示全部楼层
不错不错,不知道能不能出点教程。。。哈

出0入0汤圆

发表于 2013-12-13 14:09:17 | 显示全部楼层
楼主你好,我这段时间在看PID算法,有很多地方不明白,希望你指点一下。
我现在是想做一个温控器,控制温度在100到200度。准备提前20度开始控温。通过控制加热时间来控制温度。
加热周期:20S
AD采样周期2MS,取样10次后去掉最大最小值,求平均值,相当与周期为20Ms。每20MS进行一次运算,那么我的运算结果是立即
更新到输出值还是说等20S的周期输出完成再更新输出值。
我想用增量式PID控制算法,公式中的T:采样周期是多少,是20Ms还是20S
希望楼主看到后能指点一下,最好能帮我讲解一下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出105入79汤圆

 楼主| 发表于 2013-12-13 15:54:22 | 显示全部楼层
夜尽天明 发表于 2013-12-13 14:09
楼主你好,我这段时间在看PID算法,有很多地方不明白,希望你指点一下。
我现在是想做一个温控器,控制温度 ...

  建议你使用位置式PID,因为你的控制对象不带积分功能,需要在你的程序里面使用一个个变量进行最后的积分,这样体现不出来增量式的优点,再者增量式PID的参数整定比较困难。

水温PID取20ms的控制周期太小了,20S又太大了,建议取2s-5s左。也就是:每5秒取一次温度,改变一下加热强度。 加上水温系统的特点:加热快,降温慢,进行积分部分的算法优化。

出0入0汤圆

发表于 2013-12-13 18:24:47 | 显示全部楼层
qwe2231695 发表于 2013-12-13 15:54
建议你使用位置式PID,因为你的控制对象不带积分功能,需要在你的程序里面使用一个个变量进行最后的积 ...

就是说,AD检测,相当于5S检测一次,然后再运算输出控温时间,那么我的加热周期也要改为5S了吧

出0入0汤圆

发表于 2013-12-13 18:25:13 | 显示全部楼层
qwe2231695 发表于 2013-12-13 15:54
建议你使用位置式PID,因为你的控制对象不带积分功能,需要在你的程序里面使用一个个变量进行最后的积 ...

非常感谢

出0入0汤圆

发表于 2013-12-17 19:40:49 | 显示全部楼层
楼主你好,我现在在姿态解算上面遇到了困难,我对四元数和欧拉角看不懂,所以直接这部分程序我直接找的匿名的代码,但是读出来的数据给我的感觉很不正常,稍微晃动一下角度能偏几十度,下面是我用的匿名的姿态解算这段代码,楼主可否帮忙看下这段代码有什么问题?
#include "IMU.h"
#include "MPU6050.h"
#include "math.h"

#define RtA         57.324841                                //弧度到角度
#define AtR            0.0174533                                //度到角度
#define Acc_G         0.0011963                                //加速度变成G
#define Gyro_G         0.0152672                                //角速度变成度
#define Gyro_Gr        0.0002663                        //角速度变成弧度,此参数对应陀螺2000度每秒       
#define FILTER_NUM 10

S_INT16_XYZ ACC_AVG;                //平均值滤波后的ACC
S_FLOAT_XYZ GYRO_I;                        //陀螺仪积分
S_FLOAT_XYZ EXP_ANGLE;                //期望角度
S_FLOAT_XYZ DIF_ANGLE;                //期望角度与实际角度差
S_FLOAT_XYZ Q_ANGLE;                //四元数计算出的角度

int16_t        ACC_X_BUF[FILTER_NUM],ACC_Y_BUF[FILTER_NUM],ACC_Z_BUF[FILTER_NUM];        //加速度滑动窗口滤波数组

void Prepare_Data(void)
{
        static uint8_t filter_cnt=0;
        int32_t temp1=0,temp2=0,temp3=0;
        uint8_t i;
       
        MPU6050_Read();
        MPU6050_Dataanl();
       
        ACC_X_BUF[filter_cnt] = MPU6050_ACC_LAST.X;//更新滑动窗口数组
        ACC_Y_BUF[filter_cnt] = MPU6050_ACC_LAST.Y;
        ACC_Z_BUF[filter_cnt] = MPU6050_ACC_LAST.Z;
        for(i=0;i<FILTER_NUM;i++)
        {
                temp1 += ACC_X_BUF;
                temp2 += ACC_Y_BUF;
                temp3 += ACC_Z_BUF;
        }
        ACC_AVG.X = temp1 / FILTER_NUM;
        ACC_AVG.Y = temp2 / FILTER_NUM;
        ACC_AVG.Z = temp3 / FILTER_NUM;
        filter_cnt++;
        if(filter_cnt==FILTER_NUM)        filter_cnt=0;
        //以下是积分值
        GYRO_I.Z += (float)MPU6050_GYRO_LAST.Z*Gyro_G*0.001;
}

void Get_Attitude(void)
{
        IMUupdate(MPU6050_GYRO_LAST.X*Gyro_Gr,
                          MPU6050_GYRO_LAST.Y*Gyro_Gr,
                          MPU6050_GYRO_LAST.Z*Gyro_Gr,
                          ACC_AVG.X,ACC_AVG.Y,ACC_AVG.Z);        //*0.0174转成弧度
}
////////////////////////////////////////////////////////////////////////////////
#define Kp 10.0f                        // proportional gain governs rate of convergence to accelerometer/magnetometer
#define Ki 0.008f                          // integral gain governs rate of convergence of gyroscope biases
#define halfT 0.001f                   // half the sample period采样周期的一半

float q0 = 1, q1 = 0, q2 = 0, q3 = 0;    // quaternion elements representing the estimated orientation
float exInt = 0, eyInt = 0, ezInt = 0;    // scaled integral error
void IMUupdate(float gx, float gy, float gz, float ax, float ay, float az)
{
  float norm;
//  float hx, hy, hz, bx, bz;
  float vx, vy, vz;// wx, wy, wz;
  float ex, ey, ez;

  // 先把这些用得到的值算好
  float q0q0 = q0*q0;
  float q0q1 = q0*q1;
  float q0q2 = q0*q2;
//  float q0q3 = q0*q3;
  float q1q1 = q1*q1;
//  float q1q2 = q1*q2;
  float q1q3 = q1*q3;
  float q2q2 = q2*q2;
  float q2q3 = q2*q3;
  float q3q3 = q3*q3;
       
        if(ax*ay*az==0)
                return;
               
  norm = sqrt(ax*ax + ay*ay + az*az);       //acc数据归一化
  ax = ax /norm;
  ay = ay / norm;
  az = az / norm;

  // estimated direction of gravity and flux (v and w)              估计重力方向和流量/变迁
  vx = 2*(q1q3 - q0q2);                                                                                                //四元素中xyz的表示
  vy = 2*(q0q1 + q2q3);
  vz = q0q0 - q1q1 - q2q2 + q3q3 ;

  // error is sum of cross product between reference direction of fields and direction measured by sensors
  ex = (ay*vz - az*vy) ;                                                                    //向量外积在相减得到差分就是误差
  ey = (az*vx - ax*vz) ;
  ez = (ax*vy - ay*vx) ;

  exInt = exInt + ex * Ki;                                                                  //对误差进行积分
  eyInt = eyInt + ey * Ki;
  ezInt = ezInt + ez * Ki;

  // adjusted gyroscope measurements
  gx = gx + Kp*ex + exInt;                                                                                                   //将误差PI后补偿到陀螺仪,即补偿零点漂移
  gy = gy + Kp*ey + eyInt;
  gz = gz + Kp*ez + ezInt;                                                                                           //这里的gz由于没有观测者进行矫正会产生漂移,表现出来的就是积分自增或自减

  // integrate quaternion rate and normalise                                                   //四元素的微分方程
  q0 = q0 + (-q1*gx - q2*gy - q3*gz)*halfT;
  q1 = q1 + (q0*gx + q2*gz - q3*gy)*halfT;
  q2 = q2 + (q0*gy - q1*gz + q3*gx)*halfT;
  q3 = q3 + (q0*gz + q1*gy - q2*gx)*halfT;

  // normalise quaternion
  norm = sqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3);
  q0 = q0 / norm;
  q1 = q1 / norm;
  q2 = q2 / norm;
  q3 = q3 / norm;

  //Q_ANGLE.Z = atan2(2 * q1 * q2 + 2 * q0 * q3, -2 * q2*q2 - 2 * q3* q3 + 1)* 57.3; // yaw
  Q_ANGLE.Z = GYRO_I.Z;
  Q_ANGLE.Y  = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; // pitch
  Q_ANGLE.X = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; // roll
}

出0入0汤圆

发表于 2013-12-17 20:27:01 | 显示全部楼层
谢谢大家分享,过来找资料学习的!

出105入79汤圆

 楼主| 发表于 2013-12-18 12:25:45 | 显示全部楼层
宁采儿 发表于 2013-12-17 19:40
楼主你好,我现在在姿态解算上面遇到了困难,我对四元数和欧拉角看不懂,所以直接这部分程序我直接找的匿名 ...

这个是带有PI非线性互补滤波的四元数算法,很常用,波形质量也很不错,你要检查算法运算的时间是不是恒定,是不是和你在程序里面设定的时间一样,还要观察陀螺仪送进去的方向对不对。要找个串口示波器看数据波形。

出0入0汤圆

发表于 2013-12-20 10:42:37 | 显示全部楼层
楼主机架哪买的,麻烦给个链接呀,还有你的四轴会开源吗,遥控怎么做的

出0入0汤圆

发表于 2013-12-25 11:47:52 | 显示全部楼层
飞起来的瞬间,应该是激动得很呐

出0入0汤圆

发表于 2013-12-25 12:52:05 | 显示全部楼层
qwe2231695 发表于 2013-10-2 12:28
楼主位视频上面的使用的是匿名四轴的那种经典PID。这种pid的特点就是:很容易整合好PD参数,然后就可以飞 ...

我觉得crazyflie 应该不是你说的 二级pid吧  陀螺仪数据一路和加速度计融合 获得pitch和roll   陀螺仪还有一路是给 速率pid(按原图的翻译)  我觉得这个pid 应该是 yaw 的pid   所以只用了 陀螺仪数据    然后  姿态pid 和 速率pid 叠加 给pwm控制电机   所以控制姿态的就是一级pid  也就是 经典pid   后面那个pid 只是修正自旋 而已  你觉得呢?

出105入79汤圆

 楼主| 发表于 2013-12-25 14:31:48 | 显示全部楼层
477748703 发表于 2013-12-25 12:52
我觉得crazyflie 应该不是你说的 二级pid吧  陀螺仪数据一路和加速度计融合 获得pitch和roll   陀螺仪还 ...

呵呵,不好意思,我说的是Bicraze开源微型四轴 http://www.amobbs.com/thread-5535927-1-1.html

出0入0汤圆

发表于 2013-12-25 14:43:10 | 显示全部楼层
qwe2231695 发表于 2013-12-25 14:31
呵呵,不好意思,我说的是Bicraze开源微型四轴 http://www.amobbs.com/thread-5535927-1-1.html ...

额  Bicraze 是团队吧  做的四轴叫 crazyflie吧。。。。

出105入79汤圆

 楼主| 发表于 2013-12-25 15:42:33 | 显示全部楼层
477748703 发表于 2013-12-25 14:43
额  Bicraze 是团队吧  做的四轴叫 crazyflie吧。。。。

是的 ,那么里面是有2环PID的 ,一环姿态 一环陀螺。其实这种方法两个环耦合很严重,也不太好。

出0入0汤圆

发表于 2013-12-25 16:43:11 | 显示全部楼层
qwe2231695 发表于 2013-12-25 15:42
是的 ,那么里面是有2环PID的 ,一环姿态 一环陀螺。其实这种方法两个环耦合很严重,也不太好。 ...

恩  我是觉得他陀螺这一环应该不是对pitch roll yaw 都控制了   应该只是对yaw的pid   没有管pitch和roll吧   要不然就理解不了为什么他要先姿态pid再陀螺pid了   

出105入79汤圆

 楼主| 发表于 2013-12-25 16:57:09 | 显示全部楼层
477748703 发表于 2013-12-25 16:43
恩  我是觉得他陀螺这一环应该不是对pitch roll yaw 都控制了   应该只是对yaw的pid   没有管pitch和roll ...

请看软件部分\bitcraze-crazyflie-firmware-26d661941c7e\modules\src\controller.c




void controllerCorrectRatePID(
       float rollRateActual, float pitchRateActual, float yawRateActual,
       float rollRateDesired, float pitchRateDesired, float yawRateDesired)
{
  pidSetDesired(&pidRollRate, rollRateDesired);
  TRUNCATE_SINT16(rollOutput, pidUpdate(&pidRollRate, rollRateActual, TRUE));

  pidSetDesired(&pidPitchRate, pitchRateDesired);
  TRUNCATE_SINT16(pitchOutput, pidUpdate(&pidPitchRate, pitchRateActual, TRUE));

  pidSetDesired(&pidYawRate, yawRateDesired);
  TRUNCATE_SINT16(yawOutput, pidUpdate(&pidYawRate, yawRateActual, TRUE));
}

void controllerCorrectAttitudePID(
       float eulerRollActual, float eulerPitchActual, float eulerYawActual,
       float eulerRollDesired, float eulerPitchDesired, float eulerYawDesired,
       float* rollRateDesired, float* pitchRateDesired, float* yawRateDesired)
{
  pidSetDesired(&pidRoll, eulerRollDesired);
  *rollRateDesired = pidUpdate(&pidRoll, eulerRollActual, TRUE);

  // Update PID for pitch axis
  pidSetDesired(&pidPitch, eulerPitchDesired);
  *pitchRateDesired = pidUpdate(&pidPitch, eulerPitchActual, TRUE);

  // Update PID for yaw axis
  float yawError;
  yawError = eulerYawDesired - eulerYawActual;
  if (yawError > 180.0)
    yawError -= 360.0;
  else if (yawError < -180.0)
    yawError += 360.0;
  pidSetError(&pidYaw, yawError);
  *yawRateDesired = pidUpdate(&pidYaw, eulerYawActual, FALSE);
}

出0入0汤圆

发表于 2013-12-25 17:37:10 | 显示全部楼层
qwe2231695 发表于 2013-12-25 16:57
请看软件部分\bitcraze-crazyflie-firmware-26d661941c7e\modules\src\controller.c

恩    用陀螺仪能修正震荡吗?   

出0入0汤圆

发表于 2013-12-26 19:27:45 | 显示全部楼层
楼主视频里的飞机用的是这种串级PID吗?有没有测试过呢?

出0入0汤圆

发表于 2014-1-2 11:40:33 | 显示全部楼层
楼主的飞行距离能做的更远点。24L01输出功率设置多少?

出0入0汤圆

发表于 2014-1-3 10:10:11 | 显示全部楼层
qwe2231695 发表于 2013-10-2 12:28
楼主位视频上面的使用的是匿名四轴的那种经典PID。这种pid的特点就是:很容易整合好PD参数,然后就可以飞 ...

先了解下,学习了。

出0入0汤圆

发表于 2014-1-11 16:27:30 | 显示全部楼层
本帖最后由 问乐寻音 于 2014-1-11 16:32 编辑

我现在也在做自己的小四轴,重量只有32g左右,用的7*16空心杯电机。最大PWM为2000。
现在用绳子栓着做X模式的调试,目前的姿态解算用的是四元数法,就是那个差积的方式,
调整了Kp和Ki,halfT就是我的控制周期的一半,通过查看波形和姿态数据速度还可以,快速搬动的时候
过冲角度不超过1°。
现在在调PID,只用了姿态角度环来控制飞行器。
用四元数法求出三个欧拉角,然后得到与水平悬停的误差后乘以P就是P项。
D项直接用的陀螺仪输出,所以公式:
PID_OUT = P*Error - D*Gyro;
然后把这个值分配到四个电机上做X模式控制。程序应该没错。
现在的问题是,Kp=2.1 Kd = 0.55的时候,我用绳子拉着飞机的中间轴,让他自由下垂,开电机
在这个参数下,能够马上摆正并稳定,虽然也有小幅度振荡,但是效果还行。
问题就是现在飞机是稳定的,但是会缓慢漂移游走,最大角度到90°就定住了。
等我把他拉到平衡位置时,又慢慢的漂移,到一个很大的角度定住,不动。
按照姿态角度的控制环来讲,现在的Error肯定比较大,乘以一个P会有反向输出,但是他根本不会往平衡的位置去,依旧缓慢漂移到一个大角度定住不动。
这个漂移的方向是按照重力来的,貌似。初始时刻我往左边倾斜一点,他就慢慢往左边漂移到一个大角度定住;初始时刻往右边倾斜一点,他就慢慢往右边漂移到一个大角度定住。
漂移的过程飞机很稳定,缓慢的游走。

我看了youku上一个MWC的PID调试视频,他也是这样的,只有P和D的情况之下无法平衡,会缓慢的超一个方向漂移,然后他说就是这样的,接下来开自稳,立马就稳定了。。
我去,难道这个姿态PD控制环不能让飞机平衡吗?视频里说的开自稳是什么东西,是不是要更换姿态控制环算法?为什么论坛上有的人直接用姿态PD控制环就可以飞起来了,还那么稳定?为什么他们没有遇到这种缓慢漂移的情况?
请问楼主的控制环是这种姿态PD控制坏,还是用了什么更高级的双环控制?或者视频里说的自稳功能?咋实现的?

出105入79汤圆

 楼主| 发表于 2014-1-11 17:18:12 | 显示全部楼层
问乐寻音 发表于 2014-1-11 16:27
我现在也在做自己的小四轴,重量只有32g左右,用的7*16空心杯电机。最大PWM为2000。
现在用绳子栓着做X模式 ...

单单PD能稳定飞,这个是肯定的,不会像你一样慢慢到90度。正常的话飞机飞行时有10度偏差已经不得了了,会有很大的加速度冲向一个方向。

自稳估计是一个很大的D控制控制锁住当前角度。

出105入79汤圆

 楼主| 发表于 2014-1-11 17:21:55 | 显示全部楼层
问乐寻音 发表于 2014-1-11 16:27
我现在也在做自己的小四轴,重量只有32g左右,用的7*16空心杯电机。最大PWM为2000。
现在用绳子栓着做X模式 ...

我两种都用过,串级PID锁角和回中以及遥控手感好一些而已。


你需要飞行时波形观察PID输出和角度输出,发送回来观察,你就明白问题在哪了。

出0入0汤圆

发表于 2014-1-11 19:29:01 | 显示全部楼层
qwe2231695 发表于 2014-1-11 17:21
我两种都用过,串级PID锁角和回中以及遥控手感好一些而已。


我现在换成了PID控制,参数没怎么调,但是手动放置在平衡位置貌似稳住在平衡位置了。。还没有做积分分离和抗击分饱和,只有积分限幅。

我个人感觉我的p参数是不是小了,我这个P参数调了之后,飞机大概有60°才会有一点点的力量往上抬,别说10°,30°了,这些个角度他都没有力度回中,还在继续往下掉,
一直到60°才差不多有点点回去的意思,然后我放开,他就往上去一点点,然后又回来,又往上去,接着都振荡发散了
请问这P是小了还是大了。。。我总感觉小了,但是这似乎是发散的。。。

出0入0汤圆

发表于 2014-1-11 19:47:17 | 显示全部楼层
本帖最后由 问乐寻音 于 2014-1-11 19:50 编辑
qwe2231695 发表于 2014-1-11 17:21
我两种都用过,串级PID锁角和回中以及遥控手感好一些而已。


我刚才说的P参数是单独整定得来的现象,我的P参数非常疲软,一点力气都没有,误差都快30°了还在继续掉,但是我又不敢加P
加到了8以上虽然感觉上10°左右就有力度回中,但是一放开,立马发散,想都不用想。唯有2.1左右是刚才我说的到了60°就稍微有一点力气回来。
至于D参数,看了之前你的描述说反抗力非常大,你说你动了一下,马达就呼呼的转来反抗。
我的完全不是这样,和P一样,抵抗力气非常小,我快速的动他几乎感觉不到什么力量来反抗我的干扰。只有调到了5(目前是0.5)以上,还可以感觉到一点抵抗的意思,
要是设定为10的话那就真像你说的动一下马达呼呼的转。但是,,振荡!!!
可能因为是小四轴,惯性小,所以回中力度没你说的那么大,但是我也感觉太疲软了。。
MPU6050,加速度计量程是4g(典型值为8192),陀螺仪是2000的范围。

出0入0汤圆

发表于 2014-1-13 18:45:25 | 显示全部楼层
mahengyu 发表于 2013-10-6 14:59
楼主,是不是调好pid就能悬停了?

还有,pid是不是只需要调俯仰和横滚就行啊? ...

四轴其实是不能看成线性系统的

出0入0汤圆

发表于 2014-1-13 18:56:58 | 显示全部楼层
a457738242 发表于 2014-1-13 18:45
四轴其实是不能看成线性系统的

我看很多飞控的程序,也没做啥非线性处理啊

出0入0汤圆

发表于 2014-1-13 19:56:53 | 显示全部楼层
mahengyu 发表于 2014-1-13 18:56
我看很多飞控的程序,也没做啥非线性处理啊

虽然光用PID就可以做到控稳,但是从物理模型的角度分析 是必须要做线性化的...所以 其实 PID 并不是在所有情况下控制效果都很好的,其最佳控制区间其实很有限。

出0入0汤圆

发表于 2014-1-20 10:17:49 | 显示全部楼层
qwe2231695 发表于 2014-1-11 17:21
我两种都用过,串级PID锁角和回中以及遥控手感好一些而已。

我现在可以飞了。用的是那种姿态环的PID控制的,PID_OUT = P*姿态误差 + I*误差积分 - D*陀螺仪。
不用积分也可以,但是飞机起飞的时候会往一个方向快速的移动,速度比较快。回中极其缓慢。甚至是不回中的。
加了积分,有较大改善,但是仍然会往一个方向走大概2米左右,然后回中。平衡的时候会有缓慢平移现象。
请问这个怎么解决?只能更换串级PID算法吗?这种单环的PD控制可以达到楼主视频中的效果吗?为什么我起飞时的侧移现象那么严重?

出0入0汤圆

发表于 2014-3-18 15:56:19 | 显示全部楼层
求助,你的遥控器用的什么?然后遥控器的程序可以看一下吗?

出0入0汤圆

发表于 2014-3-28 11:07:10 | 显示全部楼层
好东西感谢楼主分享

出0入0汤圆

发表于 2014-3-28 11:15:43 | 显示全部楼层
楼主,请问一下我们加了PD之后,是可以回复到一个位置的但是这个位置是倾斜的,怎么解决啊,还有怎么起飞,老是一起飞就歪倒,我们的pitch的P是0.13 roll的P是0.05

出0入0汤圆

发表于 2014-3-28 11:17:09 | 显示全部楼层
四轴请人 有空还望楼主指点一二

出105入79汤圆

 楼主| 发表于 2014-3-28 23:29:35 | 显示全部楼层
熙gex 发表于 2014-3-28 11:15
楼主,请问一下我们加了PD之后,是可以回复到一个位置的但是这个位置是倾斜的,怎么解决啊,还有怎么起飞, ...

roll 和pitch的pid参数应该是一样的,而倾斜问题,就要好好观察你的角度数据准不准。有误差和延迟都会飞不起来。

出0入0汤圆

发表于 2014-3-31 10:01:09 | 显示全部楼层
qwe2231695 发表于 2014-3-28 23:29
roll 和pitch的pid参数应该是一样的,而倾斜问题,就要好好观察你的角度数据准不准。有误差和延迟都会飞 ...

感觉还好,由于振动偏差了+-1.5度,我的roll和pitch 的pid差了很多的

出0入0汤圆

发表于 2014-3-31 10:05:53 | 显示全部楼层
问乐寻音 发表于 2014-1-20 10:17
我现在可以飞了。用的是那种姿态环的PID控制的,PID_OUT = P*姿态误差 + I*误差积分 - D*陀螺仪。
不用积 ...

你这样子是怎么起飞啊,我感觉连起飞都飞不起来

出0入0汤圆

发表于 2014-3-31 10:11:31 | 显示全部楼层
问乐寻音 发表于 2014-1-11 16:27
我现在也在做自己的小四轴,重量只有32g左右,用的7*16空心杯电机。最大PWM为2000。
现在用绳子栓着做X模式 ...

我的qq号是723779518,求私聊啊

出0入0汤圆

发表于 2014-4-1 19:48:09 | 显示全部楼层
好腻害啊 !!

出0入0汤圆

发表于 2014-4-21 17:14:26 | 显示全部楼层
问乐寻音 发表于 2014-1-11 16:27
我现在也在做自己的小四轴,重量只有32g左右,用的7*16空心杯电机。最大PWM为2000。
现在用绳子栓着做X模式 ...

mwc上位机中第一行的参数PID是速度环的PID,下面一个LEVEL栏的PID就是角度PID,MWC用的是串级PID控制

出0入0汤圆

发表于 2014-11-16 10:47:16 | 显示全部楼层
mahengyu 发表于 2013-10-19 17:30
我的四轴是十字的,我先调了两个电机,能够保持平衡,没加yaw的pid       P是1.2,D是35,I是0.005

再调 ...

我现在在做四轴,看这个帖子,发现我的四轴和你的一样,十字的,分开调都可以平衡,叠加在一起就出现和你一样的问题,我的是小四轴。你现在应该解决这个问题了吧?请教一下,是怎么解决的?谢谢!

出0入0汤圆

发表于 2014-12-12 15:04:36 | 显示全部楼层
lijieamd 发表于 2013-5-10 22:44
原来楼主是个帅锅啊

兄弟这里水了一下啊

出0入0汤圆

发表于 2014-12-17 21:12:18 | 显示全部楼层
支持,谢谢!

出0入0汤圆

发表于 2014-12-18 15:17:57 | 显示全部楼层
楼主,PID具体是指的什么,想学习四轴,有哪些资料可以入门的?

出0入0汤圆

发表于 2014-12-18 15:18:59 | 显示全部楼层
好东西感谢楼主分享

出0入0汤圆

发表于 2014-12-18 16:41:08 | 显示全部楼层
大家活儿都好厉害啊 。我太佩服你们啦。膜拜ing....

出10入4汤圆

发表于 2014-12-18 17:02:51 | 显示全部楼层
不会调PID啊,好烦,

出0入0汤圆

发表于 2014-12-19 13:43:49 | 显示全部楼层
学习了,多谢            

出0入0汤圆

发表于 2016-1-4 17:35:26 | 显示全部楼层
小四轴PID调试

出0入0汤圆

发表于 2016-1-15 16:57:18 | 显示全部楼层
顶一下,麻烦问一下楼主要使四轴稳定飞行PID要怎么调啊,调了好久都没有成功

出0入0汤圆

发表于 2016-1-16 00:40:28 | 显示全部楼层
AMOBBS的高手真不少

出0入0汤圆

发表于 2019-5-16 08:09:38 | 显示全部楼层
mark,学习一下!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-4 05:08

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表