test

Dependencies:   mbed ros_lib_kinetic nhk19mr2_can_info splitData SerialHalfDuplex_HM

Walk/Walk.h

Committer:
yuto17320508
Date:
2019-02-12
Revision:
13:e7ecdb20665a
Parent:
11:e81425872740
Child:
14:d7cb429946f4

File content as of revision 13:e7ecdb20665a:

#ifndef INCLUDED_WALK_H
#define INCLUDED_WALK_H
#include "OneLeg.h"

//足の軌道を設定するクラス。軌道は様々であることを考慮してコンストラクタでの代入は控えたい
class Orbit
{
    int orbitType;
    float stridetime_s_;
    float risetime_s_;
    float stride_m_;
    float height_m_; //足の上げ幅
    float ground_m_; //着地するときの高さ
    OneLeg StrideLine_(OneLeg leg, float phasetime_s);//時間をもとに位置を取得したインスタンスを直接返して代入させる
    OneLeg RiseEllipse_(OneLeg leg, float phasetime_s);
    OneLeg OrbitEllipse_(OneLeg leg, float phasetime_s);//Stride, Riseを組み合わせて周期を作る

  public:
    Orbit(){};
    //コンストラクタは代入のみ
    Orbit(int orbitType);
    //このクラスのメイン privateへのアクセス関数
    OneLeg GetOrbit(OneLeg leg, float phasetime_s);
    
    void SetStraightParam(float stridetime_s, float risetime_s, float stride_m, float height_m, float ground_m);
    float GetOneWalkTime(); //足一周の時間
};

//4足の足の動かし方を保存するクラス
class Walk
{
    float phasetime_s_;
    float offsettime_s_[4];

  public:
    //4脚の軌道, 位相を代入して歩行方法を確定する
    //コンストラクタではメンバの代入のみ行っている
    Walk(Orbit orbit[4], float offsettime_s[4], float cycletime_s);
    float cycletime_s_;//計算周期
    Orbit orbit_[4];
    //参照渡しされたonelegそれぞれにorbit_::GetOrbit関数を代入
    //GetOrbit関数にて軌道, 時間をもとに位置を決める
    //直接参照しているのはこの関数だけ
    void Cal4LegsPosi(OneLeg (&leg)[4]);
};
#endif