calibration_base.cpp
Go to the documentation of this file.
1 //
2 // Created by guanlin on 23-3-14.
3 //
4 
6 
8 {
9 template class CalibrationBase<rm_control::ActuatorExtraInterface, hardware_interface::EffortJointInterface>;
12 
13 template <typename... T>
15  ros::NodeHandle& controller_nh)
16 {
17  ros::NodeHandle vel_nh(controller_nh, "velocity");
18  velocity_ctrl_.init(robot_hw->get<hardware_interface::EffortJointInterface>(), vel_nh);
19  XmlRpc::XmlRpcValue actuator;
20  if (!controller_nh.getParam("actuator", actuator))
21  {
22  ROS_ERROR("No actuator given (namespace: %s)", controller_nh.getNamespace().c_str());
23  return false;
24  }
25  actuator_ = robot_hw->get<rm_control::ActuatorExtraInterface>()->getHandle(actuator[0]);
26  if (!vel_nh.getParam("search_velocity", velocity_search_))
27  {
28  ROS_ERROR("Search velocity was not specified (namespace: %s)", controller_nh.getNamespace().c_str());
29  return false;
30  }
31  // advertise service to check calibration
32  is_calibrated_srv_ = controller_nh.advertiseService("is_calibrated", &CalibrationBase<T...>::isCalibrated, this);
33  return true;
34 }
35 
36 template <typename... T>
38 {
39  actuator_.setCalibrated(false);
40  state_ = INITIALIZED;
41  if (actuator_.getCalibrated())
42  ROS_INFO("Joint %s will be recalibrated, but was already calibrated at offset %f",
43  velocity_ctrl_.getJointName().c_str(), actuator_.getOffset());
44 }
45 
46 template <typename... T>
48 {
49  calibration_success_ = false;
50 }
51 
52 template <typename... T>
53 bool CalibrationBase<T...>::isCalibrated(control_msgs::QueryCalibrationState::Request& req,
54  control_msgs::QueryCalibrationState::Response& resp)
55 {
56  ROS_DEBUG("Is calibrated service %d", calibration_success_);
57  resp.is_calibrated = calibration_success_;
58  return true;
59 }
60 } // namespace rm_calibration_controllers
hardware_interface::InterfaceManager::get
T * get()
ros::NodeHandle::getParam
bool getParam(const std::string &key, bool &b) const
ros::NodeHandle::advertiseService
ServiceServer advertiseService(AdvertiseServiceOptions &ops)
rm_calibration_controllers::CalibrationBase::isCalibrated
bool isCalibrated(control_msgs::QueryCalibrationState::Request &req, control_msgs::QueryCalibrationState::Response &resp)
Provide a service to know the state of target actuators.
Definition: calibration_base.cpp:53
getHandle
ROSCONSOLE_CONSOLE_IMPL_DECL void * getHandle(const std::string &name)
rm_control::GpioStateInterface
hardware_interface::RobotHW
ROS_DEBUG
#define ROS_DEBUG(...)
rm_calibration_controllers::CalibrationBase::starting
void starting(const ros::Time &time) override
Switch all of the actuators state to INITIALIZED.
Definition: calibration_base.cpp:37
rm_calibration_controllers::CalibrationBase::stopping
void stopping(const ros::Time &time) override
Definition: calibration_base.cpp:47
rm_calibration_controllers::CalibrationBase::init
bool init(hardware_interface::RobotHW *robot_hw, ros::NodeHandle &root_nh, ros::NodeHandle &controller_nh) override
Get necessary params from param server. Init joint_calibration_controller.
Definition: calibration_base.cpp:14
hardware_interface::EffortJointInterface
rm_calibration_controllers
Definition: calibration_base.h:17
rm_control::ActuatorExtraInterface
ros::Time
ROS_ERROR
#define ROS_ERROR(...)
rm_calibration_controllers::CalibrationBase
Definition: calibration_base.h:20
calibration_base.h
ros::NodeHandle::getNamespace
const std::string & getNamespace() const
ROS_INFO
#define ROS_INFO(...)
XmlRpc::XmlRpcValue
ros::NodeHandle


rm_calibration_controllers
Author(s): Qiayuan Liao
autogenerated on Sun May 4 2025 02:57:14