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

グラフ構造のためのノード(頂点).旧名 LNODE [詳解]

#include <robot_state_node.h>

designlab::RobotStateNode 連携図
Collaboration graph
[凡例]

公開メンバ関数

constexpr RobotStateNode ()
 
constexpr RobotStateNode (const leg_func::LegStateBit &state, const std::array< Vector3, HexapodConst::kLegNum > &pos, const std::array< Vector3, HexapodConst::kLegNum > &ref_pos, const Vector3 &com, const Quaternion &q, const HexapodMove move, const int parent, const int d)
 
 RobotStateNode (const RobotStateNode &other)=default
 
 RobotStateNode (RobotStateNode &&other) noexcept=default
 
RobotStateNodeoperator= (const RobotStateNode &other)=default
 
 ~RobotStateNode ()=default
 
void ChangeGlobalCenterOfMass (const designlab::Vector3 &new_com, bool do_change_leg_base_pos)
 重心位置を変更する関数.
 
void ChangePosture (const std::shared_ptr< const IHexapodCoordinateConverter > &converter_ptr, const designlab::Quaternion &new_posture)
 クォータニオンを変更し,胴体を回転させる関数.
 
void ChangeLootNode ()
 自身を根ノードに変更する関数.
depthを0に,parent_numを-1に初期化する.
 
constexpr void ChangeToNextNode (const int parent_index_, const HexapodMove next_move_)
 次の動作を設定する関数.
深さを一つ深くして,親と次の動作を設定する.
 
constexpr bool IsLootNode () const
 自身が根ノードであるか判定する.
 
std::string ToString () const
 ノードの情報を文字列に変換する関数.
デバッグ用に詳細な情報を出力する.
 
std::string ToCsvString () const
 ノードの情報を csv形式の文字列に変換する関数.
カンマ区切りで出力する.
 
constexpr bool operator== (const RobotStateNode &other) const
 比較演算子
 
constexpr bool operator!= (const RobotStateNode &other)
 

静的公開メンバ関数

static RobotStateNode FromString (const std::string &str)
 文字列をノードの情報に変換する関数.
 

公開変数類

leg_func::LegStateBit leg_state
 [4 byte] 脚状態,重心パターンを bitで表す.旧名 leg_con.
 
std::array< Vector3, HexapodConst::kLegNumleg_pos
 [4 * 3 * 6 = 72 byte] 脚先の座標.(coxa(脚の付け根)を原点とする)
 
std::array< Vector3, HexapodConst::kLegNumleg_reference_pos
 
Vector3 center_of_mass_global_coord
 [4 * 3 = 12byte] グローバル座標系における重心の位置.旧名 GCOM
 
Quaternion posture
 [4 * 4 = 16byte] 姿勢を表すクォータニオン.
 
HexapodMove next_move
 
int parent_index
 
int depth
 [4 byte] 自身の深さ.一番上の親が深さ0となる.
 

静的公開変数類

static constexpr int kNoParentIndex = -1
 親がいないことを表す値.
 

詳解

グラフ構造のためのノード(頂点).旧名 LNODE

この構造体は,グラフ構造のためのノード(頂点)である.
ノードは,脚の状態,脚先の座標,脚接地の基準点の座標,重心の位置, ロールピッチヨーの回転角度,親ノードの番号,次の動作,深さを持つ.
すなわちロボットの現在の状態を表している. しかし,脚の関節角度など一部の情報を持ってはいない.
これは実時間内に,グラフ探索を終えるための工夫である.
先行研究のプログラムに比べて大きく内容を変更したが, 基本的な構造は同じである. また,ロボットの座標系は通例,進行方向をXの正,ロボットの真上をZの正, y軸は右手座標系でとる. このプログラムもそのように統一する.
過去のプログラムではそれがバラバラになっていたため, 途中で座標系を変換する処理が多々あったが, 煩雑なうえ,時間がかかるので,全て統一する.

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

構築子と解体子

◆ RobotStateNode() [1/4]

constexpr designlab::RobotStateNode::RobotStateNode ( )
inlineconstexpr

robot_state_node.h50 行目に定義があります。

◆ RobotStateNode() [2/4]

constexpr designlab::RobotStateNode::RobotStateNode ( const leg_func::LegStateBit state,
const std::array< Vector3, HexapodConst::kLegNum > &  pos,
const std::array< Vector3, HexapodConst::kLegNum > &  ref_pos,
const Vector3 com,
const Quaternion q,
const HexapodMove  move,
const int  parent,
const int  d 
)
inlineconstexpr

robot_state_node.h70 行目に定義があります。

◆ RobotStateNode() [3/4]

designlab::RobotStateNode::RobotStateNode ( const RobotStateNode other)
default

◆ RobotStateNode() [4/4]

designlab::RobotStateNode::RobotStateNode ( RobotStateNode &&  other)
defaultnoexcept

◆ ~RobotStateNode()

designlab::RobotStateNode::~RobotStateNode ( )
default

関数詳解

◆ ChangeGlobalCenterOfMass()

void designlab::RobotStateNode::ChangeGlobalCenterOfMass ( const designlab::Vector3 new_com,
bool  do_change_leg_base_pos 
)

重心位置を変更する関数.

引数
[in]new_com新しい重心位置.グローバル座標系.
[in]do_change_leg_base_pos遊脚中の脚の接地基準地点の座標を変更するかどうか

脚位置は脚の付け根からの相対座標で表現されている.
遊脚している脚は一緒に移動するが, 接地脚は移動しないため座標を変更してやる必要がある.

robot_state_node.cpp22 行目に定義があります。

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

◆ ChangeLootNode()

void designlab::RobotStateNode::ChangeLootNode ( )
inline

自身を根ノードに変更する関数.
depthを0に,parent_numを-1に初期化する.

robot_state_node.h114 行目に定義があります。

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

◆ ChangePosture()

void designlab::RobotStateNode::ChangePosture ( const std::shared_ptr< const IHexapodCoordinateConverter > &  converter_ptr,
const designlab::Quaternion new_posture 
)

クォータニオンを変更し,胴体を回転させる関数.

引数
[in]converter_ptr座標変換クラスのポインタ.
[in]new_posture新しい姿勢.単位クォータニオン.

robot_state_node.cpp43 行目に定義があります。

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

◆ ChangeToNextNode()

constexpr void designlab::RobotStateNode::ChangeToNextNode ( const int  parent_index_,
const HexapodMove  next_move_ 
)
inlineconstexpr

次の動作を設定する関数.
深さを一つ深くして,親と次の動作を設定する.

引数
[in]parent_index_親ノードの番号.
[in]next_move_次の動作.

robot_state_node.h125 行目に定義があります。

被呼び出し関係図:

◆ FromString()

RobotStateNode designlab::RobotStateNode::FromString ( const std::string &  str)
static

文字列をノードの情報に変換する関数.

引数
[in]strノードの情報をまとめた文字列,カンマ区切り.
戻り値
ロボットの状態を表すノード.
todo:
うまく読み込めなかった時の処理を書く.

robot_state_node.cpp147 行目に定義があります。

呼び出し関係図:

◆ IsLootNode()

constexpr bool designlab::RobotStateNode::IsLootNode ( ) const
inlineconstexpr

自身が根ノードであるか判定する.

戻り値
true自身が根ノードである.
false自身が根ノードでない.

robot_state_node.h137 行目に定義があります。

被呼び出し関係図:

◆ operator!=()

constexpr bool designlab::RobotStateNode::operator!= ( const RobotStateNode other)
inlineconstexpr

robot_state_node.h185 行目に定義があります。

◆ operator=()

RobotStateNode & designlab::RobotStateNode::operator= ( const RobotStateNode other)
default

◆ operator==()

constexpr bool designlab::RobotStateNode::operator== ( const RobotStateNode other) const
inlineconstexpr

比較演算子

robot_state_node.h159 行目に定義があります。

◆ ToCsvString()

std::string designlab::RobotStateNode::ToCsvString ( ) const

ノードの情報を csv形式の文字列に変換する関数.
カンマ区切りで出力する.

戻り値
ノードの情報を csv形式の文字列にしたもの.

robot_state_node.cpp138 行目に定義があります。

◆ ToString()

std::string designlab::RobotStateNode::ToString ( ) const

ノードの情報を文字列に変換する関数.
デバッグ用に詳細な情報を出力する.

戻り値
ノードの情報を文字列にしたもの.

robot_state_node.cpp70 行目に定義があります。

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

メンバ詳解

◆ center_of_mass_global_coord

Vector3 designlab::RobotStateNode::center_of_mass_global_coord

[4 * 3 = 12byte] グローバル座標系における重心の位置.旧名 GCOM

robot_state_node.h202 行目に定義があります。

◆ depth

int designlab::RobotStateNode::depth

[4 byte] 自身の深さ.一番上の親が深さ0となる.

robot_state_node.h217 行目に定義があります。

◆ kNoParentIndex

constexpr int designlab::RobotStateNode::kNoParentIndex = -1
staticconstexpr

親がいないことを表す値.

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

◆ leg_pos

std::array<Vector3, HexapodConst::kLegNum> designlab::RobotStateNode::leg_pos

[4 * 3 * 6 = 72 byte] 脚先の座標.(coxa(脚の付け根)を原点とする)

robot_state_node.h195 行目に定義があります。

◆ leg_reference_pos

std::array<Vector3, HexapodConst::kLegNum> designlab::RobotStateNode::leg_reference_pos

[4 * 3 * 6 = 72 byte] 脚接地の基準点の座標. 離散化した時に4になる地点.(coxa(脚の付け根)を原点とする)

robot_state_node.h199 行目に定義があります。

◆ leg_state

leg_func::LegStateBit designlab::RobotStateNode::leg_state

[4 byte] 脚状態,重心パターンを bitで表す.旧名 leg_con.

robot_state_node.h192 行目に定義があります。

◆ next_move

HexapodMove designlab::RobotStateNode::next_move

[4 byte] 次の動作を代入する. 元のプログラムでは int debug が担っていた仕事を行う.

robot_state_node.h210 行目に定義があります。

◆ parent_index

int designlab::RobotStateNode::parent_index

[4 byte] 自身の親が vector 配列のどこにいるのかを記録する. 親がいないなら負の値をとる.

robot_state_node.h214 行目に定義があります。

◆ posture

Quaternion designlab::RobotStateNode::posture

[4 * 4 = 16byte] 姿勢を表すクォータニオン.

robot_state_node.h205 行目に定義があります。


この構造体詳解は次のファイルから抽出されました: