15#ifndef GZ_ROS2_CONTROL_PLUGIN_UTILS_HPP_
16#define GZ_ROS2_CONTROL_PLUGIN_UTILS_HPP_
23#include <gz/sim/Entity.hh>
24#include <gz/sim/EntityComponentManager.hh>
25#include <sdf/Element.hh>
27#include <rclcpp/duration.hpp>
28#include <rclcpp/logger.hpp>
31namespace gz_ros2_control::detail
63std::optional<PluginConfig> ParsePluginConfig(
64 const sdf::ElementConstPtr & sdf, std::string & error);
67std::string NormalizeNamespace(
const std::string & ns);
70std::vector<std::string> BuildRosArguments(
const PluginConfig & config);
77std::map<std::string, gz::sim::Entity> GetEnabledJoints(
78 const gz::sim::Entity & model,
79 const gz::sim::EntityComponentManager & ecm,
80 const rclcpp::Logger & logger);
83enum class PeriodMismatch
91PeriodMismatch CheckPeriodMismatch(
92 const rclcpp::Duration & control_period,
93 const rclcpp::Duration & gazebo_period);
99 const rclcpp::Duration & sim_period,
100 const rclcpp::Duration & control_period);
Plugin settings read from the <plugin> SDF element.
Definition gz_ros2_control_plugin_utils.hpp:35
std::string controller_manager_name
Value of <controller_manager_name>
Definition gz_ros2_control_plugin_utils.hpp:40
double position_proportional_gain
Value of <position_proportional_gain>
Definition gz_ros2_control_plugin_utils.hpp:50
bool hold_joints
Value of <hold_joints>
Definition gz_ros2_control_plugin_utils.hpp:47
std::string ns
Value of <ros><namespace>, normalized with NormalizeNamespace.
Definition gz_ros2_control_plugin_utils.hpp:53
std::vector< std::string > remappings
Values of all the <ros><remapping> elements, in order.
Definition gz_ros2_control_plugin_utils.hpp:56
std::vector< std::string > parameter_files
Values of all the <parameters> elements, in order.
Definition gz_ros2_control_plugin_utils.hpp:37
double hardware_init_timeout
Value of <hardware_init_timeout>, seconds to wait for the hardware to be initialized,...
Definition gz_ros2_control_plugin_utils.hpp:44