GaitGeneration by Graph Search
読み取り中…
検索中…
一致する文字列を見つけられません
graph_searcher_straight_move.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_STRAIGHT_MOVE_H_
9#define DESIGNLAB_GRAPH_SEARCHER_STRAIGHT_MOVE_H_
10
11#include <memory>
12#include <tuple>
13#include <string>
14#include <vector>
15
18
19
20namespace designlab
21{
22
26{
28
29public:
31 const std::shared_ptr<const IHexapodPostureValidator>& checker_ptr);
32
33 std::tuple<GraphSearchResult, GraphSearchEvaluationValue, RobotStateNode> SearchGraphTree(
34 const GaitPatternGraphTree& graph,
35 const RobotOperation& operation,
36 const DividedMapState& divided_map_state,
37 int max_depth) const override;
38
39 std::tuple<GraphSearchResult, GraphSearchEvaluationValue, RobotStateNode> SearchGraphTreeVector(
40 const std::vector<GaitPatternGraphTree>& graph_vector,
41 const RobotOperation& operation,
42 const DividedMapState& divided_map_state,
43 int max_depth) const override;
44
45private:
46 static constexpr Tag kTagMoveForward = 0;
47 static constexpr Tag kTagLegRot = 1;
48 static constexpr Tag kTagStablyMargin = 2;
49 static constexpr Tag kTagZDiff = 3;
50
51
52 GraphSearchEvaluator InitializeEvaluator() const;
53
54 float InitTargetZValue(const RobotStateNode& node,
55 const DividedMapState& devide_map_state,
56 const Vector3& move_direction) const;
57
58 float GetMoveForwardEvaluationValue(
59 const RobotStateNode& node,
60 const RobotStateNode& root_node,
61 const Vector3& normalized_move_direction) const;
62
63 float GetLegRotEvaluationValue(
64 const RobotStateNode& node,
65 const RobotStateNode& root_node) const;
66
67 float GetZDiffEvaluationValue(
68 const std::vector<float>& com_trajectory,
69 const float target_z_value) const;
70
71
72 const std::shared_ptr<const IHexapodPostureValidator> checker_ptr_;
73
74 GraphSearchEvaluator evaluator_;
75};
76
77} // namespace designlab
78
79
80#endif // DESIGNLAB_GRAPH_SEARCHER_STRAIGHT_MOVE_H_
マップを格子状に分割して管理するクラス.
RobotStateNode 構造体をノードとする木構造のグラフのクラス.
グラフ探索の評価値を評価するクラス.
グラフ探索を行い,直進する動作を評価するクラス.
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
std::tuple< GraphSearchResult, GraphSearchEvaluationValue, RobotStateNode > SearchGraphTree(const GaitPatternGraphTree &graph, const RobotOperation &operation, const DividedMapState &divided_map_state, int max_depth) const override
グラフを受け取り,その中から最適な次の動作を出力する.
グラフ探索の処理のインターフェース.
探索において目標となる座標や角度,評価する値についてまとめた構造体.
グラフ構造のためのノード(頂点).旧名 LNODE
3次元の位置ベクトルを表す構造体.