26 #include <std_msgs/Bool.h> 27 #include <geometry_msgs/Twist.h> 35 class TwistMuxDiagnostics;
36 struct TwistMuxDiagnosticsStatus;
37 class VelocityTopicHandle;
38 class LockTopicHandle;
60 void publishTwist(
const geometry_msgs::TwistConstPtr& msg);
100 #endif // TWIST_MUX_H void updateDiagnostics(const ros::TimerEvent &event)
bool hasPriority(const VelocityTopicHandle &twist)
TwistMux(int window_size=10)
ros::Timer diagnostics_timer_
boost::shared_ptr< velocity_topic_container > velocity_hs_
velocity_hs_ Velocity topics' handles. Note that if we use a vector, as a consequence of the re-alloc...
TwistMuxDiagnostics diagnostics_type
TwistMuxDiagnosticsStatus status_type
geometry_msgs::Twist last_cmd_
boost::shared_ptr< lock_topic_container > lock_hs_
boost::shared_ptr< status_type > status_
boost::shared_ptr< diagnostics_type > diagnostics_
The TwistMux class implements a top-level twist multiplexer module that priorize different velocity c...
void getTopicHandles(ros::NodeHandle &nh, ros::NodeHandle &nh_priv, const std::string ¶m_name, std::list< T > &topic_hs)
static constexpr double DIAGNOSTICS_PERIOD
std::list< VelocityTopicHandle > velocity_topic_container
void publishTwist(const geometry_msgs::TwistConstPtr &msg)
std::list< LockTopicHandle > lock_topic_container