position_velocity_torque_gains_command_interface.h
Go to the documentation of this file.
1 // Copyright (C) 2021, University of Oxford
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are met:
6 // * Redistributions of source code must retain the above copyright notice,
7 // this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above copyright
9 // notice, this list of conditions and the following disclaimer in the
10 // documentation and/or other materials provided with the distribution.
11 // * Neither the name of hiDOF, Inc. nor the names of its
12 // contributors may be used to endorse or promote products derived from
13 // this software without specific prior written permission.
14 //
15 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19 // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 // POSSIBILITY OF SUCH DAMAGE.
27 
29 
30 #pragma once
31 
32 
33 #include <cassert>
34 #include <string>
37 
38 namespace hardware_interface
39 {
40 
43 {
44 public:
46 
55  PositionVelocityTorqueGainsJointHandle(const JointStateHandle& js, double* cmd_pos, double* cmd_vel, double* cmd_eff, double* cmd_kp, double* cmd_kd)
56  : PosVelJointHandle(js, cmd_pos, cmd_vel), cmd_eff_(cmd_eff), cmd_kp_(cmd_kp), cmd_kd_(cmd_kd)
57  {
58  if (!cmd_eff)
59  {
60  throw HardwareInterfaceException("Cannot create handle '" + js.getName() + "'. Command effort data pointer is null.");
61  }
62 
63  if (!cmd_kp)
64  {
65  throw HardwareInterfaceException("Cannot create handle '" + js.getName() + "'. Command position gain data pointer is null.");
66  }
67 
68  if (!cmd_kd)
69  {
70  throw HardwareInterfaceException("Cannot create handle '" + js.getName() + "'. Command derivative gain data pointer is null.");
71  }
72  }
73 
74  void setCommand(double cmd_pos, double cmd_vel, double cmd_eff, double cmd_kp, double cmd_kd)
75  {
76  setCommandPosition(cmd_pos);
77  setCommandVelocity(cmd_vel);
78  setCommandEffort(cmd_eff);
79  setCommandKp(cmd_kp);
80  setCommandKd(cmd_kd);
81  }
82 
83  void setCommandEffort(double cmd_eff) {assert(cmd_eff_); *cmd_eff_ = cmd_eff;}
84  double getCommandEffort() const {assert(cmd_eff_); return *cmd_eff_;}
85 
86  void setCommandKp(double cmd_kp) {assert(cmd_kp_); *cmd_kp_ = cmd_kp;}
87  double getCommandKp() const {assert(cmd_kp_); return *cmd_kp_;}
88 
89  void setCommandKd(double cmd_kd) {assert(cmd_kd_); *cmd_kd_ = cmd_kd;}
90  double getCommandKd() const {assert(cmd_kd_); return *cmd_kd_;}
91 
92 private:
93  double* cmd_eff_ = {nullptr};
94  double* cmd_kp_ = {nullptr};
95  double* cmd_kd_ = {nullptr};
96 };
97 
98 
107 class PositionVelocityTorqueGainsJointInterface : public HardwareResourceManager<PositionVelocityTorqueGainsJointHandle, ClaimResources> {};
108 
109 }
hardware_interface::PositionVelocityTorqueGainsJointHandle::PositionVelocityTorqueGainsJointHandle
PositionVelocityTorqueGainsJointHandle()=default
hardware_interface::PositionVelocityTorqueGainsJointHandle::setCommandEffort
void setCommandEffort(double cmd_eff)
Definition: position_velocity_torque_gains_command_interface.h:83
posvel_command_interface.h
hardware_interface::PositionVelocityTorqueGainsJointHandle::setCommandKp
void setCommandKp(double cmd_kp)
Definition: position_velocity_torque_gains_command_interface.h:86
hardware_interface::PosVelJointHandle::setCommandVelocity
void setCommandVelocity(double cmd_vel)
Definition: posvel_command_interface.h:72
hardware_interface::PositionVelocityTorqueGainsJointHandle
A handle used to read and command a single joint.
Definition: position_velocity_torque_gains_command_interface.h:42
hardware_interface::PosVelJointHandle
A handle used to read and command a single joint.
Definition: posvel_command_interface.h:42
hardware_interface::PositionVelocityTorqueGainsJointHandle::getCommandKp
double getCommandKp() const
Definition: position_velocity_torque_gains_command_interface.h:87
hardware_interface
Definition: actuator_command_interface.h:36
hardware_interface::PositionVelocityTorqueGainsJointHandle::cmd_eff_
double * cmd_eff_
Definition: position_velocity_torque_gains_command_interface.h:93
hardware_interface::JointStateHandle
A handle used to read the state of a single joint. Currently, position, velocity and effort fields ar...
Definition: joint_state_interface.h:45
hardware_interface::PositionVelocityTorqueGainsJointInterface
Hardware interface to support commanding an array of joints.
Definition: position_velocity_torque_gains_command_interface.h:107
hardware_interface::PositionVelocityTorqueGainsJointHandle::getCommandEffort
double getCommandEffort() const
Definition: position_velocity_torque_gains_command_interface.h:84
hardware_interface::PositionVelocityTorqueGainsJointHandle::cmd_kd_
double * cmd_kd_
Definition: position_velocity_torque_gains_command_interface.h:95
hardware_interface::JointStateHandle::getName
std::string getName() const
Definition: joint_state_interface.h:166
hardware_interface::PositionVelocityTorqueGainsJointHandle::PositionVelocityTorqueGainsJointHandle
PositionVelocityTorqueGainsJointHandle(const JointStateHandle &js, double *cmd_pos, double *cmd_vel, double *cmd_eff, double *cmd_kp, double *cmd_kd)
Definition: position_velocity_torque_gains_command_interface.h:55
hardware_interface::HardwareInterfaceException
An exception related to a HardwareInterface.
Definition: hardware_interface.h:71
hardware_interface::PositionVelocityTorqueGainsJointHandle::cmd_kp_
double * cmd_kp_
Definition: position_velocity_torque_gains_command_interface.h:94
hardware_interface::PositionVelocityTorqueGainsJointHandle::setCommandKd
void setCommandKd(double cmd_kd)
Definition: position_velocity_torque_gains_command_interface.h:89
hardware_interface::PosVelJointHandle::setCommandPosition
void setCommandPosition(double cmd_pos)
Definition: posvel_command_interface.h:71
hardware_interface::HardwareResourceManager
Base class for handling hardware resources.
Definition: hardware_resource_manager.h:79
hardware_interface::PositionVelocityTorqueGainsJointHandle::getCommandKd
double getCommandKd() const
Definition: position_velocity_torque_gains_command_interface.h:90
hardware_interface::PositionVelocityTorqueGainsJointHandle::setCommand
void setCommand(double cmd_pos, double cmd_vel, double cmd_eff, double cmd_kp, double cmd_kd)
Definition: position_velocity_torque_gains_command_interface.h:74
hardware_resource_manager.h


hardware_interface
Author(s): Wim Meeussen, Adolfo Rodriguez Tsouroukdissian
autogenerated on Fri Nov 3 2023 02:07:57