GaitGeneration by Graph Search
読み取り中…
検索中…
一致する文字列を見つけられません
node_creator_builder_turn.cpp
[詳解]
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#include <vector>
9
11
13#include "cassert_define.h"
18
19
20namespace designlab
21{
22
24 const std::shared_ptr<const IHexapodCoordinateConverter>& converter_ptr,
25 const std::shared_ptr<const IHexapodStatePresenter>& presenter_ptr,
26 const std::shared_ptr<const IHexapodPostureValidator>& checker_ptr) :
27 converter_ptr_(converter_ptr),
28 presenter_ptr_(presenter_ptr),
29 checker_ptr_(checker_ptr)
30{
31}
32
34 const DividedMapState& map,
35 std::map<HexapodMove, std::unique_ptr<INodeCreator>>* node_creator) const
36{
37 assert(node_creator != nullptr); // node_creator が nullptr でない.
38 assert(node_creator->size() == 0); // node_creator は空でなければならない.
39
40 const auto hierarchy_list = std::vector<enums::DiscreteLegPos>{
48 };
49
50 (*node_creator)[HexapodMove::kLegHierarchyChange] =
51 std::make_unique<NodeCreatorLegHierarchy>(HexapodMove::kLegUpDown,
52 hierarchy_list);
53
54 (*node_creator)[HexapodMove::kLegUpDown] = std::make_unique<NodeCreatorLegUpDown>(
55 map,
56 converter_ptr_,
57 presenter_ptr_,
58 checker_ptr_,
60
61 (*node_creator)[HexapodMove::kBodyYawRot] = std::make_unique<NodeCreatorBodyRot>(
62 map,
63 converter_ptr_,
64 checker_ptr_,
67
68 (*node_creator)[HexapodMove::kComUpDown] = std::make_unique<NodeCreatorComUpDown>(
69 map,
70 converter_ptr_,
71 presenter_ptr_,
72 checker_ptr_,
74
75 (*node_creator)[HexapodMove::kComMove] = std::make_unique<NodeCreatorComMove>(
76 map,
77 converter_ptr_,
78 presenter_ptr_,
79 checker_ptr_,
81}
82
83} // namespace designlab
マップを格子状に分割して管理するクラス.
NodeCreatorBuilderTurn(const std::shared_ptr< const IHexapodCoordinateConverter > &converter_ptr, const std::shared_ptr< const IHexapodStatePresenter > &presenter_ptr, const std::shared_ptr< const IHexapodPostureValidator > &checker_ptr)
void Build(const DividedMapState &map, std::map< HexapodMove, std::unique_ptr< INodeCreator > > *node_creator) const override
INodeCreatorを生成する.
@ kUpperBack
現在の位置より後方かつ上方にある.
@ kBack
現在の位置より後方にある.
@ kCenter
現在の位置にある.
@ kUpperFront
現在の位置より前方かつ上方にある.
@ kFront
現在の位置より前方にある.
@ kLowerBack
現在の位置より後方かつ下方にある.
@ kLowerFront
現在の位置より前方かつ下方にある.
HexapodMove
ロボットが次にどの動作をするのかを表す列挙体.
@ kLegUpDown
脚の上下移動.
@ kComMove
重心の平行移動.Center Of Massで重心のこと.
@ kComUpDown
重心の上下移動.
@ kLegHierarchyChange
脚の平行移動.脚の階層を変更する.
@ kBodyYawRot
ヨー軸周りの回転.
static constexpr Vector3 GetUpVec() noexcept
上に進む単位ベクトルを返す. 静的な関数なので,Vector3::GetUpVec() と呼び出せる.