28 const std::shared_ptr<const IHexapodCoordinateConverter>& converter_ptr,
29 const std::shared_ptr<const IHexapodPostureValidator>& checker_ptr,
35 std::vector<RobotStateNode>* output_graph)
const override;
42 static constexpr float kBodyYawRotAngleMin =
46 static constexpr int kBodyYawRotAngleDivNum = 21;
48 constexpr std::array<float, kBodyYawRotAngleDivNum> CreateCandidateAngle()
50 std::array<float, kBodyYawRotAngleDivNum> res{};
53 res[count++] = (kBodyYawRotAngleMax + kBodyYawRotAngleMin) / 2;
56 const float dif = (kBodyYawRotAngleMax - kBodyYawRotAngleMin) /
57 (kBodyYawRotAngleDivNum - 1);
59 for (
int i = 0; i < kBodyYawRotAngleDivNum / 2; ++i) {
60 res[count++] = res[0] + dif * (i + 1);
61 res[count++] = res[0] - dif * (i + 1);
67 const std::array<float, kBodyYawRotAngleDivNum> candidate_angle_ =
68 CreateCandidateAngle();
70 const DividedMapState map_;
73 const std::shared_ptr<const IHexapodCoordinateConverter> converter_ptr_;
74 const std::shared_ptr<const IHexapodPostureValidator> checker_ptr_;
79 kBodyYawRotAngleMax > kBodyYawRotAngleMin,
80 "kBodyYawRotAngleMax は kBodyYawRotAngleMinよりも大きい必要があります.");
81 static_assert(kBodyYawRotAngleDivNum % 2 == 1,
82 "kBodyYawRotAngleDivNum は奇数である必要があります.");
void Create(const RobotStateNode ¤t_node, int current_num, std::vector< RobotStateNode > *output_graph) const override
現在のノードから次のノード群を生成する.
~NodeCreatorBodyRot()=default