3#include <control_msgs/JointControllerState.h>
4#include <control_toolbox/pid.h>
5#include <controller_interface/controller.h>
6#include <hardware_interface/joint_command_interface.h>
7#include <quad_msgs/LegCommand.h>
8#include <quad_msgs/LegCommandArray.h>
9#include <quad_msgs/MotorCommand.h>
10#include <quad_utils/ros_utils.h>
11#include <realtime_tools/realtime_buffer.h>
12#include <realtime_tools/realtime_publisher.h>
13#include <ros/node_handle.h>
14#include <urdf/model.h>
16namespace effort_controllers {
24 hardware_interface::EffortJointInterface> {
25 typedef std::vector<quad_msgs::LegCommand> BufferType;
31 bool init(hardware_interface::EffortJointInterface* hw, ros::NodeHandle& n);
32 void update(
const ros::Time& ,
const ros::Duration& );
34 std::vector<std::string> joint_names_;
35 std::vector<hardware_interface::JointHandle> joints_;
36 realtime_tools::RealtimeBuffer<BufferType> commands_buffer_;
37 unsigned int n_joints_;
51 std::vector<double> speed_lims_;
53 void commandCB(
const quad_msgs::LegCommandArrayConstPtr& msg);
54 void enforceJointLimits(
double& command,
unsigned int index);
Forward command controller for quad.
Definition controller_plugin.h:24
std::vector< urdf::JointConstSharedPtr > joint_urdfs_
Store reference to gazebo joints.
Definition controller_plugin.h:44
ros::Subscriber sub_command_
Subscriber for new LegCommandArray messages.
Definition controller_plugin.h:41
std::map< int, std::pair< int, int > > leg_map_
Map gazebo/urdf joint indices to leg/joint pair.
Definition controller_plugin.h:47
QuadController()
Forward command controller for a set of effort controlled joints (torque or force).
Definition controller_plugin.cpp:23
std::vector< double > torque_lims_
Torque limits for each motor.
Definition controller_plugin.h:50