CrawlLibrary  v2.0.2
Omnimentの教育用ロボットCrawlのライブラリ
 全て クラス 関数
crawl.h
1 
8 #ifndef INCLUDED_Crawl_h
9 #define INCLUDED_Crawl_h
10 #include <Arduino.h>
11 
19  protected:
21  float dt;
23  float T;
25  float y;
27  public:
41  void setDt(float dt);
48  void setT(float T);
49 
56  float getOutput();
65  float calculate(float x);
66 };
67 
77 
78  float y;
80  public:
89  float calculate(float x);
96  float getOutput();
97 };
110 class Integral {
111  public:
119  Integral();
126  void setDt(float dt);
135  void setOutput(float y);
146  void setLimit(float limit_low, float limit_high);
155  void calculate(float x);
162  float getOutput();
163 
165 
166  float y;
168  float limit_low;
170  float limit_high;
172  float dt;
174 };
180 class CrlRobot {
181  public:
195  void init();
208  void realtimeLoop();
224  void setDt(float dt);
235  void setKalman(bool enable_kalman);
242  float getThetaX();
249  float getThetaY();
256  float getThetaZ();
267  float getHeadVelocity();
268 
275  float getAccX();
282  float getAccY();
289  float getAccZ();
296  float getThetaDotX();
303  float getThetaDotY();
310  float getThetaDotZ();
319  float getEncoderLeft();
328  float getEncoderRight();
337  float getOdometryLeft();
346  float getOdometryRight();
357  void setMotorLeft(float motor_left);
368  void setMotorRight(float motor_right);
375  void resetEncoderLeft();
382  void resetEncoderRight();
394  void updateState();
395 
397 
398  float dt;
400  int dt_us;
402  float theta;
403 
405  float head_velocity;
406 
408  float acc_x;
410  float acc_y;
412  float acc_z;
414  float theta_dot_x;
416  float theta_dot_y;
418  float theta_dot_z;
420  float offset_gx;
422  float offset_gy;
424  float offset_gz;
426  float motor_left;
428  float motor_right;
430  float encoder_left;
432  float encoder_right;
434  unsigned long t1;
436  unsigned long t2;
438  unsigned long tt;
440  float kEtoMM;
442  bool enable_kalman;
445  float rate_theta;
447  FirstOrderFilter fof_acc_x;
449  FirstOrderFilter fof_acc_y;
451  FirstOrderFilter fof_acc_z;
453  LaggedDerivative ld_odometry;
454 
462  void calcTheta();
469  void calcThetaKalmanFilter();
476  void makeTiming();
484  void calcState();
485 
493  void calcHeadVelocity();
502  void initGyroOffset();
511  void initTheta();
513 };
514 
516 extern CrlRobot crl;
517 
518 #endif
float getEncoderLeft()
左エンコーダの値を取得する
void setDt(float dt)
ループ間隔を設定する
void calculate(float x)
入力から出力を計算する
制限付き積分要素クラス
Definition: crawl.h:110
クロールに対して指令を出す,クロールの持っているセンサの情報を取得するためのクラス.
Definition: crawl.h:180
void init()
クロールの初期化
float getAccY()
Y軸方向の加速度を取得する
void setMotorLeft(float motor_left)
左モーターの出力を設定
float getThetaDotY()
Y軸周りの角速度を取得する
void setOutput(float y)
出力される積分値を設定する
void setKalman(bool enable_kalman)
センサヒュージョンの方法を設定する
float calculate(float x)
入力から出力を計算する
float getEncoderRight()
右エンコーダの値を取得する
void setDt(float dt)
サンプリングタイムを設定する
FirstOrderFilter()
コンストラクタ
float getOdometryLeft()
左クローラの進んだ距離の値を取得する
void resetEncoderRight()
右エンコーダの累積値を0に設定する
void resetEncoderLeft()
左エンコーダの累積値を0に設定する
void updateState()
クロールの状態を更新
void setMotorRight(float motor_right)
右モーターの出力を設定
float getThetaDotX()
X軸周りの角速度を取得する
float getAccZ()
Z軸方向の加速度を取得する
float getOutput()
出力値を取得する
float getOdometryRight()
右クローラの進んだ距離を取得する
void realtimeLoop()
ループが一定間隔になるよう調節する
void setDt(float dt)
サンプリングタイムを設定する
float getHeadVelocity()
倒立時のクロール上端の速度を取得する
float getThetaDotZ()
Z軸周りの角速度を取得する
void setLimit(float limit_low, float limit_high)
積分の制限値を設定する
float getThetaZ()
Z軸周りの姿勢角度を取得する
Integral()
コンストラクタ
float getThetaY()
Y軸周りの姿勢角度を取得する
void setT(float T)
時定数を設定する
float getThetaX()
X軸周りの姿勢角度を取得する
float calculate(float x)
入力から出力を計算する
float getOutput()
不完全微分した値を取得する
不完全微分要素クラス.
Definition: crawl.h:75
一次遅れフィルタークラス.
Definition: crawl.h:17
float getAccX()
X軸方向の加速度を取得する
float getOutput()
制限付き積分した値を取得する