31 const std::shared_ptr<const IHexapodCoordinateConverter>& converter_ptr,
32 const std::shared_ptr<const IHexapodPostureValidator>& checker_ptr,
39 std::vector<RobotStateNode>* output_graph)
const override;
50 static constexpr int kBodyYawRotAngleDivNum = 21;
53 constexpr std::array<float, kBodyYawRotAngleDivNum> CreateCandidateAngle()
const
55 std::array<float, kBodyYawRotAngleDivNum> res{};
58 res[count++] = (kBodyYawRotAngleMax + kBodyYawRotAngleMin) / 2;
61 const float dif = (kBodyYawRotAngleMax - kBodyYawRotAngleMin) /
62 (kBodyYawRotAngleDivNum - 1);
64 for (
int i = 0; i < kBodyYawRotAngleDivNum / 2; ++i)
66 res[count++] = res[0] + dif * (i + 1);
67 res[count++] = res[0] - dif * (i + 1);
73 const std::array<float, kBodyYawRotAngleDivNum> candidate_angle_ = CreateCandidateAngle();
75 const DividedMapState map_;
78 const std::shared_ptr<const IHexapodCoordinateConverter> converter_ptr_;
79 const std::shared_ptr<const IHexapodPostureValidator> checker_ptr_;
83 static_assert(kBodyYawRotAngleMax > kBodyYawRotAngleMin,
84 "kBodyYawRotAngleMax は kBodyYawRotAngleMinよりも大きい必要があります.");
85 static_assert(kBodyYawRotAngleDivNum % 2 == 1,
86 "kBodyYawRotAngleDivNum は奇数である必要があります.");
void Create(const RobotStateNode ¤t_node, int current_num, std::vector< RobotStateNode > *output_graph) const override
現在のノードから次のノード群を生成する.
~NodeCreatorBodyRot()=default