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

PhantomX mk-2 の状態を計算するクラス. [詳解]

#include <phantomx_mk2.h>

designlab::PhantomXMkII の継承関係図
Inheritance graph
[凡例]
designlab::PhantomXMkII 連携図
Collaboration graph
[凡例]

公開メンバ関数

 PhantomXMkII (const PhantomXMkIIParameterRecord &parameter_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 &center_of_mass_global, const Quaternion &robot_quat, const bool consider_rot) const override
 グローバル座標系で表現されている座標を,脚座標系に変換する.
 
Vector3 ConvertLegToGlobalCoordinate (const Vector3 &converted_position, int leg_index, const Vector3 &center_of_mass_global, const Quaternion &robot_quat, const bool consider_rot) const override
 脚座標系で表現されている座標を,グローバル座標系に変換する.
 
Vector3 ConvertRobotToGlobalCoordinate (const Vector3 &converted_position, const Vector3 &center_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
 胴体が地面と干渉しているかどうかを判定する.
 
- 基底クラス designlab::IHexapodCoordinateConverter に属する継承公開メンバ関数
virtual ~IHexapodCoordinateConverter ()=default
 継承するクラスはデストラクタを virtualにすること.
 
- 基底クラス designlab::IHexapodJointCalculator に属する継承公開メンバ関数
virtual ~IHexapodJointCalculator ()=default
 
std::array< HexapodJointState, HexapodConst::kLegNumCalculateAllJointState (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 になる.
 
- 基底クラス designlab::IHexapodStatePresenter に属する継承公開メンバ関数
virtual ~IHexapodStatePresenter ()=default
 
- 基底クラス designlab::IHexapodPostureValidator に属する継承公開メンバ関数
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.h23 行目に定義があります。

構築子と解体子

◆ PhantomXMkII()

designlab::PhantomXMkII::PhantomXMkII ( const PhantomXMkIIParameterRecord parameter_record)
explicit

phantomx_mk2.cpp24 行目に定義があります。

関数詳解

◆ CalculateJointState()

HexapodJointState designlab::PhantomXMkII::CalculateJointState ( const int  leg_index,
const Vector3 leg_pos 
) const
overridevirtualnoexcept

指定した脚の関節のグローバル座標と,角度を計算する.
重たいのでグラフ探索や,描画処理中にループで使用することは推奨しない.
間接の可動範囲外まで動いてしまう場合でも,答えを返す.
目標座標に届かない場合は,最も近い座標まで脚を伸ばし, 戻り値の is_in_range を false にする.

引数
[in]leg_index脚のインデックス.
[in]leg_pos脚先座標,脚座標系.
戻り値
指定した脚の関節の状態.

designlab::IHexapodJointCalculatorを実装しています。

phantomx_mk2.cpp56 行目に定義があります。

呼び出し関係図:

◆ CalculateStabilityMargin()

float designlab::PhantomXMkII::CalculateStabilityMargin ( const leg_func::LegStateBit leg_state,
const std::array< Vector3, HexapodConst::kLegNum > &  leg_pos 
) const
overridevirtual

安定余裕(Stability Margin)を計算する. 詳しくは「不整地における歩行機械の静的安定性評価基準」 という論文を読んで欲しい.
接地脚を繋いで作られる多角形の辺と重心の距離の最小値を計算する.

引数
[in]leg_state脚の状態.bitで表現される,遊脚・接地脚の情報を持つ.
[in]leg_pos脚座標系における脚先の座標の配列. 脚先座標系とは脚の付け根を原点とし,軸はロボット座標系と同様な座標系.
戻り値
安定余裕.大きい方が安定となる,またこの値が0以下なら転倒する.

designlab::IHexapodPostureValidatorを実装しています。

phantomx_mk2.cpp512 行目に定義があります。

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

◆ ConvertGlobalToLegCoordinate()

Vector3 designlab::PhantomXMkII::ConvertGlobalToLegCoordinate ( const Vector3 converted_position,
int  leg_index,
const Vector3 center_of_mass_global,
const Quaternion robot_quat,
const bool  consider_rot 
) const
overridevirtual

グローバル座標系で表現されている座標を,脚座標系に変換する.

引数
[in]converted_position変換対象.グローバル座標系.
[in]leg_index脚番号.
[in]center_of_mass_globalロボットの重心の座標.グローバル座標系.
[in]robot_rotロボットの姿勢.角度はrad.
[in]consider_rotロボットの姿勢を考慮するかどうか. falseなら回転を考慮しない.
戻り値
脚座標系の座標.脚先座標系とは脚の付け根を原点とし, 軸はロボット座標系と同様な座標系.

designlab::IHexapodCoordinateConverterを実装しています。

phantomx_mk2.cpp321 行目に定義があります。

呼び出し関係図:

◆ ConvertLegToGlobalCoordinate()

Vector3 designlab::PhantomXMkII::ConvertLegToGlobalCoordinate ( const Vector3 converted_position,
int  leg_index,
const Vector3 center_of_mass_global,
const Quaternion robot_quat,
const bool  consider_rot 
) const
overridevirtual

脚座標系で表現されている座標を,グローバル座標系に変換する.

引数
[in]converted_position変換対象.脚座標系.
[in]leg_index脚番号.
[in]center_of_mass_globalロボットの重心の座標.グローバル座標系.
[in]robot_rotロボットの姿勢.角度は[rad].
[in]consider_rotロボットの姿勢を考慮するかどうか. falseなら回転を考慮しない.
戻り値
グローバル座標系の座標.

designlab::IHexapodCoordinateConverterを実装しています。

phantomx_mk2.cpp346 行目に定義があります。

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

◆ ConvertLegToRobotCoordinate()

Vector3 designlab::PhantomXMkII::ConvertLegToRobotCoordinate ( const Vector3 converted_position,
int  leg_index 
) const
virtual

脚座標系で表現されている座標を,ロボット座標系に変換する.

designlab::IHexapodCoordinateConverterを実装しています。

phantomx_mk2.cpp391 行目に定義があります。

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

◆ ConvertRobotToGlobalCoordinate()

Vector3 designlab::PhantomXMkII::ConvertRobotToGlobalCoordinate ( const Vector3 converted_position,
const Vector3 center_of_mass_global,
const Quaternion robot_quat,
const bool  consider_rot 
) const
overridevirtual

ロボット座標系で表現されている座標を,グローバル座標系に変換する.

引数
[in]converted_position変換対象.ロボット座標系.
[in]center_of_mass_globalロボットの重心の座標.グローバル座標系.
[in]robot_rotロボットの姿勢.角度は[rad].
[in]consider_rotロボットの姿勢を考慮するかどうか. falseなら回転を考慮しない.
戻り値
グローバル座標系の座標.

designlab::IHexapodCoordinateConverterを実装しています。

phantomx_mk2.cpp369 行目に定義があります。

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

◆ ConvertRobotToLegCoordinate()

Vector3 designlab::PhantomXMkII::ConvertRobotToLegCoordinate ( const Vector3 converted_position,
int  leg_index 
) const
virtual

ロボット座標系で表現されている座標を,脚座標系に変換する.

designlab::IHexapodCoordinateConverterを実装しています。

phantomx_mk2.cpp385 行目に定義があります。

呼び出し関係図:

◆ GetFreeLegPosLegCoordinate()

Vector3 designlab::PhantomXMkII::GetFreeLegPosLegCoordinate ( int  leg_index) const
overridevirtualnoexcept

遊脚する位置を返す,脚座標系.

引数
[in]leg_index脚番号.
戻り値
遊脚する位置.脚座標系.

designlab::IHexapodStatePresenterを実装しています。

phantomx_mk2.cpp398 行目に定義があります。

被呼び出し関係図:

◆ GetGroundHeightMarginMax()

float designlab::PhantomXMkII::GetGroundHeightMarginMax ( ) const
overridevirtualnoexcept

地面の最大高さと重心位置を最大どれだけ離すかを返す.

戻り値
地面の最大高さと重心位置との最大距離 [mm].

designlab::IHexapodStatePresenterを実装しています。

phantomx_mk2.cpp507 行目に定義があります。

◆ GetGroundHeightMarginMin()

float designlab::PhantomXMkII::GetGroundHeightMarginMin ( ) const
overridevirtualnoexcept

地面の最大高さと重心位置を最小どれだけ離すかを返す.

戻り値
地面の最大高さと重心位置との最小距離 [mm].

designlab::IHexapodStatePresenterを実装しています。

phantomx_mk2.cpp502 行目に定義があります。

被呼び出し関係図:

◆ GetLegBasePosRobotCoordinate()

Vector3 designlab::PhantomXMkII::GetLegBasePosRobotCoordinate ( int  leg_index) const
overridevirtualnoexcept

脚の付け根の座標(leg base position )を取得する.ロボット座標系.

引数
[in]leg_index脚番号.
戻り値
脚の付け根の座標.ロボット座標系.

designlab::IHexapodStatePresenterを実装しています。

phantomx_mk2.cpp407 行目に定義があります。

被呼び出し関係図:

◆ IsBodyInterferingWithGround()

bool designlab::PhantomXMkII::IsBodyInterferingWithGround ( const RobotStateNode node,
const DividedMapState divided_map 
) const
overridevirtual

胴体が地面と干渉しているかどうかを判定する.

引数
[in]nodeロボットの状態.
[in]divided_map地面の状態.
戻り値
胴体が地面と干渉していれば true.干渉していなければ false.

designlab::IHexapodPostureValidatorを実装しています。

phantomx_mk2.cpp572 行目に定義があります。

呼び出し関係図:

◆ IsLegInRange()

bool designlab::PhantomXMkII::IsLegInRange ( int  leg_index,
const Vector3 leg_pos 
) const
overridevirtual

脚が可動範囲内にあるかどうかを判定する.

引数
[in]leg_index脚番号.
[in]leg_pos脚座標系における脚先の座標. 脚先座標系とは脚の付け根を原点とし,軸はロボット座標系と同様な座標系.
戻り値
脚が可動範囲内にあれば true.可動範囲外にあれば false.

designlab::IHexapodPostureValidatorを実装しています。

phantomx_mk2.cpp417 行目に定義があります。

呼び出し関係図:

◆ IsLegInterfering()

bool designlab::PhantomXMkII::IsLegInterfering ( const std::array< Vector3, HexapodConst::kLegNum > &  leg_pos) const
overridevirtual

脚が他の脚と干渉しているかどうかを判定する.

引数
[in]leg_pos脚座標系における脚先の座標の配列. 脚先座標系とは脚の付け根を原点とし,軸はロボット座標系と同様な座標系.
戻り値
脚が他の脚と干渉していれば true.干渉していなければ false.

designlab::IHexapodPostureValidatorを実装しています。

phantomx_mk2.cpp466 行目に定義があります。

呼び出し関係図:

◆ IsStable()

bool designlab::PhantomXMkII::IsStable ( const leg_func::LegStateBit leg_state,
const std::array< Vector3, HexapodConst::kLegNum > &  leg_pos 
) const
overridevirtual

安定余裕を用いて,静的に安定しているかどうかを判定する.

引数
[in]leg_state脚の状態.bitで表現される,遊脚・接地脚の情報を持つ.
[in]leg_pos脚座標系における脚先の座標の配列. 脚先座標系とは脚の付け根を原点とし,軸はロボット座標系と同様な座標系.
戻り値
静的に安定していれば true.そうでなければ false.

designlab::IHexapodPostureValidatorを実装しています。

phantomx_mk2.cpp565 行目に定義があります。

呼び出し関係図:

◆ IsValidJointState()

bool designlab::PhantomXMkII::IsValidJointState ( const int  leg_index,
const Vector3 leg_pos,
const HexapodJointState joint_state 
) const
overridevirtualnoexcept

指定した脚のHexapodJointStateが正しく計算できているかを調べる.
目標座標に届かない場合や,間接の可動範囲外まで動いてしまう場合, 戻り値は false になる.

引数
[in]leg_index脚のインデックス.
[in]leg_pos脚先座標,脚座標系.
[in]joint_state関節の状態.
戻り値
計算が正しくできているならば true を返す.

designlab::IHexapodJointCalculatorを実装しています。

phantomx_mk2.cpp270 行目に定義があります。

呼び出し関係図:

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