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 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.h31 行目に定義があります。

構築子と解体子

◆ DividedMapState()

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

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

呼び出し関係図:

関数詳解

◆ ClampDividedMapIndex()

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

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

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

◆ Clear()

void designlab::DividedMapState::Clear ( )

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

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

被呼び出し関係図:

◆ GetDividedMapIndexX()

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

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

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

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

被呼び出し関係図:

◆ GetDividedMapIndexY()

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

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

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

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

被呼び出し関係図:

◆ GetMapMinZ()

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

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

被呼び出し関係図:

◆ GetPointNum()

nostd::expected< int, std::string > designlab::DividedMapState::GetPointNum ( int  x_index,
int  y_index 
) const

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

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

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

被呼び出し関係図:

◆ GetPointPos()

nostd::expected< Vector3, std::string > designlab::DividedMapState::GetPointPos ( int  x_index,
int  y_index,
int  divided_map_index 
) const

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

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

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

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

◆ 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.cpp103 行目に定義があります。

◆ GetTopZ()

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

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

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

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

被呼び出し関係図:

◆ Init()

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

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

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

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

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

◆ IsInMap() [1/2]

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

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

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

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

被呼び出し関係図:

◆ IsInMap() [2/2]

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

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

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

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

呼び出し関係図:

メンバ詳解

◆ kDividedAreaLength

constexpr float designlab::DividedMapState::kDividedAreaLength
staticconstexpr
初期値:
static constexpr int kDividedMapPointNum
1つのマスの一辺の長さ.
static constexpr float kMapPointDistance
z軸から(上から)みたとき,格子点状に分けられた脚接地可能点の間隔 [mm].
Definition map_state.h:79

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

◆ kDividedMapMaxX

constexpr float designlab::DividedMapState::kDividedMapMaxX
staticconstexpr
初期値:
2.0f}
static constexpr float kDividedAreaLength
static constexpr int kDividedNum
格子の数.

マップの最大のX座標.

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

◆ kDividedMapMaxY

constexpr float designlab::DividedMapState::kDividedMapMaxY
staticconstexpr
初期値:

マップの最大のY座標.

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

◆ kDividedMapMinX

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

マップの最小のX座標.

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

◆ kDividedMapMinY

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

マップの最小のY座標.

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

◆ kDividedMapPointNum

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

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

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

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

◆ kDividedNum

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

格子の数.

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


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