23 std::unique_ptr<IGaitPatternGenerator>&& gait_pattern_generator_ptr,
24 std::unique_ptr<IGaitPatternGenerator>&& gait_pattern_generator_revaluation_ptr,
25 const std::shared_ptr<const IHexapodCoordinateConverter>& converter_ptr,
26 const std::shared_ptr<const IHexapodJointCalculator>& joint_calculator_ptr) :
27 gpg_ptr_(
std::move(gait_pattern_generator_ptr)),
28 gpg_revaluation_ptr_(
std::move(gait_pattern_generator_revaluation_ptr)),
29 converter_ptr_(converter_ptr),
30 joint_calculator_ptr_(joint_calculator_ptr),
31 interpolated_node_creator_{ converter_ptr }
34 assert(gpg_ptr_ !=
nullptr);
37 assert(gpg_revaluation_ptr_ !=
nullptr);
40 assert(converter_ptr_ !=
nullptr);
43 assert(joint_calculator_ptr_ !=
nullptr);
52 assert(output_node !=
nullptr);
55 gpg_ptr_->GetNextNodeByGraphSearch(
56 current_node, map_state, operation, output_node);
65 if (IsValidNode(current_node, *output_node))
72 return gpg_revaluation_ptr_->GetNextNodeByGraphSearch(
73 current_node, map_state, operation, output_node);
76bool GaitPatternGeneratorRevaluation::IsValidNode(
81 const auto joint = joint_calculator_ptr_->CalculateAllJointState(next_node);
83 if (!joint_calculator_ptr_->IsValidAllJointState(next_node, joint))
90 const std::vector<RobotStateNode> interpolated_node =
93 for (
const auto& node : interpolated_node)
95 const auto joint_interpolated =
96 joint_calculator_ptr_->CalculateAllJointState(node);
98 if (!joint_calculator_ptr_->IsValidAllJointState(node, joint_interpolated))
GraphSearchResult GetNextNodeByGraphSearch(const RobotStateNode ¤t_node, const MapState &map, const RobotOperation &operation, RobotStateNode *output_node) override
グラフ探索を行い,次の動作として最適なノードを返す.
GaitPatternGeneratorRevaluation(std::unique_ptr< IGaitPatternGenerator > &&gpg_ptr, std::unique_ptr< IGaitPatternGenerator > &&gpg_revaluation_ptr, const std::shared_ptr< const IHexapodCoordinateConverter > &converter_ptr, const std::shared_ptr< const IHexapodJointCalculator > &joint_calculator_ptr)
std::vector< RobotStateNode > CreateInterpolatedNode(const RobotStateNode &node, const RobotStateNode &next_node) const
ノード間を補間する.
enums::Result result
成功か失敗か.
探索において目標となる座標や角度,評価する値についてまとめた構造体.
グラフ構造のためのノード(頂点).旧名 LNODE