#pragma once #include #include #include #include "scene_monitor_interfaces/msg/grasp_pose.hpp" #include "nlohmann_json/json.hpp" namespace component_state_monitor { using json = nlohmann::json; /* Description: Initialized: - state when model is initialized by provided metadata Printed: - model is ready for manipulation and other operations in sim/real Posted: - model is posted with another */ enum ComponentState { Initialized, Printed, Posted }; class Component { public: Component(); Component(const std::string &frame_name); ComponentState getCurrentState() const; std::string getFrameName() const; scene_monitor_interfaces::msg::GraspPose getGraspPose(const std::string &grasp_pose_name) const; std::vector getGraspPoses() const; geometry_msgs::msg::Pose getPlacementPose() const; void setFrameName(const std::string &frame_name); void initializeFromJson(json &input); void updateState(const ComponentState &state); private: std::string _frame_name; ComponentState _current_state; geometry_msgs::msg::Pose _placement; std::map _grasp_poses; geometry_msgs::msg::Pose _current_pose; }; }