Skip to content

Commit

Permalink
DCM PID
Browse files Browse the repository at this point in the history
  • Loading branch information
MarcDcls committed Feb 6, 2025
1 parent 19dec83 commit 53249d0
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 0 deletions.
14 changes: 14 additions & 0 deletions src/placo/humanoid/walk_tasks.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,20 @@ void WalkTasks::remove_tasks()
}
}

void WalkTasks::update_tasks_and_pid(WalkPatternGenerator::Trajectory& trajectory, double t, Eigen::Vector2d dcm, double omega, double elapsed)
{
Eigen::Vector2d error = dcm - trajectory.get_p_world_DCM(t + com_delay, omega);
integral = (1.0 - lambda) * integral + error * elapsed;
Eigen::Vector2d derivative = (error - last_error) / elapsed;
last_error = error;

Eigen::Vector2d com_offset = K_p * error + K_i * integral + K_d * derivative;

update_tasks(trajectory.get_T_world_left(t), trajectory.get_T_world_right(t),
trajectory.get_p_world_CoM(t + com_delay) + Eigen::Vector3d(com_offset[0], com_offset[1], 0.),
trajectory.get_R_world_trunk(t));
}

std::map<std::string, Eigen::Vector3d> WalkTasks::get_tasks_error()
{
std::map<std::string, Eigen::Vector3d> error;
Expand Down
11 changes: 11 additions & 0 deletions src/placo/humanoid/walk_tasks.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,16 @@ class WalkTasks
double com_delay = 0.;
double com_x = 0.;
double com_y = 0.;

// DCM error PID
void update_tasks_and_pid(WalkPatternGenerator::Trajectory& trajectory, double t, Eigen::Vector2d dcm, double omega, double elapsed);

double K_p = 0.;
double K_i = 0.;
double K_d = 0.;

double lambda = 0.01;
Eigen::Vector2d integral;
Eigen::Vector2d last_error;
};
} // namespace placo::humanoid

0 comments on commit 53249d0

Please sign in to comment.