智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1197|回复: 0
打印 上一主题 下一主题

电磁组舵机控制的进来看一下

[复制链接]

1

主题

93

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1268

活跃会员奖章

威望
882
贡献
268
兑换币
157
注册时间
2014-1-8
在线时间
59 小时
跳转到指定楼层
1#
发表于 2014-7-8 02:57:52 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
不知道有人参考国防科技大学铁军二师的技术报告,小弟略有点不懂   想请教一下,主要是这个位置解算算法有几个值不知道是什么意思

void Getanticipateposition1(void)                //获取小车运行期望位置(用双排X Y进行决策,X用多项式插值)
{
    uint8 i,num;
       
        for(i=99;i>0;i--)
    {
       position1[i]=position1[i-1];
    }
    a=-0.0007*ADx1[0]+0.0013*ADx1[1]-0.0013*ADx1[2]+0.0007*ADx1[3];

    b=0.0067*ADx1[0]-0.0067*ADx1[1]-0.0067*ADx1[2]+0.0067*ADx1[3];
    c=0.0167*ADx1[0]-0.1333*2.0*ADx1[1]+0.1333*2.0*ADx1[2]-0.0167*ADx1[3];
    //a=a*100.00;
    lmax=ADx1[0];                            //取最大值
    num=0;
    for(i=1;i<4;i++)
    {
        if(ADx1[i]>lmax)
        {
          lmax=ADx1[i];
          num=i;
        }
    }
    switch(num)
        {
        case 0: //if(ADx1[0]-ADx1[1]>4)
          if(ADx1[0]-ADx1[1]>4)
                        {
                            gp=(ADx1[1]-132.7)/5.975;
                            position1[0]=gp;
                            if(position1[0]<-15)
                            position1[0]=-15;                
                        }
                        else
                        {
                          p1=(-2.0*b+sqrt(4.0*b*b-12.0*a*c))/(6.0*a);
                           p2=(-2.0*b-sqrt(4.0*b*b-12.0*a*c))/(6.0*a);
                           p3=6.0*p1*a+2.0*b;
                           if(p3<0)
                                  position1[0]=p1;
                           else
                                  position1[0]=p2;
                        }

                        break;

        case 1: p1=(-2.0*b+sqrt(4.0*b*b-12.0*a*c))/(6.0*a);
            p2=(-2.0*b-sqrt(4.0*b*b-12.0*a*c))/(6.0*a);
            p3=6.0*p1*a+2.0*b;
            if(p3<0)
              position1[0]=p1;
            else
              position1[0]=p2;
                        break;

        case 2: p1=(-2.0*b+sqrt(4.0*b*b-12.0*a*c))/(6.0*a);
            p2=(-2.0*b-sqrt(4.0*b*b-12.0*a*c))/(6.0*a);
                        p3=6.0*p1*a+2.0*b;
                        if(p3<0)
                          position1[0]=p1;
                        else
              position1[0]=p2;
                        break;

        case 3: //if(ADx1[3]-ADx1[2]>4)
          if(ADx1[3]-ADx1[2]>4)
                        {
                           gp=(132.7-ADx1[2])/5.975;              //同上
                           position1[0]=gp;
                           if(position1[0]>15)
                                 position1[0]=15;
                        }
                        else
                        {
                           p1=(-2.0*b+sqrt(4.0*b*b-12.0*a*c))/(6.0*a);
                           p2=(-2.0*b-sqrt(4.0*b*b-12.0*a*c))/(6.0*a);
                           p3=6.0*p1*a+2.0*b;
                           if(p3<0)
                                  position1[0]=p1;
                           else
                                  position1[0]=p2;
                        }
                        break;

        }
    psum=ADx1[0]+ADx1[1]+ADx1[2]+ADx1[3];
    if(psum<65)    //这个量也需要重新测定
    {
        if(position1[1]<-5)
            position1[0]=-15;
        else if(position1[1]>5)
            position1[0]=15;
        paopianflag=1;
    }
    else
    {
        paopianflag=0;
    }

        if(position1[0]>15)
                position1[0]=15;
        if(position1[0]<-15)
                position1[0]=-15;
       
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-7 23:49 , Processed in 0.036543 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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