6脚ロボットが有効な姿勢をとっているかを チェックする処理のインターフェース.
virtual float CalculateStabilityMargin(const leg_func::LegStateBit &leg_state, const std::array< Vector3, HexapodConst::kLegNum > &leg_pos) const =0
安定余裕(Stability Margin)を計算する. 詳しくは「不整地における歩行機械の静的安定性評価基準」 という論文を読んで欲しい. 接地脚を繋いで作られる多角形の辺と重心の距離の最小値を計...
virtual ~IHexapodPostureValidator()=default
bool IsAllLegInRange(const leg_func::LegStateBit leg_state, const std::array< Vector3, HexapodConst::kLegNum > &leg_pos) const
全ての脚が可動範囲内にあるかどうかを判定する.
virtual bool IsLegInterfering(const std::array< Vector3, HexapodConst::kLegNum > &leg_pos) const =0
脚が他の脚と干渉しているかどうかを判定する.
virtual bool IsLegInRange(const int leg_index, const Vector3 &leg_pos) const =0
脚が可動範囲内にあるかどうかを判定する.
virtual bool IsBodyInterferingWithGround(const RobotStateNode &node, const DividedMapState ÷d_map) const =0
胴体が地面と干渉しているかどうかを判定する.
virtual bool IsStable(const leg_func::LegStateBit &leg_state, const std::array< Vector3, HexapodConst::kLegNum > &leg_pos) const =0
安定余裕を用いて,静的に安定しているかどうかを判定する.
bool IsGrounded(const LegStateBit &leg_state, const int leg_index)
脚番号 leg_index 0 ~ 5 に応じて,その脚が接地しているかを調べる. 脚は右前脚を0番として,時計回りに0,1,2,3,4,5となる.左前足が5番.