GaitGeneration by Graph Search
読み取り中…
検索中…
一致する文字列を見つけられません
公開メンバ関数 | 静的公開メンバ関数 | 静的公開変数類 | 全メンバ一覧
designlab::DividedMapState クラスfinal

マップを格子状に分割して管理するクラス. [詳解]

#include <divided_map_state.h>

公開メンバ関数

 DividedMapState (float min_z=MapState::kMapMinZ)
 
void Init (const MapState &map_state, const Vector3 global_robot_com)
 マップのデータを初期化する. ロボットの重心座標を中心にマップのデータを格子状に分割し, その中に存在する脚設置可能点を集める.
 
void Clear ()
 マップのデータを消去する.
 
constexpr bool IsInMap (const float x, const float y) const
 指定した座標がマップの範囲内に存在するかどうかを返す.
 
constexpr bool IsInMap (const Vector3 &pos) const noexcept
 指定した座標がマップの範囲内に存在するかどうかを返す.
 
constexpr int GetDividedMapIndexX (const float pos_x) const noexcept
 指定した座標を DividedMap のインデックスに変換する. 範囲外の値を指定した場合でも,値を丸めずに返す. そのため,IsInMap で範囲内に存在するかどうかを確認する必要がある.
 
constexpr int GetDividedMapIndexY (const float pos_y) const noexcept
 指定した座標を DividedMap のインデックスに変換する. 範囲外の値を指定した場合でも,値を丸めずに返す. そのため,IsInMap で範囲内に存在するかどうかを確認する必要がある.
 
int GetPointNum (int x_index, int y_index) const
 格子状に切り分けられたマップから,脚設置可能点の数を取得する.
範囲外の値を指定した場合は,0を返す.
 
Vector3 GetPointPos (int x_index, int y_index, int divided_map_index) const
 格子状に切り分けられたマップから,脚設置可能点の実際の座標を取得する.
範囲外の値を指定した場合は,(0,0,0)を返す.
 
void GetPointVector (int x_index, int y_index, std::vector< Vector3 > *point_vec) const
 格子状に切り分けられたマップから,脚設置可能点の vector を取得する
範囲外の値を指定した場合は,空の vector を返す.
 
float GetTopZ (int x_index, int y_index) const
 格子状に切り分けられたマップから,最も高いZ座標を返す.
 
float GetMapMinZ () const noexcept
 

静的公開メンバ関数

static constexpr int ClampDividedMapIndex (const int index) noexcept
 指定した座標がマップのインデックスの範囲内になるように丸める.
 

静的公開変数類

static constexpr int kDividedMapPointNum { 4 }
 < 1つのマスに存在する脚設置可能点の数は kDividedMapPointNum × kDividedMapPointNum 個.
 
static constexpr float kDividedAreaLength { MapState::kMapPointDistance * kDividedMapPointNum }
 
static constexpr int kDividedNum { 15 }
 格子の数.
 
static constexpr float kDividedMapMaxX { kDividedAreaLength * kDividedNum / 2.0f }
 マップの最大のX座標.
 
static constexpr float kDividedMapMinX { -kDividedMapMaxX }
 マップの最小のX座標.
 
static constexpr float kDividedMapMaxY { kDividedAreaLength * kDividedNum / 2.0f }
 マップの最大のY座標.
 
static constexpr float kDividedMapMinY { -kDividedMapMaxY }
 マップの最小のY座標.
 

詳解

マップを格子状に分割して管理するクラス.

ロボットのセンサには限界があるため,マップのデータを全て保持することはできない. そのため,ロボットの近くのデータのみを保持すればよい. 処理を軽くするために,マップが存在する領域を長方形に切り分けて, その中に存在する脚設置可能点を集めたものが,このクラスである.
要素は参考の「1次元の配列を多次元配列として使う」の要領で並んでいる.
座標はグローバル座標である.

参考

divided_map_state.h31 行目に定義があります。

構築子と解体子

◆ DividedMapState()

designlab::DividedMapState::DividedMapState ( float  min_z = MapState::kMapMinZ)
explicit
引数
[in]min_zマップの最低のZ座標.

divided_map_state.cpp16 行目に定義があります。

呼び出し関係図:

関数詳解

◆ ClampDividedMapIndex()

static constexpr int designlab::DividedMapState::ClampDividedMapIndex ( const int  index)
inlinestaticconstexprnoexcept

指定した座標がマップのインデックスの範囲内になるように丸める.

divided_map_state.h126 行目に定義があります。

◆ Clear()

void designlab::DividedMapState::Clear ( )

マップのデータを消去する.

divided_map_state.cpp62 行目に定義があります。

被呼び出し関係図:

◆ GetDividedMapIndexX()

constexpr int designlab::DividedMapState::GetDividedMapIndexX ( const float  pos_x) const
inlineconstexprnoexcept

指定した座標を DividedMap のインデックスに変換する. 範囲外の値を指定した場合でも,値を丸めずに返す. そのため,IsInMap で範囲内に存在するかどうかを確認する必要がある.

参照
DividedMapState::IsInMap
引数
[in]pos_xグローバル座標のx座標.
戻り値
DividedMap のインデックス.

divided_map_state.h105 行目に定義があります。

被呼び出し関係図:

◆ GetDividedMapIndexY()

constexpr int designlab::DividedMapState::GetDividedMapIndexY ( const float  pos_y) const
inlineconstexprnoexcept

指定した座標を DividedMap のインデックスに変換する. 範囲外の値を指定した場合でも,値を丸めずに返す. そのため,IsInMap で範囲内に存在するかどうかを確認する必要がある.

参照
DividedMapState::IsInMap
引数
[in]pos_yグローバル座標のy座標.
戻り値
DividedMap のインデックス.

divided_map_state.h118 行目に定義があります。

被呼び出し関係図:

◆ GetMapMinZ()

float designlab::DividedMapState::GetMapMinZ ( ) const
inlinenoexcept

divided_map_state.h162 行目に定義があります。

被呼び出し関係図:

◆ GetPointNum()

int designlab::DividedMapState::GetPointNum ( int  x_index,
int  y_index 
) const

格子状に切り分けられたマップから,脚設置可能点の数を取得する.
範囲外の値を指定した場合は,0を返す.

引数
[in]x_indexX座標,切り分けられたタイルの位置で指定する.
[in]y_indexY座標,切り分けられたタイルの位置で指定する.
戻り値
脚設置可能点の数.

divided_map_state.cpp77 行目に定義があります。

被呼び出し関係図:

◆ GetPointPos()

Vector3 designlab::DividedMapState::GetPointPos ( int  x_index,
int  y_index,
int  divided_map_index 
) const

格子状に切り分けられたマップから,脚設置可能点の実際の座標を取得する.
範囲外の値を指定した場合は,(0,0,0)を返す.

引数
[in]x_indexx座標,切り分けられたタイルの位置で指定する.
[in]y_indexy座標,切り分けられたタイルの位置で指定する.
[in]divided_map_index何番目の脚設置可能点か.
戻り値
脚設置可能点の座標.

divided_map_state.cpp88 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ GetPointVector()

void designlab::DividedMapState::GetPointVector ( int  x_index,
int  y_index,
std::vector< Vector3 > *  point_vec 
) const

格子状に切り分けられたマップから,脚設置可能点の vector を取得する
範囲外の値を指定した場合は,空の vector を返す.

引数
[in]x_indexx座標,切り分けられたタイルの位置で指定する.
[in]y_indexy座標,切り分けられたタイルの位置で指定する.
[out]point_vec脚設置可能点の座標の配列.

divided_map_state.cpp107 行目に定義があります。

◆ GetTopZ()

float designlab::DividedMapState::GetTopZ ( int  x_index,
int  y_index 
) const

格子状に切り分けられたマップから,最も高いZ座標を返す.

引数
[in]x_indexX座標,切り分けられたタイルの位置で指定する.
[in]y_indexY座標,切り分けられたタイルの位置で指定する.
戻り値
最も高いZ座標.

divided_map_state.cpp124 行目に定義があります。

被呼び出し関係図:

◆ Init()

void designlab::DividedMapState::Init ( const MapState map_state,
const Vector3  global_robot_com 
)

マップのデータを初期化する. ロボットの重心座標を中心にマップのデータを格子状に分割し, その中に存在する脚設置可能点を集める.

引数
[in]map_stateマップのデータ.
[in]global_robot_comロボットの重心のグローバル座標.

divided_map_state.cpp26 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ IsInMap() [1/2]

constexpr bool designlab::DividedMapState::IsInMap ( const float  x,
const float  y 
) const
inlineconstexpr

指定した座標がマップの範囲内に存在するかどうかを返す.

引数
[in]xグローバル座標.
[in]yグローバル座標.
戻り値
true範囲内に存在する.
false範囲内に存在しない.

divided_map_state.h73 行目に定義があります。

被呼び出し関係図:

◆ IsInMap() [2/2]

constexpr bool designlab::DividedMapState::IsInMap ( const Vector3 pos) const
inlineconstexprnoexcept

指定した座標がマップの範囲内に存在するかどうかを返す.

引数
[in]posグローバル座標.
戻り値
true範囲内に存在する.
false範囲内に存在しない.

divided_map_state.h94 行目に定義があります。

呼び出し関係図:

メンバ詳解

◆ kDividedAreaLength

constexpr float designlab::DividedMapState::kDividedAreaLength { MapState::kMapPointDistance * kDividedMapPointNum }
staticconstexpr

divided_map_state.h38 行目に定義があります。

◆ kDividedMapMaxX

constexpr float designlab::DividedMapState::kDividedMapMaxX { kDividedAreaLength * kDividedNum / 2.0f }
staticconstexpr

マップの最大のX座標.

divided_map_state.h43 行目に定義があります。

◆ kDividedMapMaxY

constexpr float designlab::DividedMapState::kDividedMapMaxY { kDividedAreaLength * kDividedNum / 2.0f }
staticconstexpr

マップの最大のY座標.

divided_map_state.h49 行目に定義があります。

◆ kDividedMapMinX

constexpr float designlab::DividedMapState::kDividedMapMinX { -kDividedMapMaxX }
staticconstexpr

マップの最小のX座標.

divided_map_state.h46 行目に定義があります。

◆ kDividedMapMinY

constexpr float designlab::DividedMapState::kDividedMapMinY { -kDividedMapMaxY }
staticconstexpr

マップの最小のY座標.

divided_map_state.h52 行目に定義があります。

◆ kDividedMapPointNum

constexpr int designlab::DividedMapState::kDividedMapPointNum { 4 }
staticconstexpr

< 1つのマスに存在する脚設置可能点の数は kDividedMapPointNum × kDividedMapPointNum 個.

1つのマスの一辺の長さ.

divided_map_state.h35 行目に定義があります。

◆ kDividedNum

constexpr int designlab::DividedMapState::kDividedNum { 15 }
staticconstexpr

格子の数.

divided_map_state.h40 行目に定義があります。


このクラス詳解は次のファイルから抽出されました: