15 #ifndef OPENNAV_DOCKING__DOCK_DATABASE_HPP_
16 #define OPENNAV_DOCKING__DOCK_DATABASE_HPP_
23 #include "rclcpp/rclcpp.hpp"
24 #include "pluginlib/class_loader.hpp"
25 #include "pluginlib/class_list_macros.hpp"
27 #include "nav2_util/lifecycle_node.hpp"
28 #include "nav2_util/node_utils.hpp"
29 #include "nav2_util/simple_action_server.hpp"
30 #include "opennav_docking/utils.hpp"
31 #include "opennav_docking/types.hpp"
32 #include "nav2_msgs/srv/reload_dock_database.hpp"
34 namespace opennav_docking
46 explicit DockDatabase(std::shared_ptr<std::mutex> mutex = std::make_shared<std::mutex>());
55 const rclcpp_lifecycle::LifecycleNode::WeakPtr & parent, std::shared_ptr<tf2_ros::Buffer> tf);
106 const rclcpp_lifecycle::LifecycleNode::SharedPtr & node, std::shared_ptr<tf2_ros::Buffer> tf);
112 bool getDockInstances(
const rclcpp_lifecycle::LifecycleNode::SharedPtr & node);
127 const std::shared_ptr<nav2_msgs::srv::ReloadDockDatabase::Request> request,
128 std::shared_ptr<nav2_msgs::srv::ReloadDockDatabase::Response> response);
130 rclcpp_lifecycle::LifecycleNode::WeakPtr node_;
131 std::shared_ptr<std::mutex> mutex_;
132 DockPluginMap dock_plugins_;
133 DockMap dock_instances_;
134 pluginlib::ClassLoader<opennav_docking_core::ChargingDock> dock_loader_;
135 rclcpp::Service<nav2_msgs::srv::ReloadDockDatabase>::SharedPtr reload_db_service_;
An object to contain docks and docking plugins.
Dock * findDock(const std::string &dock_id)
Find a dock instance & plugin in the databases from ID.
void reloadDbCb(const std::shared_ptr< nav2_msgs::srv::ReloadDockDatabase::Request > request, std::shared_ptr< nav2_msgs::srv::ReloadDockDatabase::Response > response)
Service request to reload database of docks.
bool getDockInstances(const rclcpp_lifecycle::LifecycleNode::SharedPtr &node)
Populate database of dock instances.
Dock * findDockInstance(const std::string &dock_id)
Find a dock instance in the database from ID.
bool initialize(const rclcpp_lifecycle::LifecycleNode::WeakPtr &parent, std::shared_ptr< tf2_ros::Buffer > tf)
A setup function to populate database.
ChargingDock::Ptr findDockPlugin(const std::string &type)
Find a dock plugin to use for a given type.
void deactivate()
An deactivation method.
unsigned int plugin_size() const
Get the number of dock types in the database.
~DockDatabase()
A destructor for opennav_docking::DockDatabase.
unsigned int instance_size() const
Get the number of docks in the database.
DockDatabase(std::shared_ptr< std::mutex > mutex=std::make_shared< std::mutex >())
A constructor for opennav_docking::DockDatabase.
void activate()
An activation method.
bool getDockPlugins(const rclcpp_lifecycle::LifecycleNode::SharedPtr &node, std::shared_ptr< tf2_ros::Buffer > tf)
Populate database of dock type plugins.