GaitGeneration by Graph Search
|
マップを格子状に分割して管理するクラス. [詳解]
#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 noexcept |
指定した座標がマップの範囲内に存在するかどうかを返す. | |
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 で範囲内に存在するかどうかを確認する必要がある. | |
nostd::expected< int, std::string > | GetPointNum (int x_index, int y_index) const |
格子状に切り分けられたマップから,脚設置可能点の数を取得する. 範囲外の値を指定した場合は, unexpected を返す. | |
nostd::expected< Vector3, std::string > | GetPointPos (int x_index, int y_index, int divided_map_index) const |
格子状に切り分けられたマップから,脚設置可能点の実際の座標を取得する. 範囲外の値を指定した場合は, unexpected を返す. | |
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つのマスの一辺の長さ. | |
static constexpr float | kDividedAreaLength |
static constexpr int | kDividedNum {15} |
格子の数. | |
static constexpr float | kDividedMapMaxX |
マップの最大のX座標. | |
static constexpr float | kDividedMapMinX {-kDividedMapMaxX} |
マップの最小のX座標. | |
static constexpr float | kDividedMapMaxY |
マップの最大のY座標. | |
static constexpr float | kDividedMapMinY {-kDividedMapMaxY} |
マップの最小のY座標. | |
マップを格子状に分割して管理するクラス.
ロボットのセンサには限界があるため,マップのデータを全て保持することはできない. そのため,ロボットの近くのデータのみを保持すればよい. 処理を軽くするために,マップが存在する領域を長方形に切り分けて, その中に存在する脚設置可能点を集めたものが,このクラスである.
要素は参考の「1次元の配列を多次元配列として使う」の要領で並んでいる.
座標はグローバル座標である.
divided_map_state.h の 31 行目に定義があります。
|
explicit |
|
inlinestaticconstexprnoexcept |
指定した座標がマップのインデックスの範囲内になるように丸める.
divided_map_state.h の 122 行目に定義があります。
void designlab::DividedMapState::Clear | ( | ) |
|
inlineconstexprnoexcept |
指定した座標を DividedMap のインデックスに変換する. 範囲外の値を指定した場合でも,値を丸めずに返す. そのため,IsInMap で範囲内に存在するかどうかを確認する必要がある.
[in] | pos_x | グローバル座標のx座標. |
divided_map_state.h の 103 行目に定義があります。
|
inlineconstexprnoexcept |
指定した座標を DividedMap のインデックスに変換する. 範囲外の値を指定した場合でも,値を丸めずに返す. そのため,IsInMap で範囲内に存在するかどうかを確認する必要がある.
[in] | pos_y | グローバル座標のy座標. |
divided_map_state.h の 115 行目に定義があります。
|
inlinenoexcept |
nostd::expected< int, std::string > designlab::DividedMapState::GetPointNum | ( | int | x_index, |
int | y_index | ||
) | const |
格子状に切り分けられたマップから,脚設置可能点の数を取得する.
範囲外の値を指定した場合は, unexpected を返す.
[in] | x_index | X座標,切り分けられたタイルの位置で指定する. |
[in] | y_index | Y座標,切り分けられたタイルの位置で指定する. |
divided_map_state.cpp の 71 行目に定義があります。
nostd::expected< Vector3, std::string > designlab::DividedMapState::GetPointPos | ( | int | x_index, |
int | y_index, | ||
int | divided_map_index | ||
) | const |
格子状に切り分けられたマップから,脚設置可能点の実際の座標を取得する.
範囲外の値を指定した場合は, unexpected を返す.
[in] | x_index | x座標,切り分けられたタイルの位置で指定する. |
[in] | y_index | y座標,切り分けられたタイルの位置で指定する. |
[in] | divided_map_index | 何番目の脚設置可能点か. |
divided_map_state.cpp の 83 行目に定義があります。
void designlab::DividedMapState::GetPointVector | ( | int | x_index, |
int | y_index, | ||
std::vector< Vector3 > * | point_vec | ||
) | const |
格子状に切り分けられたマップから,脚設置可能点の vector を取得する
範囲外の値を指定した場合は,空の vector を返す.
[in] | x_index | x座標,切り分けられたタイルの位置で指定する. |
[in] | y_index | y座標,切り分けられたタイルの位置で指定する. |
[out] | point_vec | 脚設置可能点の座標の配列. |
divided_map_state.cpp の 103 行目に定義があります。
float designlab::DividedMapState::GetTopZ | ( | int | x_index, |
int | y_index | ||
) | const |
格子状に切り分けられたマップから,最も高いZ座標を返す.
[in] | x_index | X座標,切り分けられたタイルの位置で指定する. |
[in] | y_index | Y座標,切り分けられたタイルの位置で指定する. |
divided_map_state.cpp の 117 行目に定義があります。
void designlab::DividedMapState::Init | ( | const MapState & | map_state, |
const Vector3 | global_robot_com | ||
) |
マップのデータを初期化する. ロボットの重心座標を中心にマップのデータを格子状に分割し, その中に存在する脚設置可能点を集める.
[in] | map_state | マップのデータ. |
[in] | global_robot_com | ロボットの重心のグローバル座標. |
divided_map_state.cpp の 23 行目に定義があります。
|
inlineconstexprnoexcept |
指定した座標がマップの範囲内に存在するかどうかを返す.
[in] | x | グローバル座標. |
[in] | y | グローバル座標. |
true | 範囲内に存在する. |
false | 範囲内に存在しない. |
divided_map_state.h の 75 行目に定義があります。
|
inlineconstexprnoexcept |
指定した座標がマップの範囲内に存在するかどうかを返す.
[in] | pos | グローバル座標. |
true | 範囲内に存在する. |
false | 範囲内に存在しない. |
divided_map_state.h の 93 行目に定義があります。
|
staticconstexpr |
divided_map_state.h の 38 行目に定義があります。
|
staticconstexpr |
マップの最大のX座標.
divided_map_state.h の 44 行目に定義があります。
|
staticconstexpr |
|
staticconstexpr |
マップの最小のX座標.
divided_map_state.h の 48 行目に定義があります。
|
staticconstexpr |
マップの最小のY座標.
divided_map_state.h の 55 行目に定義があります。
|
staticconstexpr |
1つのマスの一辺の長さ.
< 1つのマスに存在する脚設置可能点の数は kDividedMapPointNum × kDividedMapPointNum 個.
divided_map_state.h の 35 行目に定義があります。
|
staticconstexpr |
格子の数.
divided_map_state.h の 41 行目に定義があります。