Skip to content

DFOC_M0_set_Velocity_Angle 代码bug #2

@Tony607

Description

@Tony607

DFOC_M0_set_Velocity_Angle函数中DFOC_M0_VEL_PID函数的输入应该是DFOC_M0_ANGLE_PID的输出(即期望的速度)减去当前的速度,这样才是正确的双环控制策略。
因此,DFOC_M0_set_Velocity_Angle函数可以修改为如下形式:

void DFOC_M0_set_Velocity_Angle(float Target)
{
  float sensor_angle = DFOC_M0_Angle();
  float sensor_vel = DFOC_M0_Velocity();
  float target_vel = DFOC_M0_ANGLE_PID((Target - sensor_angle)*180/PI);
  setTorque(DFOC_M0_VEL_PID(target_vel - sensor_vel), _electricalAngle());
}

函数首先计算出当前的角度和速度,然后将角度误差输入到角度环PID控制器,得到期望的速度。再将期望的速度和当前的速度做差,得到速度误差,再输入到速度环PID控制器,得到最终的输出。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions