![]() |
RMVL
2.5.0-dev
Robotic Manipulation and Vision Library
|
【控制律组件】单环离散比例-积分-微分控制器 更多...
#include <rmvl/lpss/ctl/pid.hpp>
Public 成员函数 | |
| void | reset () noexcept override |
| 重置状态 | |
| ControlStatus | do_compute (const std::vector< double > &desired, const std::vector< double > &fb, int32_t period, std::vector< double > &command) noexcept override |
| 执行一次控制计算 | |
| Public 成员函数 继承自 rm::lpss::ctl::ControlLawBase | |
| ControlStatus | compute (const msg::JointState &desired, const msg::JointState &fb, int32_t period, msg::JointState &command) noexcept |
| 执行一次控制计算 | |
静态 Public 成员函数 | |
| static ControlLawBase::ptr | create (const std::vector< double > &kp, const std::vector< double > &ki, const std::vector< double > &kd, InSampleMapping imapping=basic_pos_imapping, OutSampleMapping omapping=basic_pos_omapping) noexcept |
| 创建单环离散 PID 控制器实例 | |
额外继承的成员函数 | |
| Public 类型 继承自 rm::lpss::ctl::ControlLawBase | |
| using | ptr = std::unique_ptr<ControlLawBase> |
【控制律组件】单环离散比例-积分-微分控制器
对于连续系统中,PID 的传递函数表示为
\[G(s)=K_p+\frac{K_i}s+K_ds\tag1\]
将上式与零阶保持器 ZOH 进行串联,可以得到在离散系统中的脉冲传递函数:
\[\begin{aligned}G(z)&=\mathcal{Z}\left\{\frac{1-e^{sT}}s\left(K_p+\frac{K_i}s+K_ds\right)\right\}\\&=K_p+\frac{K_iTz^{-1}}{1-z^{-1}}+K_d \left(1-z^{-1}\right)\end{aligned}\tag2\]
转换为差分方程的形式为
\[u[k]-u[k-1]=(K_p+K_d)x[k]+(K_iT-K_p-2K_d)x[k-1]+K_dx[k-2]\tag3\]
其中, \(u[k]\) 是控制输出, \(x[k]\) 是系统的误差输入, \(T\) 是采样周期。PID 控制器的设计参数为比例增益 \(K_p\)、积分增益 \(K_i\) 和微分增益 \(K_d\),通过调整它们可以实现对系统动态性能的优化。
|
inlinestaticnoexcept |
|
overridevirtualnoexcept |
执行一次控制计算
| [in] | desired | 当前时刻期望状态向量 |
| [in] | fb | 当前反馈状态向量 |
| [in] | period | 控制周期(毫秒) |
| [out] | command | 控制命令输出向量 |
实现了 rm::lpss::ctl::ControlLawBase.
|
overridevirtualnoexcept |
重置状态