智能车制作

标题: 舵机打脚问题,用多少行的偏差,该怎么处理偏差,求平均? [打印本页]

作者: 蝶舞明月    时间: 2017-4-8 17:08
标题: 舵机打脚问题,用多少行的偏差,该怎么处理偏差,求平均?
郁闷。。。。。。。。。。

作者: yyuiopxx    时间: 2017-4-9 17:16
楼主都尝试算法,实践中得到真理。而且舵机打角不只与偏差求解有关,还与赛道的处理也有关系。
作者: 蝶舞明月    时间: 2017-4-9 20:29
yyuiopxx 发表于 2017-4-9 17:16
楼主都尝试算法,实践中得到真理。而且舵机打角不只与偏差求解有关,还与赛道的处理也有关系。



                __------__
              /~          ~\
             |    //^\\//^\|
           /~~\  ||  o| |o|:~\
          | |6   ||___|_|_||:|
           \__.  /      o  \/'
            |   (       O   )
   /~~~~\    `\  \         /
  | |~~\ |     )  ~------~`\
/' |  | |   /     ____ /~~~)\
(_/'   | | |     /'    |    ( |
       | | |     \    /   __)/ \
       \  \ \      \/    /' \   `\
         \  \|\        /   | |\___|
           \ |  \____/     | |
           /^~>  \        _/ <
          |  |         \       \
          |  | \        \        \
          -^-\  \       |        )
               `\_______/^\______/

实践是检验真理的唯一标准

作者: 笨小孩有梦想    时间: 2017-4-11 20:52
yyuiopxx 发表于 2017-4-9 17:16
楼主都尝试算法,实践中得到真理。而且舵机打角不只与偏差求解有关,还与赛道的处理也有关系。

大神,可以加个扣扣吗,真的想请教你一些问题,拜托了,现在有个完整的开环程序,输入后在赛道上舵机不转怎么回事呢

作者: yyuiopxx    时间: 2017-4-11 23:16
笨小孩有梦想 发表于 2017-4-11 20:52
大神,可以加个扣扣吗,真的想请教你一些问题,拜托了,现在有个完整的开环程序,输入后在赛道上舵机不转 ...

先确认一下舵机的硬件供应和配置是否正确,再来排除算法的问题。
作者: 2585341750    时间: 2017-4-12 00:43
如果是这种方式的话,行数不是问题,也不用纠结加权,只有远近重要
作者: 蝶舞明月    时间: 2017-4-12 12:48
2585341750 发表于 2017-4-12 00:43
如果是这种方式的话,行数不是问题,也不用纠结加权,只有远近重要

怎么说?

作者: 2585341750    时间: 2017-4-12 17:24
本帖最后由 2585341750 于 2017-4-12 17:33 编辑
蝶舞明月 发表于 2017-4-12 12:48
怎么说?

多少行怎么加权只是滤波而已,可能对小s有一些好处,但也可能把一些不该滤的滤掉。

真的能对小s起一定滤的作用的话,用的行数相当多了,如果没做逆变换的话,每行的距离一直在变,尤其后面几行每一行距离都很大,可能会影响你调远近的范围,同时也相当于单位距离的权在变动。
小s还是用其他手段处理比较好,大量加权效果其实很一般。

远近是最重要的东西,可以加快响应(相位前移),低通滤波(内切,小s更直)



作者: 八级大狂风    时间: 2017-4-12 17:33
2585341750 发表于 2017-4-12 00:43
如果是这种方式的话,行数不是问题,也不用纠结加权,只有远近重要

大神能加一个扣扣么

作者: 2585341750    时间: 2017-4-12 17:39
八级大狂风 发表于 2017-4-12 17:33
大神能加一个扣扣么

id就是qq……黑工院有个认识的人呢,maoshq

作者: 笨小孩有梦想    时间: 2017-4-12 22:14
yyuiopxx 发表于 2017-4-11 23:16
先确认一下舵机的硬件供应和配置是否正确,再来排除算法的问题。

大神请问一下我这个部分程序可有什么问题么
    //IO管脚配置
    gpio_init(MOTOR1_IO,GPO,LOW);
    gpio_init(MOTOR2_IO,GPO,LOW);
    gpio_init(MOTOR3_IO,GPO,LOW);
    gpio_init(MOTOR4_IO,GPO,LOW);
a=0;b=0;c=0;d=0;


    while(1)
    {

       ftm_quad_init(FTM2);                                    //FTM1 正交解码初始化                                                           //所用的管脚可查 port_cfg.h 的 FTM1_QDPHA_PIN 和 FTM1_QDPHB_PI
    pit_init_ms(PIT0, 100);                                 //初始化PIT0,定时时间为: 500ms
    set_vector_handler(PIT0_VECTORn ,PIT0_IRQHandler);      //设置PIT0的中断服务函数为 PIT0_IRQHandler
    enable_irq (PIT0_IRQn);                                 //使能PIT0中断
      for(K=0;K<5;K++)
{
         A[K]= adc_once   (AMP1, ADC_8bit);
         B[K]= adc_once   (AMP2, ADC_8bit);
         C[K]= adc_once   (AMP3, ADC_8bit);
         D[K]= adc_once   (AMP4, ADC_8bit);
}
        for(K=0;K<5;K++)
{
        a=a+A[K];
        b=b+B[K];
        c=c+C[K];
        d=d+D[K];
}
        e=(a+c)/60;
      f=(b+d)/60;
        h=e-f;
        j=f-e;
        i=150-h;

        if(h>=12)
{
          g=h*8;
}
        else if(j>=10)
        {
          g=j*8;
        }
            ftm_pwm_duty(MOTOR_FTM, MOTOR1_PWM,0);
        ftm_pwm_duty(MOTOR_FTM, MOTOR2_PWM,400-g);

         if((a+b+c+d)<=1200)
           {

            if((a+c)>=(b+d))
            {
             ftm_pwm_duty(S3010_FTM, S3010_CH,i-30);
             DELAY_MS(100);
           }
          if((a+c)<(b+d))
            {
             ftm_pwm_duty(S3010_FTM, S3010_CH,i+30);
             DELAY_MS(100);
           }
           }
            ftm_pwm_duty(S3010_FTM, S3010_CH,i);


     g=0;
  a=b=c=d=0;
    }

    }





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2