test

Dependencies:   mbed ros_lib_kinetic nhk19mr2_can_info splitData SerialHalfDuplex_HM

Committer:
yuto17320508
Date:
Thu Feb 14 09:04:25 2019 +0000
Revision:
18:0033ef1814ba
Parent:
14:d7cb429946f4
Child:
19:1adc7302cfd9
move

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shimizuta 11:e81425872740 1 #ifndef INCLUDED_WALK_H
shimizuta 11:e81425872740 2 #define INCLUDED_WALK_H
shimizuta 11:e81425872740 3 #include "OneLeg.h"
shimizuta 14:d7cb429946f4 4 enum OrbitPattern
shimizuta 14:d7cb429946f4 5 {
shimizuta 14:d7cb429946f4 6 ELLIPSE,
shimizuta 14:d7cb429946f4 7 };
yuto17320508 13:e7ecdb20665a 8 //足の軌道を設定するクラス。軌道は様々であることを考慮してコンストラクタでの代入は控えたい
shimizuta 11:e81425872740 9 class Orbit
shimizuta 11:e81425872740 10 {
shimizuta 14:d7cb429946f4 11 OrbitPattern orbitType_;
shimizuta 11:e81425872740 12 float stridetime_s_;
shimizuta 11:e81425872740 13 float risetime_s_;
shimizuta 11:e81425872740 14 float stride_m_;
shimizuta 14:d7cb429946f4 15 float height_m_; //足の上げ幅
shimizuta 14:d7cb429946f4 16 float ground_m_; //着地するときの高さ
yuto17320508 18:0033ef1814ba 17 float offset_x_m_;
shimizuta 14:d7cb429946f4 18 OneLeg StrideLine_(OneLeg leg, float phasetime_s); //時間をもとに位置を取得したインスタンスを直接返して代入させる
shimizuta 11:e81425872740 19 OneLeg RiseEllipse_(OneLeg leg, float phasetime_s);
shimizuta 14:d7cb429946f4 20 OneLeg OrbitEllipse_(OneLeg leg, float phasetime_s); //Stride, Riseを組み合わせて周期を作る
shimizuta 11:e81425872740 21
shimizuta 11:e81425872740 22 public:
shimizuta 11:e81425872740 23 Orbit(){};
yuto17320508 13:e7ecdb20665a 24 //コンストラクタは代入のみ
shimizuta 14:d7cb429946f4 25 Orbit(OrbitPattern orbitType);
yuto17320508 13:e7ecdb20665a 26 //このクラスのメイン privateへのアクセス関数
shimizuta 11:e81425872740 27 OneLeg GetOrbit(OneLeg leg, float phasetime_s);
yuto17320508 18:0033ef1814ba 28 void SetStraightParam(float stridetime_s, float risetime_s, float stride_m, float height_m, float ground_m);
yuto17320508 18:0033ef1814ba 29 void SetStraightParam(float stridetime_s, float risetime_s, float stride_m, float height_m, float ground_m, float offset_x_m);
shimizuta 11:e81425872740 30 float GetOneWalkTime(); //足一周の時間
shimizuta 11:e81425872740 31 };
shimizuta 11:e81425872740 32
shimizuta 11:e81425872740 33 //4足の足の動かし方を保存するクラス
shimizuta 11:e81425872740 34 class Walk
shimizuta 11:e81425872740 35 {
shimizuta 11:e81425872740 36 float phasetime_s_;
shimizuta 11:e81425872740 37 float offsettime_s_[4];
shimizuta 11:e81425872740 38
shimizuta 11:e81425872740 39 public:
yuto17320508 13:e7ecdb20665a 40 //4脚の軌道, 位相を代入して歩行方法を確定する
yuto17320508 13:e7ecdb20665a 41 //コンストラクタではメンバの代入のみ行っている
shimizuta 11:e81425872740 42 Walk(Orbit orbit[4], float offsettime_s[4], float cycletime_s);
shimizuta 14:d7cb429946f4 43 float cycletime_s_; //計算周期
shimizuta 11:e81425872740 44 Orbit orbit_[4];
yuto17320508 13:e7ecdb20665a 45 //参照渡しされたonelegそれぞれにorbit_::GetOrbit関数を代入
yuto17320508 13:e7ecdb20665a 46 //GetOrbit関数にて軌道, 時間をもとに位置を決める
yuto17320508 13:e7ecdb20665a 47 //直接参照しているのはこの関数だけ
shimizuta 11:e81425872740 48 void Cal4LegsPosi(OneLeg (&leg)[4]);
shimizuta 11:e81425872740 49 };
shimizuta 11:e81425872740 50 #endif