GaitGeneration by Graph Search
|
PhantomX mk-2 の状態を計算するクラス. [詳解]
#include <phantomx_mk2.h>
公開メンバ関数 | |
PhantomXMkII (const PhantomXMkIIParameterRecord ¶meter_record) | |
HexapodJointState | CalculateJointState (const int leg_index, const Vector3 &leg_pos) const noexcept override |
指定した脚の関節のグローバル座標と,角度を計算する. 重たいのでグラフ探索や,描画処理中にループで使用することは推奨しない. 間接の可動範囲外まで動いてしまう場合でも,答えを返す. 目標座標に届かない場合は,最も近い座標まで脚を伸ばし, 戻り値の is_in_range を false にする. | |
bool | IsValidJointState (const int leg_index, const Vector3 &leg_pos, const HexapodJointState &joint_state) const noexcept override |
指定した脚のHexapodJointStateが正しく計算できているかを調べる. 目標座標に届かない場合や,間接の可動範囲外まで動いてしまう場合, 戻り値は false になる. | |
Vector3 | ConvertGlobalToLegCoordinate (const Vector3 &converted_position, int leg_index, const Vector3 ¢er_of_mass_global, const Quaternion &robot_quat, const bool consider_rot) const override |
グローバル座標系で表現されている座標を,脚座標系に変換する. | |
Vector3 | ConvertLegToGlobalCoordinate (const Vector3 &converted_position, int leg_index, const Vector3 ¢er_of_mass_global, const Quaternion &robot_quat, const bool consider_rot) const override |
脚座標系で表現されている座標を,グローバル座標系に変換する. | |
Vector3 | ConvertRobotToGlobalCoordinate (const Vector3 &converted_position, const Vector3 ¢er_of_mass_global, const Quaternion &robot_quat, const bool consider_rot) const override |
ロボット座標系で表現されている座標を,グローバル座標系に変換する. | |
Vector3 | ConvertRobotToLegCoordinate (const Vector3 &converted_position, int leg_index) const |
ロボット座標系で表現されている座標を,脚座標系に変換する. | |
Vector3 | ConvertLegToRobotCoordinate (const Vector3 &converted_position, int leg_index) const |
脚座標系で表現されている座標を,ロボット座標系に変換する. | |
Vector3 | GetFreeLegPosLegCoordinate (int leg_index) const noexcept override |
遊脚する位置を返す,脚座標系. | |
Vector3 | GetLegBasePosRobotCoordinate (int leg_index) const noexcept override |
脚の付け根の座標(leg base position )を取得する.ロボット座標系. | |
float | GetGroundHeightMarginMin () const noexcept override |
地面の最大高さと重心位置を最小どれだけ離すかを返す. | |
float | GetGroundHeightMarginMax () const noexcept override |
地面の最大高さと重心位置を最大どれだけ離すかを返す. | |
bool | IsLegInRange (int leg_index, const Vector3 &leg_pos) const override |
脚が可動範囲内にあるかどうかを判定する. | |
bool | IsLegInterfering (const std::array< Vector3, HexapodConst::kLegNum > &leg_pos) const override |
脚が他の脚と干渉しているかどうかを判定する. | |
float | CalculateStabilityMargin (const leg_func::LegStateBit &leg_state, const std::array< Vector3, HexapodConst::kLegNum > &leg_pos) const override |
安定余裕(Stability Margin)を計算する. 詳しくは「不整地における歩行機械の静的安定性評価基準」 という論文を読んで欲しい. 接地脚を繋いで作られる多角形の辺と重心の距離の最小値を計算する. | |
bool | IsStable (const leg_func::LegStateBit &leg_state, const std::array< Vector3, HexapodConst::kLegNum > &leg_pos) const override |
安定余裕を用いて,静的に安定しているかどうかを判定する. | |
bool | IsBodyInterferingWithGround (const RobotStateNode &node, const DividedMapState &devide_map) const override |
胴体が地面と干渉しているかどうかを判定する. | |
![]() | |
virtual | ~IHexapodCoordinateConverter ()=default |
継承するクラスはデストラクタを virtualにすること. | |
![]() | |
virtual | ~IHexapodJointCalculator ()=default |
std::array< HexapodJointState, HexapodConst::kLegNum > | CalculateAllJointState (const RobotStateNode &node) const noexcept |
全ての関節のグローバル座標と,角度を計算する. 重たいのでグラフ探索や,描画処理中にループで使用することは推奨しない. 間接の可動範囲外まで動いてしまう場合でも,答えを返す. 目標座標に届かない場合は,最も近い座標まで脚を伸ばし, 戻り値の is_in_range を false にする. | |
bool | IsValidAllJointState (const RobotStateNode &node, const std::array< HexapodJointState, HexapodConst::kLegNum > &joint_state) const noexcept |
HexapodJointStateが正しく計算できているかを調べる. 目標座標に届かない場合や,間接の可動範囲外まで動いてしまう場合, 戻り値は false になる. | |
![]() | |
virtual | ~IHexapodStatePresenter ()=default |
![]() | |
virtual | ~IHexapodPostureValidator ()=default |
bool | IsAllLegInRange (const leg_func::LegStateBit leg_state, const std::array< Vector3, HexapodConst::kLegNum > &leg_pos) const |
全ての脚が可動範囲内にあるかどうかを判定する. | |
PhantomX mk-2 の状態を計算するクラス.
phantomx_mk2.h の 23 行目に定義があります。
|
explicit |
phantomx_mk2.cpp の 24 行目に定義があります。
|
overridevirtualnoexcept |
指定した脚の関節のグローバル座標と,角度を計算する.
重たいのでグラフ探索や,描画処理中にループで使用することは推奨しない.
間接の可動範囲外まで動いてしまう場合でも,答えを返す.
目標座標に届かない場合は,最も近い座標まで脚を伸ばし, 戻り値の is_in_range を false にする.
[in] | leg_index | 脚のインデックス. |
[in] | leg_pos | 脚先座標,脚座標系. |
designlab::IHexapodJointCalculatorを実装しています。
phantomx_mk2.cpp の 56 行目に定義があります。
|
overridevirtual |
安定余裕(Stability Margin)を計算する. 詳しくは「不整地における歩行機械の静的安定性評価基準」 という論文を読んで欲しい.
接地脚を繋いで作られる多角形の辺と重心の距離の最小値を計算する.
[in] | leg_state | 脚の状態.bitで表現される,遊脚・接地脚の情報を持つ. |
[in] | leg_pos | 脚座標系における脚先の座標の配列. 脚先座標系とは脚の付け根を原点とし,軸はロボット座標系と同様な座標系. |
designlab::IHexapodPostureValidatorを実装しています。
phantomx_mk2.cpp の 512 行目に定義があります。
|
overridevirtual |
グローバル座標系で表現されている座標を,脚座標系に変換する.
[in] | converted_position | 変換対象.グローバル座標系. |
[in] | leg_index | 脚番号. |
[in] | center_of_mass_global | ロボットの重心の座標.グローバル座標系. |
[in] | robot_rot | ロボットの姿勢.角度はrad. |
[in] | consider_rot | ロボットの姿勢を考慮するかどうか. falseなら回転を考慮しない. |
designlab::IHexapodCoordinateConverterを実装しています。
phantomx_mk2.cpp の 321 行目に定義があります。
|
overridevirtual |
脚座標系で表現されている座標を,グローバル座標系に変換する.
[in] | converted_position | 変換対象.脚座標系. |
[in] | leg_index | 脚番号. |
[in] | center_of_mass_global | ロボットの重心の座標.グローバル座標系. |
[in] | robot_rot | ロボットの姿勢.角度は[rad]. |
[in] | consider_rot | ロボットの姿勢を考慮するかどうか. falseなら回転を考慮しない. |
designlab::IHexapodCoordinateConverterを実装しています。
phantomx_mk2.cpp の 346 行目に定義があります。
|
virtual |
脚座標系で表現されている座標を,ロボット座標系に変換する.
designlab::IHexapodCoordinateConverterを実装しています。
phantomx_mk2.cpp の 391 行目に定義があります。
|
overridevirtual |
ロボット座標系で表現されている座標を,グローバル座標系に変換する.
[in] | converted_position | 変換対象.ロボット座標系. |
[in] | center_of_mass_global | ロボットの重心の座標.グローバル座標系. |
[in] | robot_rot | ロボットの姿勢.角度は[rad]. |
[in] | consider_rot | ロボットの姿勢を考慮するかどうか. falseなら回転を考慮しない. |
designlab::IHexapodCoordinateConverterを実装しています。
phantomx_mk2.cpp の 369 行目に定義があります。
|
virtual |
ロボット座標系で表現されている座標を,脚座標系に変換する.
designlab::IHexapodCoordinateConverterを実装しています。
phantomx_mk2.cpp の 385 行目に定義があります。
|
overridevirtualnoexcept |
遊脚する位置を返す,脚座標系.
[in] | leg_index | 脚番号. |
designlab::IHexapodStatePresenterを実装しています。
phantomx_mk2.cpp の 398 行目に定義があります。
|
overridevirtualnoexcept |
地面の最大高さと重心位置を最大どれだけ離すかを返す.
designlab::IHexapodStatePresenterを実装しています。
phantomx_mk2.cpp の 507 行目に定義があります。
|
overridevirtualnoexcept |
地面の最大高さと重心位置を最小どれだけ離すかを返す.
designlab::IHexapodStatePresenterを実装しています。
phantomx_mk2.cpp の 502 行目に定義があります。
|
overridevirtualnoexcept |
脚の付け根の座標(leg base position )を取得する.ロボット座標系.
[in] | leg_index | 脚番号. |
designlab::IHexapodStatePresenterを実装しています。
phantomx_mk2.cpp の 407 行目に定義があります。
|
overridevirtual |
胴体が地面と干渉しているかどうかを判定する.
[in] | node | ロボットの状態. |
[in] | divided_map | 地面の状態. |
designlab::IHexapodPostureValidatorを実装しています。
phantomx_mk2.cpp の 572 行目に定義があります。
|
overridevirtual |
脚が可動範囲内にあるかどうかを判定する.
[in] | leg_index | 脚番号. |
[in] | leg_pos | 脚座標系における脚先の座標. 脚先座標系とは脚の付け根を原点とし,軸はロボット座標系と同様な座標系. |
designlab::IHexapodPostureValidatorを実装しています。
phantomx_mk2.cpp の 417 行目に定義があります。
|
overridevirtual |
脚が他の脚と干渉しているかどうかを判定する.
[in] | leg_pos | 脚座標系における脚先の座標の配列. 脚先座標系とは脚の付け根を原点とし,軸はロボット座標系と同様な座標系. |
designlab::IHexapodPostureValidatorを実装しています。
phantomx_mk2.cpp の 466 行目に定義があります。
|
overridevirtual |
安定余裕を用いて,静的に安定しているかどうかを判定する.
[in] | leg_state | 脚の状態.bitで表現される,遊脚・接地脚の情報を持つ. |
[in] | leg_pos | 脚座標系における脚先の座標の配列. 脚先座標系とは脚の付け根を原点とし,軸はロボット座標系と同様な座標系. |
designlab::IHexapodPostureValidatorを実装しています。
phantomx_mk2.cpp の 565 行目に定義があります。
|
overridevirtualnoexcept |
指定した脚のHexapodJointStateが正しく計算できているかを調べる.
目標座標に届かない場合や,間接の可動範囲外まで動いてしまう場合, 戻り値は false になる.
[in] | leg_index | 脚のインデックス. |
[in] | leg_pos | 脚先座標,脚座標系. |
[in] | joint_state | 関節の状態. |
designlab::IHexapodJointCalculatorを実装しています。
phantomx_mk2.cpp の 270 行目に定義があります。