Go to the documentation of this file.
26 #ifndef TESSERACT_KINEMATICS_KINEMATICS_PLUGIN_FACTORY_H
27 #define TESSERACT_KINEMATICS_KINEMATICS_PLUGIN_FACTORY_H
34 #include <yaml-cpp/yaml.h>
41 #include <boost_plugin_loader/plugin_loader.hpp>
42 #include <boost_plugin_loader/macros.h>
46 #define TESSERACT_ADD_FWD_KIN_PLUGIN(DERIVED_CLASS, ALIAS) \
47 EXPORT_CLASS_SECTIONED(DERIVED_CLASS, ALIAS, FwdKin)
49 #define TESSERACT_ADD_INV_KIN_PLUGIN(DERIVED_CLASS, ALIAS) \
50 EXPORT_CLASS_SECTIONED(DERIVED_CLASS, ALIAS, InvKin)
56 class KinematicsPluginFactory;
57 class InverseKinematics;
58 class ForwardKinematics;
64 using Ptr = std::shared_ptr<InvKinFactory>;
65 using ConstPtr = std::shared_ptr<const InvKinFactory>;
77 virtual std::unique_ptr<InverseKinematics>
create(
const std::string& solver_name,
81 const YAML::Node& config)
const = 0;
92 using Ptr = std::shared_ptr<FwdKinFactory>;
93 using ConstPtr = std::shared_ptr<const FwdKinFactory>;
105 virtual std::unique_ptr<ForwardKinematics>
create(
const std::string& solver_name,
109 const YAML::Node& config)
const = 0;
175 const std::string& solver_name,
182 std::map<std::string, tesseract_common::PluginInfoContainer>
getFwdKinPlugins()
const;
189 void removeFwdKinPlugin(
const std::string& group_name,
const std::string& solver_name);
213 const std::string& solver_name,
220 std::map<std::string, tesseract_common::PluginInfoContainer>
getInvKinPlugins()
const;
227 void removeInvKinPlugin(
const std::string& group_name,
const std::string& solver_name);
252 std::unique_ptr<ForwardKinematics>
createFwdKin(
const std::string& group_name,
253 const std::string& solver_name,
265 std::unique_ptr<InverseKinematics>
createInvKin(
const std::string& group_name,
266 const std::string& solver_name,
276 std::unique_ptr<ForwardKinematics>
createFwdKin(
const std::string& solver_name,
287 std::unique_ptr<InverseKinematics>
createInvKin(
const std::string& solver_name,
296 void saveConfig(
const std::filesystem::path& file_path)
const;
315 #endif // TESSERACT_KINEMATICS_KINEMATICS_PLUGIN_FACTORY_H
void saveConfig(const std::filesystem::path &file_path) const
Save the plugin information to a yaml config file.
friend class boost_plugin_loader::PluginLoader
std::map< std::string, InvKinFactory::Ptr > inv_kin_factories_
Define a inverse kinematics plugin which the factory can create an instance.
std::map< std::string, FwdKinFactory::Ptr > fwd_kin_factories_
KinematicsPluginFactory & operator=(const KinematicsPluginFactory &)=default
std::string getDefaultFwdKinPlugin(const std::string &group_name) const
Get the default forward kinematics solver for a group.
std::map< std::string, tesseract_common::PluginInfoContainer > getInvKinPlugins() const
Get the map of inverse kinematic plugins.
void addInvKinPlugin(const std::string &group_name, const std::string &solver_name, tesseract_common::PluginInfo plugin_info)
Add a inverse kinematics plugin to the manager.
virtual std::unique_ptr< ForwardKinematics > create(const std::string &solver_name, const tesseract_scene_graph::SceneGraph &scene_graph, const tesseract_scene_graph::SceneState &scene_state, const KinematicsPluginFactory &plugin_factory, const YAML::Node &config) const =0
Create Inverse Kinematics Object.
std::map< std::string, tesseract_common::PluginInfoContainer > getFwdKinPlugins() const
Get the map of forward kinematic plugins.
#define TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
std::map< std::string, tesseract_common::PluginInfoContainer > inv_plugin_info_
Define a forward kinematics plugin which the factory can create an instance.
~KinematicsPluginFactory()
std::set< std::string > getSearchPaths() const
Get the plugin search paths.
virtual std::unique_ptr< InverseKinematics > create(const std::string &solver_name, const tesseract_scene_graph::SceneGraph &scene_graph, const tesseract_scene_graph::SceneState &scene_state, const KinematicsPluginFactory &plugin_factory, const YAML::Node &config) const =0
Create Inverse Kinematics Object.
std::string getDefaultInvKinPlugin(const std::string &group_name) const
Get the default forward inverse solver for a group.
friend class boost_plugin_loader::PluginLoader
std::shared_ptr< const FwdKinFactory > ConstPtr
static std::string getSection()
std::shared_ptr< FwdKinFactory > Ptr
std::unique_ptr< InverseKinematics > createInvKin(const std::string &group_name, const std::string &solver_name, const tesseract_scene_graph::SceneGraph &scene_graph, const tesseract_scene_graph::SceneState &scene_state) const
Get inverse kinematics object given group name and solver name.
static std::string getSection()
void removeInvKinPlugin(const std::string &group_name, const std::string &solver_name)
remove inverse kinematics plugin from the manager
void addSearchLibrary(const std::string &library_name)
Add a library to search for plugin name.
void addSearchPath(const std::string &path)
Add location for the plugin loader to search.
std::map< std::string, tesseract_common::PluginInfoContainer > fwd_plugin_info_
std::shared_ptr< InvKinFactory > Ptr
void removeFwdKinPlugin(const std::string &group_name, const std::string &solver_name)
remove forward kinematics plugin from the manager
std::unique_ptr< ForwardKinematics > createFwdKin(const std::string &group_name, const std::string &solver_name, const tesseract_scene_graph::SceneGraph &scene_graph, const tesseract_scene_graph::SceneState &scene_state) const
Get forward kinematics object given group name and solver name.
boost_plugin_loader::PluginLoader plugin_loader_
#define TESSERACT_COMMON_IGNORE_WARNINGS_POP
void setDefaultInvKinPlugin(const std::string &group_name, const std::string &solver_name)
Set a groups default inverse kinematics solver.
void loadConfig(const YAML::Node &config)
YAML::Node getConfig() const
Get the plugin information config as a yaml node.
std::set< std::string > getSearchLibraries() const
Get the plugin search libraries.
virtual ~FwdKinFactory()=default
KinematicsPluginFactory()
virtual ~InvKinFactory()=default
void addFwdKinPlugin(const std::string &group_name, const std::string &solver_name, tesseract_common::PluginInfo plugin_info)
Add a forward kinematics plugin to the manager.
std::shared_ptr< const InvKinFactory > ConstPtr
void setDefaultFwdKinPlugin(const std::string &group_name, const std::string &solver_name)
Set a groups default forward kinematics solver.