请问能帮忙解答这段程序的意义吗

2019-07-14 14:11发布

        ;程序的目的时求得两个轮子的速度矢量,但是却不知道为何是这样
    speed.left =tiM_GetCounter(TIM3)-0x7fff;
            speed.right=TIM_GetCounter(TIM4)-0x7fff;/

            speed.average*=0.7;
            speed.average+=((float)(speed.left+speed.right))*0.5*0.3        
                         TIM_SetCounter(TIM3, 0x7fff);
                  TIM_SetCounter(TIM4, 0x7fff);                                               
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
naiztycheng
2019-07-15 04:12
显然程序应该设置TIM3和TIM7为编码器模式。而且设置初始值为0x7fff为初始值。应该是为了确定是正转还是反转。两个定时器分别记录一路的counter。正如代码注释一样一个是左轮,一个是右轮。

然后我们这里记speed.average为VA,左右轮的叫做Vl和Vr。
那么每一次更新后
VA_k = Kp * VA_(k-1) + (1 - Kp) *(Vl_k + Vr_k)/2
这里的Kp是0.7

那么这里的VA到底是干什么用的呐?是用来计算Vx和Vy以及Phi呐还是什么。就需要你提供如何利用VA的那段代码

一周热门 更多>