GKD.RoboCtrl
载入中...
搜索中...
未找到
roboctrl::utils::ramp< T > 模板类 参考

一阶斜坡控制器 (Ramp) 更多...

详细描述

template<std::floating_point T>
class roboctrl::utils::ramp< T >

一阶斜坡控制器 (Ramp)

ramp 控制器用于限制输出变化速率,使系统输出以设定的最大速度逐步逼近目标输入。 该控制器常用于以下场景:

  • 电机转速平滑控制(防止瞬间加速导致电流冲击)
  • 舵机或云台角度渐变控制(防止机械震动)
  • 电流、电压缓启动控制

控制逻辑:

\[ \Delta y = \text{sign}(x_{\text{target}} - y_{\text{out}}) \times \min(|x_{\text{target}} - y_{\text{out}}|, a_{\max} \cdot \Delta t) \]

其中:

  • \( x_{\text{target}} \):输入目标
  • \( y_{\text{out}} \):当前输出
  • \( a_{\max} \):最大速度变化率(单位/秒)
  • \( \Delta t \):两次调用间隔时间(秒)
模板参数
T数值类型(例如 float 或 double)
注解
本类使用 std::chrono::steady_clock 计时,不受系统时间调整影响。

在文件 ramp.hpp38 行定义.

#include <ramp.hpp>

struct  params_type
 参数结构体 更多...
 

Public 类型

using input_type = T
 输入类型:目标值
 
using state_type = T
 状态类型:当前输出值
 

Public 成员函数

 ramp (const params_type &params)
 构造函数
 
void update (T target) noexcept
 更新输出值
 
void set_acc (T new_acc) noexcept
 修改最大变化速率
 
void reset () noexcept
 清零输出值
 
void reset (T value) noexcept
 设置输出初值
 
state_type state () const noexcept
 获取当前输出状态
 

成员类型定义说明

◆ input_type

template<std::floating_point T>
using roboctrl::utils::ramp< T >::input_type = T

输入类型:目标值

在文件 ramp.hpp48 行定义.

◆ state_type

template<std::floating_point T>
using roboctrl::utils::ramp< T >::state_type = T

状态类型:当前输出值

在文件 ramp.hpp49 行定义.

构造及析构函数说明

◆ ramp()

template<std::floating_point T>
roboctrl::utils::ramp< T >::ramp ( const params_type params)
inlineexplicit

构造函数

参数
[in]params斜坡控制参数(最大变化速率)
注解
初始化时会记录当前系统时间,用于后续计算时间差。

在文件 ramp.hpp60 行定义.

成员函数说明

◆ reset() [1/2]

template<std::floating_point T>
void roboctrl::utils::ramp< T >::reset ( )
inlinenoexcept

清零输出值

注解
输出会被设为 0。

在文件 ramp.hpp102 行定义.

◆ reset() [2/2]

template<std::floating_point T>
void roboctrl::utils::ramp< T >::reset ( value)
inlinenoexcept

设置输出初值

参数
[in]value初始输出值

在文件 ramp.hpp108 行定义.

◆ set_acc()

template<std::floating_point T>
void roboctrl::utils::ramp< T >::set_acc ( new_acc)
inlinenoexcept

修改最大变化速率

参数
[in]new_acc新的最大变化速率 (单位/秒)

在文件 ramp.hpp96 行定义.

◆ state()

template<std::floating_point T>
state_type roboctrl::utils::ramp< T >::state ( ) const
inlinenoexcept

获取当前输出状态

返回
当前输出值

在文件 ramp.hpp114 行定义.

◆ update()

template<std::floating_point T>
void roboctrl::utils::ramp< T >::update ( target)
inlinenoexcept

更新输出值

计算当前到目标值的差,并根据时间差 \(\Delta t\) 和最大速率限制 \(a_{\max}\), 按照下式调整输出:

\[ y_{\text{out}}(t + \Delta t) = y_{\text{out}}(t) + \text{sign}(x_{\text{target}} - y_{\text{out}}(t)) \times \min(|x_{\text{target}} - y_{\text{out}}(t)|, a_{\max} \cdot \Delta t) \]

参数
[in]target输入目标值

< 两次更新间隔时间(秒)

在文件 ramp.hpp76 行定义.

引用了 roboctrl::utils::now().


该类的文档由以下文件生成: