RMVL  2.5.0-dev
Robotic Manipulation and Vision Library
载入中...
搜索中...
未找到
rm::lpss::ctl::ControlLawBase类 参考abstract

【控制律组件】控制律基类,供 RobotController 组合调用 更多...

#include <rmvl/lpss/ctl/base.hpp>

类 rm::lpss::ctl::ControlLawBase 继承关系图:
rm::lpss::ctl::ControlLawBase 的协作图:

Public 类型

using ptr = std::unique_ptr<ControlLawBase>

Public 成员函数

virtual void reset () noexcept=0
 重置内部状态
ControlStatus compute (const msg::JointState &desired, const msg::JointState &fb, int32_t period, msg::JointState &command) noexcept
 执行一次控制计算

Protected 成员函数

virtual ControlStatus do_compute (const std::vector< double > &desired, const std::vector< double > &fb, int32_t period, std::vector< double > &command) noexcept=0
 纯虚的向量计算接口,由具体的控制律实现

详细描述

【控制律组件】控制律基类,供 RobotController 组合调用

控制律组件主要描述了如下图所示的控制计算逻辑

控制律组件框图

其中 \(X_{\mathrm{ref}}\) 和 \(X_{\mathrm{fb}}\) 分别是从输入采样映射函数提取的期望状态 desired 和反馈状态向量 fb, \(G_c(s)\) 是控制律组件实际实现的传递函数, \(X_{\mathrm{out}}\) 是控制律计算得到的控制命令向量,输出采样映射函数将其写回 command 的对应字段。用户可以通过组合不同的输入/输出映射函数和控制律组件实现来构建适合自己系统的控制方案。

成员类型定义说明

◆ ptr

成员函数说明

◆ compute()

ControlStatus rm::lpss::ctl::ControlLawBase::compute ( const msg::JointState & desired,
const msg::JointState & fb,
int32_t period,
msg::JointState & command )
noexcept

执行一次控制计算

  • 调用输入映射函数从 desiredfb 中提取向量对
  • 将提取的向量传递给虚函数 do_compute 进行实际脉冲传递函数计算
  • 调用输出映射函数将计算结果写回 command 的对应字段
参数
[in]desired当前时刻期望状态
[in]fb当前反馈状态
[in]period控制周期(毫秒)
[out]command控制命令输出
返回
控制计算状态
函数调用图:

◆ do_compute()

virtual ControlStatus rm::lpss::ctl::ControlLawBase::do_compute ( const std::vector< double > & desired,
const std::vector< double > & fb,
int32_t period,
std::vector< double > & command )
protectedpure virtualnoexcept

纯虚的向量计算接口,由具体的控制律实现

派生类需要实现此函数来执行实际的向量级脉冲传递函数计算

参数
[in]desired期望状态向量
[in]fb反馈状态向量
[in]period控制周期(毫秒)
[out]command控制命令输出向量
返回
控制计算状态

rm::lpss::ctl::FeedForward, rm::lpss::ctl::PID , 以及 rm::lpss::ctl::UnitTF 内被实现.

函数调用图:

◆ reset()

virtual void rm::lpss::ctl::ControlLawBase::reset ( )
pure virtualnoexcept

重置内部状态

常用于轨迹切换、故障恢复或重新使能时清空积分器/观测器状态

rm::lpss::ctl::FeedForward , 以及 rm::lpss::ctl::PID 内被实现.