/********************************************************************* * * Software License Agreement (BSD License) * * Nguồn mission từ một goal đơn lẻ (schema "geometry.pose_stamped"). * * Author: DuongTD *********************************************************************/ #ifndef MISSION_ADAPTERS_PLUGINS_GOAL_SOURCE_ADAPTER_H_ #define MISSION_ADAPTERS_PLUGINS_GOAL_SOURCE_ADAPTER_H_ #include #include #include #include #include namespace mission_plugins { /** * @class GoalSourceAdapter * @brief Goal đơn lẻ từ host -> đúng một mission. * * Không có state giữa các lần gọi, nhưng vẫn không dùng biến static: một tiến trình có thể chạy * nhiều instance (nhiều robot mô phỏng) và state static sẽ nối chúng lại với nhau. */ class GoalSourceAdapter : public mission_adapters::MissionSourceAdapter { public: /// @brief Factory được PluginRegistry nạp qua boost::dll::import_alias. static mission_adapters::MissionSourceAdapter::Ptr create(); bool configure(const std::string& name, robot::NodeHandle& nh) override; std::string schema() const override; bool validate(const mission_adapters::MissionRequest& request, std::string& reason) const override; mission_adapters::ConversionResult convert(const mission_adapters::MissionRequest& request) override; private: /// Dưới ngưỡng này thì quaternion coi như không mang hướng nào. [không đơn vị] static constexpr double kMinQuaternionNorm = 1e-6; std::string name_; }; } // namespace mission_plugins #endif // MISSION_ADAPTERS_PLUGINS_GOAL_SOURCE_ADAPTER_H_