GaitGeneration by Graph Search
読み取り中…
検索中…
一致する文字列を見つけられません
graph_searcher_spot_turn.h
[詳解]
1
3
4// Copyright(c) 2023-2025 Design Engineering Laboratory, Saitama University
5// Released under the MIT license
6// https://opensource.org/licenses/mit-license.php
7
8#ifndef DESIGNLAB_GRAPH_SEARCHER_SPOT_TURN_H_
9#define DESIGNLAB_GRAPH_SEARCHER_SPOT_TURN_H_
10
11#include <memory>
12#include <tuple>
13#include <string>
14
18
19
20namespace designlab
21{
22
26{
28
29public:
31 const std::shared_ptr<const IHexapodCoordinateConverter>& converter_ptr,
32 const std::shared_ptr<const IHexapodPostureValidator>& checker_ptr);
33
34 std::tuple<GraphSearchResult, GraphSearchEvaluationValue, RobotStateNode> SearchGraphTree(
35 const GaitPatternGraphTree& graph,
36 const RobotOperation& operation,
37 const DividedMapState& divided_map_state,
38 int max_depth) const override;
39
40 std::tuple<GraphSearchResult, GraphSearchEvaluationValue, RobotStateNode> SearchGraphTreeVector(
41 const std::vector<GaitPatternGraphTree>& graph_vector,
42 const RobotOperation& operation,
43 const DividedMapState& divided_map_state,
44 int max_depth) const override;
45
46private:
47 static constexpr Tag kTagAmountOfTurn = 0;
48 static constexpr Tag kTagLegRot = 1;
49 static constexpr Tag kTagZDiff = 2;
50
51
52 GraphSearchEvaluator InitializeEvaluator() const;
53
54 float InitTargetZValue(const RobotStateNode& node, const DividedMapState& devide_map_state, const Quaternion& target_quat) const;
55
56 float GetAmountOfTurnEvaluationValue(
57 const RobotStateNode& node,
58 const Quaternion& target_quat) const;
59
60 float GetLegRotEvaluationValue(
61 const RobotStateNode& node,
62 const RobotStateNode& root_node) const;
63
64 float GetZDiffEvaluationValue(
65 const RobotStateNode& node,
66 const float target_z_value) const;
67
68
69 const std::shared_ptr<const IHexapodCoordinateConverter> converter_ptr_;
70 const std::shared_ptr<const IHexapodPostureValidator> checker_ptr_;
71
72 GraphSearchEvaluator evaluator_;
73};
74
75} // namespace designlab
76
77
78#endif // DESIGNLAB_GRAPH_SEARCHER_SPOT_TURN_H_
マップを格子状に分割して管理するクラス.
RobotStateNode 構造体をノードとする木構造のグラフのクラス.
グラフ探索の評価値を評価するクラス.
グラフ探索を行い,直進する動作を評価するクラス.
std::tuple< GraphSearchResult, GraphSearchEvaluationValue, RobotStateNode > SearchGraphTree(const GaitPatternGraphTree &graph, const RobotOperation &operation, const DividedMapState &divided_map_state, int max_depth) const override
グラフを受け取り,その中から最適な次の動作を出力する.
std::tuple< GraphSearchResult, GraphSearchEvaluationValue, RobotStateNode > SearchGraphTreeVector(const std::vector< GaitPatternGraphTree > &graph_vector, const RobotOperation &operation, const DividedMapState &divided_map_state, int max_depth) const override
グラフ探索の処理のインターフェース.
クォータニオンを表す構造体.
探索において目標となる座標や角度,評価する値についてまとめた構造体.
グラフ構造のためのノード(頂点).旧名 LNODE