GaitGeneration by Graph Search
読み取り中…
検索中…
一致する文字列を見つけられません
名前空間 | 型定義 | 関数 | 変数
leg_state.h ファイル
#include <array>
#include <bitset>
#include <vector>
#include "discrete_com_pos.h"
#include "discrete_leg_pos.h"
#include "hexapod_const.h"

[ソースコード]

名前空間

namespace  designlab::leg_func
 このプログラムでは脚状態をビット(28bit)の情報で表す. そのデータを処理するための関数.
 
namespace  designlab
 

型定義

using designlab::leg_func::LegStateBit = std::bitset< kLegStateBitNum >
 脚状態を保存する型.28bitのビット型.
 
using designlab::leg_func::LegGroundedBit = std::bitset< HexapodConst::kLegNum >
 脚の遊脚・接地を表す型.6bitのビット型.接地が 1 遊脚が 0.
 

関数

constexpr LegStateBit designlab::leg_func::kLegPosMaskBit (0b0111)
 脚位置は4bitの下位三桁で管理されるので,そこをマスクする.
 
constexpr LegStateBit designlab::leg_func::kLegStateMaskBit (0b1111)
 脚状態は4bitで管理されるので,そこをマスクする.
 
LegStateBit designlab::leg_func::MakeLegStateBit (enums::DiscreteComPos discrete_com_pos, const std::array< bool, HexapodConst::kLegNum > &is_ground, const std::array< enums::DiscreteLegPos, HexapodConst::kLegNum > &leg_pos)
 脚状態を作成して返す関数.脚状態は重心パターン, 脚の接地・遊脚,離散化した脚位置のデータが含まれる.
 
bool designlab::leg_func::IsGrounded (const LegStateBit &leg_state_bit, int leg_index)
 脚番号 leg_index 0 ~ 5 に応じて,その脚が接地しているかを調べる.
脚は右前脚を0番として,時計回りに0,1,2,3,4,5となる.左前足が5番.
 
LegGroundedBit designlab::leg_func::GetLegGroundedBit (const LegStateBit &leg_state)
 脚が接地しているなら1,遊脚を0としたビット列で遊脚・接地脚の状態を返す.
例えば 0 番脚のみが遊脚しているなら 0b111 110 を返す.
 
int designlab::leg_func::GetGroundedLegNum (const LegStateBit &leg_state)
 接地している脚の本数を返す関数.
 
int designlab::leg_func::GetLiftedLegNum (const LegStateBit &leg_state)
 遊脚している脚の本数を返す関数.
 
void designlab::leg_func::GetGroundedLegIndexByVector (const LegStateBit &leg_state, std::vector< int > *res_index)
 接地している脚の脚番号0~5を,引数で参照渡しする関数.
 
void designlab::leg_func::GetLiftedLegIndexByVector (const LegStateBit &leg_state, std::vector< int > *res_index)
 遊脚している脚の脚番号0~5を,引数_res_numberで参照渡しする関数.
 
enums::DiscreteLegPos designlab::leg_func::GetDiscreteLegPos (const LegStateBit &leg_state, int leg_index)
 脚状態を取得する.
 
enums::DiscreteComPos designlab::leg_func::GetDiscreteComPos (const LegStateBit &leg_state)
 現在の脚状態から重心パターンを取得する.
 
void designlab::leg_func::ChangeLegState (int leg_index, enums::DiscreteLegPos new_discretized_leg_pos, bool is_ground, LegStateBit *leg_state)
 脚の情報を変更する.
 
void designlab::leg_func::ChangeDiscreteLegPos (int leg_index, enums::DiscreteLegPos new_discretized_leg_pos, LegStateBit *leg_state)
 脚の状態を変更する.遊脚を表すビットはそのまま.
 
void designlab::leg_func::ChangeGround (int leg_index, bool is_ground, LegStateBit *leg_state)
 脚の接地・遊脚情報を変更する.
 
void designlab::leg_func::ChangeAllLegGround (const LegGroundedBit &is_ground_list, LegStateBit *leg_state)
 全ての脚の接地・遊脚情報を変更する.
 
void designlab::leg_func::ChangeDiscreteComPos (enums::DiscreteComPos new_com_pattern, LegStateBit *leg_state)
 重心のデータを変更する.
 

変数

constexpr int designlab::leg_func::kLegPosBitNum = 4
 脚位置を表すビット数.離散化された脚位置は3bit,遊脚・接地は1bit.あわせて4bit.
 
constexpr int designlab::leg_func::kComPosBitNum = 4
 重心パターンを表すビット数.
 
constexpr int designlab::leg_func::kLegStateBitNum = HexapodConst::kLegNum * kLegPosBitNum + kComPosBitNum
 脚状態を保存するビット数.28bit.
 
constexpr int designlab::leg_func::kShiftToComNum = HexapodConst::kLegNum * 4
 重心パターンを保存するビットまで行くために,どれだけビットをシフトするか.
 
constexpr LegStateBit designlab::leg_func::kComStateMaskBit = (0b1111 << kShiftToComNum)
 重心パターンを保存するビットをマスクするビット.