25 const std::shared_ptr<const IHexapodCoordinateConverter>& converter_ptr,
26 const std::shared_ptr<const IHexapodStatePresenter>& presenter_ptr,
27 const std::shared_ptr<const IHexapodPostureValidator>& checker_ptr)
28 : converter_ptr_(converter_ptr),
29 presenter_ptr_(presenter_ptr),
30 checker_ptr_(checker_ptr) {
31 assert(converter_ptr_ !=
nullptr);
32 assert(presenter_ptr_ !=
nullptr);
33 assert(checker_ptr_ !=
nullptr);
38 std::map<
HexapodMove, std::unique_ptr<INodeCreator>>* node_creator)
const {
42 assert(node_creator !=
nullptr);
43 assert(node_creator->size() == 0);
50 const auto hierarchy_list = std::vector<DiscreteLegPos>{
57 std::make_unique<NodeCreatorLegHierarchy>(
kLegUpDown, hierarchy_list);
59 (*node_creator)[
kLegUpDown] = std::make_unique<NodeCreatorLegUpDown>(
60 map, converter_ptr_, presenter_ptr_, checker_ptr_,
kComUpDown);
62 (*node_creator)[
kComUpDown] = std::make_unique<NodeCreatorComUpDown>(
63 map, converter_ptr_, presenter_ptr_, checker_ptr_,
kComMove);
66 std::make_unique<NodeCreatorComMoveStraight>(
67 map, converter_ptr_, presenter_ptr_, checker_ptr_,
kBodyPitchRot);
69 (*node_creator)[
kBodyPitchRot] = std::make_unique<NodeCreatorBodyRot>(