Skip to content

Latest commit

 

History

History
68 lines (54 loc) · 1.89 KB

File metadata and controls

68 lines (54 loc) · 1.89 KB

进阶教程

创建自己的控制器(Controller)

首先你需要引入controller.hpp,你的控制器需要public继承控制器类Controller

你的控制器会从Controller继承得到

  • out,一个float变量,用来存放控制器的输出
  • set(float x), 一个纯虚函数,需要由你自己重载,用来进行控制器的计算

你的控制器需要做

  • 重载实现set函数,并在set中对out变量进行赋值,存放输出
  • 重载实现虚析构器,一般只要设为default即可

下面是一个控制器例子,这个例子只是把输入乘以某个系数并输出

class Mul : public Controller {
public:
    float k = 0;
    
    Mul(float k_) : k(k_) {}
    
    void set(float x) override {
        out = x * k;
    }
    
    ~Mul() override = default;
};

随后我们就可以尝试使用它

Mul mul(2.21);
std::cout << (2 >> mul) << std::endl;

可以得到4.42的输出

创建自己的执行器(Actuator)

首先你需要引入actuator.hpp,你的执行器需要public继承执行器类Actuator

你的执行器会从Actuator继承得到

  • set_directly(float x),一个纯虚函数,需要由你自己重载,用来调用执行器执行

你的执行器需要做

  • 重载实现set_directly函数,在该函数中将传入的值输出给物理执行器
  • 重载实现虚析构器,一般只要设为default即可

下面是一个执行器例子,这个例子只是把输入通过cout输出

class Output : public Actuator {
public:
    void set_directly(float x) override {
        std::cout << "get: " << x << std::endl;
    }
    ~Output() override = default;
};

尝试和控制器一同使用

Mul mul(2.21);
Output output;
2 >> mul >> output;

可以得到get: 4.42的输出

以上的demo位于demo/demo4

创建自己的IO接口

请参阅tutorials/io