Chassis v2.1.1
Chassisはロボコンでの足回り制御を行うためのC++ライブラリである。
Loading...
Searching...
No Matches
Chassis.h
Go to the documentation of this file.
1#ifndef RCT_CHASSIS_H_
2#define RCT_CHASSIS_H_
7#include <CoordinateUnit.h>
8#include <Pid.h>
9
10#include <chrono>
11#include <cmath>
12#include <cstdint>
13#include <utility>
14
16namespace rct {
17
21
25template<class T>
26struct Chassis {
32 template<class F>
34 : t_{std::forward<F>(f)}, vel_pid_{vel_gain}, pos_pid_{pos_gain} {}
35
41 void pid_move(const Velocity& tag_vel, const Velocity& now_vel, const std::chrono::microseconds& delta_time,
42 float offset_rad = 0.0) {
43 const auto out_vel = vel_pid_.calc(tag_vel, now_vel, delta_time);
45 }
50 void auto_move(const Coordinate& dst, const Coordinate& pos, const std::chrono::microseconds& delta_time) {
51 const auto out_vel = pos_pid_.calc(dst, pos, delta_time) / std::chrono::seconds{1};
52 t_.move(out_vel, pos.ang_rad);
53 }
54
55 private:
56 T t_;
57 Pid<Velocity> vel_pid_;
58 Pid<Coordinate> pos_pid_;
59};
60
62
63} // namespace rct
64
65#endif // RCT_CHASSIS_H_
座標、速度を表す構造体 CoordinateUnit を提供する。
PID制御を行う Pid クラスを提供する。
robot control library
Definition Chassis.h:16
足回りの自動制御を行うクラス。
Definition Chassis.h:26
void auto_move(const Coordinate &dst, const Coordinate &pos, const std::chrono::microseconds &delta_time)
自動制御用。変位のPID制御を行い、出力をT型のcalcに渡す。
Definition Chassis.h:50
void pid_move(const Velocity &tag_vel, const Velocity &now_vel, const std::chrono::microseconds &delta_time, float offset_rad=0.0)
手動操縦用。速度のPID制御を行い、出力をT型のcalcに渡す
Definition Chassis.h:41
Chassis(F &&f, const PidGain &vel_gain, const PidGain &pos_gain)
コンストラクタ。T型をfで初期化し、変位と速度のPIDゲインをセットする。
Definition Chassis.h:33
N輪オムニの制御を行うクラス。
Definition Omni.h:25
void move(const Velocity &vel, const float offset_rad=0.0)
モータへのPWM出力を計算する。その後callback関数にPWM出力を渡す。
Definition Omni.h:43
PID制御のゲイン
Definition Pid.h:21