joint_position_controller.cpp
Go to the documentation of this file.
1 /*
2 Refered to Source file:
3  https://github.com/frankaemika/franka_ros/blob/develop/franka_example_controllers/src/joint_position_example_controller.cpp
4 */
5 
7 
8 #include <cmath>
9 
14 #include <ros/ros.h>
15 
16 namespace serl_franka_controllers {
17 
19  ros::NodeHandle& node_handle) {
21  if (position_joint_interface_ == nullptr) {
22  ROS_ERROR(
23  "JointPositionController: Error getting position joint interface from hardware!");
24  return false;
25  }
26  std::vector<std::string> joint_names;
27  if (!node_handle.getParam("joint_names", joint_names)) {
28  ROS_ERROR("JointPositionController: Could not parse joint names");
29  }
30  if (joint_names.size() != 7) {
31  ROS_ERROR_STREAM("JointPositionController: Wrong number of joint names, got "
32  << joint_names.size() << " instead of 7 names!");
33  return false;
34  }
35  position_joint_handles_.resize(7);
36  for (size_t i = 0; i < 7; ++i) {
37  try {
41  "JointPositionController: Exception getting joint handles: " << e.what());
42  return false;
43  }
44  }
45 
46  std::vector<double> target_positions;
47  if (!node_handle.getParam("/target_joint_positions", target_positions) || target_positions.size() != 7) {
48  ROS_ERROR("JointPositionController: Could not read target joint positions from parameter server or incorrect size");
49  return false;
50  }
51  for (size_t i = 0; i < 7; ++i) {
52  reset_pose_[i] = target_positions[i];
53  }
54 
55  return true;
56 }
57 
59  for (size_t i = 0; i < 7; ++i) {
60  initial_pose_[i] = position_joint_handles_[i].getPosition();
61  }
63 }
64 
66  const ros::Duration& period) {
67  elapsed_time_ += period;
68 
69  for (size_t i = 0; i < 7; ++i) {
70  if (elapsed_time_.toSec() > 10){
71  position_joint_handles_[i].setCommand(reset_pose_[i]); // - delta_angle);
72  }
73  else {
74  position_joint_handles_[i].setCommand( ((elapsed_time_.toSec()) / 10.0) * reset_pose_[i] + ((10 - elapsed_time_.toSec()) / 10.0) * initial_pose_[i]);
75  }
76  }
77 }
78 
79 } // namespace serl_franka_controllers
80 
serl_franka_controllers
Definition: cartesian_impedance_controller.h:25
PLUGINLIB_EXPORT_CLASS
PLUGINLIB_EXPORT_CLASS(moveit_fake_controller_manager::MoveItFakeControllerManager, moveit_controller_manager::MoveItControllerManager)
serl_franka_controllers::JointPositionController::reset_pose_
std::array< double, 7 > reset_pose_
Definition: joint_position_controller.h:30
ROS_ERROR_STREAM
#define ROS_ERROR_STREAM(args)
joint_position_controller.h
HardwareResourceManager< JointHandle, ClaimResources >::getHandle
JointHandle getHandle(const std::string &name)
hardware_interface::HardwareInterfaceException::what
const char * what() const noexcept override
hardware_interface::InterfaceManager::get
T * get()
ros::NodeHandle::getParam
bool getParam(const std::string &key, bool &b) const
ros.h
serl_franka_controllers::JointPositionController
Definition: joint_position_controller.h:17
serl_franka_controllers::JointPositionController::elapsed_time_
ros::Duration elapsed_time_
Definition: joint_position_controller.h:28
hardware_interface.h
class_list_macros.h
controller_interface::ControllerBase
serl_franka_controllers::JointPositionController::init
bool init(hardware_interface::RobotHW *robot_hardware, ros::NodeHandle &node_handle) override
Definition: joint_position_controller.cpp:18
joint_command_interface.h
hardware_interface::RobotHW
controller_base.h
serl_franka_controllers::JointPositionController::position_joint_handles_
std::vector< hardware_interface::JointHandle > position_joint_handles_
Definition: joint_position_controller.h:27
ROS_ERROR
#define ROS_ERROR(...)
hardware_interface::HardwareInterfaceException
ros::Time
joint_names
std::array< std::string, 7 > joint_names
serl_franka_controllers::JointPositionController::starting
void starting(const ros::Time &) override
Definition: joint_position_controller.cpp:58
serl_franka_controllers::JointPositionController::update
void update(const ros::Time &, const ros::Duration &period) override
Definition: joint_position_controller.cpp:65
DurationBase< Duration >::toSec
double toSec() const
hardware_interface::PositionJointInterface
ros::Duration
serl_franka_controllers::JointPositionController::initial_pose_
std::array< double, 7 > initial_pose_
Definition: joint_position_controller.h:29
serl_franka_controllers::JointPositionController::position_joint_interface_
hardware_interface::PositionJointInterface * position_joint_interface_
Definition: joint_position_controller.h:26
ros::NodeHandle


serl_franka_controllers
Author(s): Jianlan Luo, Charles Xu
autogenerated on Fri Feb 9 2024 03:09:57