SVHDiagnostics.cpp
Go to the documentation of this file.
1 //
3 // © Copyright 2022 SCHUNK Mobile Greifsysteme GmbH, Lauffen/Neckar Germany
4 // © Copyright 2022 FZI Forschungszentrum Informatik, Karlsruhe, Germany
5 //
6 // This file is part of the Schunk SVH Driver.
7 //
8 // The Schunk SVH Driver is free software: you can redistribute it and/or
9 // modify it under the terms of the GNU General Public License as published by
10 // the Free Software Foundation, either version 3 of the License, or (at your
11 // option) any later version.
12 //
13 // The Schunk SVH Driver is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
16 // Public License for more details.
17 //
18 // You should have received a copy of the GNU General Public License along with
19 // the Schunk SVH Driver. If not, see <https://www.gnu.org/licenses/>.
20 //
22 
23 //----------------------------------------------------------------------
31 //----------------------------------------------------------------------
32 #include "SVHDiagnostics.h"
33 
34 
36  std::shared_ptr<driver_svh::SVHFingerManager>& finger_manager,
37  std::function<void(bool)> enable_ros_contol_loop,
38  std::function<void(uint16_t, uint16_t)> init_controller_parameters,
39  std::string name)
40  : m_priv_nh(nh)
41  , m_diagnostics_action_server(
42  m_priv_nh,
43  name,
44  std::bind(&SVHDiagnostics::basicTestCallback, this, std::placeholders::_1),
45  false)
46  , m_action_name(name)
47  , m_finger_manager(finger_manager)
48  , m_enable_ros_contol_loop(enable_ros_contol_loop)
49  , m_init_controller_parameters(init_controller_parameters)
50 {
55  m_pub_protocol_variables = m_priv_nh.advertise<schunk_svh_msgs::SVHDiagnosticsToProtocol>(
56  "diagnostic_info_to_protocol", 1);
57 
58  m_basic_test_running = false;
59 
61 }
62 
64 {
65  m_finger_manager.reset();
66 }
67 
69 {
70  // First: read out the actual hand version again, not manual set possible
71  // firmware of the mounted SVH
72  driver_svh::SVHFirmwareInfo firmware_info = m_finger_manager->getFirmwareInfo();
73  std::stringstream firmware;
74  firmware << (int)firmware_info.version_major << "." << (int)firmware_info.version_minor;
75  m_msg_protocol_variable.firmware = firmware.str();
76 
77  // Second: set the parameter values for the actual hand to the finger manager,
78  // manipulatet preferences like max_force have to be set again, after diagnostics test
79  m_init_controller_parameters(firmware_info.version_major, firmware_info.version_minor);
80 
81  // usefull variables from the driver_svh
82  driver_svh::SVHHomeSettings home_settings;
83  driver_svh::SVHCurrentSettings current_settings;
84 
85  m_action_feedback.fingers.clear();
86 
87  // init the indidividual finger params
88  for (size_t channel = 0; channel < driver_svh::SVH_DIMENSION; ++channel)
89  {
90  schunk_svh_msgs::SVHDiagnosticsFinger finger;
91  finger.channel = channel;
92  finger.current_max_actual = 10;
93  finger.current_min_actual = 100;
94  finger.position_range_actual = 0;
95  finger.encoder = false;
96  finger.motor = false;
97 
98  m_finger_manager->getCurrentSettings(static_cast<driver_svh::SVHChannel>(channel),
99  current_settings);
100  m_finger_manager->getHomeSettings(static_cast<driver_svh::SVHChannel>(channel), home_settings);
101 
102  finger.current_max_target = home_settings.reset_current_factor * current_settings.wmx;
103  finger.current_min_target = home_settings.reset_current_factor * current_settings.wmn;
104  finger.position_range_target =
105  abs(abs(home_settings.maximum_offset) - abs(home_settings.minimum_offset));
107 
108  m_action_feedback.fingers.push_back(finger);
109  }
110 
111  // initialize reset success vector
113 }
114 
115 void SVHDiagnostics::basicTestCallback(const schunk_svh_msgs::SVHDiagnosticsGoalConstPtr& goal)
116 {
117  m_msg_protocol_variable.date_as_string = goal->date_as_string;
118 
120 
121  if (m_basic_test_running == false && m_finger_manager->isConnected())
122  {
123  initTest();
124 
125  // reset the actual data of the finger vector
127  bool basic_test_success = true;
128 
130 
131  m_basic_test_running = true;
132  m_serial_no = goal->serial_no;
133 
134  m_assembly_of = goal->assembly_of;
135 
136  m_execution_L = goal->execution_L;
137  m_execution_R = goal->execution_R;
138  m_communication = goal->communication;
139 
140  // get current / home settings from the finger manager
141  driver_svh::SVHHomeSettings home_settings;
142  struct driver_svh::SVHFingerManager::DiagnosticState diagnostic_data;
143 
144  // clear reset success vector to false
145  ROS_INFO("SVHDiagnostics - Resetting all fingers ...");
147 
148  // reset the finger vector with the diagnostic data, if basic test get executed multiple times
149  m_finger_manager->resetDiagnosticData(static_cast<driver_svh::SVHChannel>(driver_svh::SVH_ALL));
150 
151  for (size_t channel = 0; channel < driver_svh::SVH_DIMENSION; ++channel)
152  {
153  schunk_svh_msgs::SVHDiagnosticsFinger finger = m_action_feedback.fingers[channel];
154 
155  for (int i = 0; i <= 1; i++) // for both hardware constraints (pos/neg)
156  {
157  // check that preempt has not been requested by the client
159  {
160  // set the negative direction to reach the negative reset point first, than the normal one
161  m_finger_manager->getHomeSettings(static_cast<driver_svh::SVHChannel>(channel),
162  home_settings);
163  home_settings.direction = home_settings.direction * (-1);
164  m_finger_manager->setHomeSettings(static_cast<driver_svh::SVHChannel>(channel),
165  home_settings);
166 
167  // The Heart of the program
168  reset_success[channel] =
169  m_finger_manager->resetChannel(static_cast<driver_svh::SVHChannel>(channel));
170  ROS_DEBUG_STREAM("Channel " << channel << " reset success = " << reset_success[channel]
171  ? "true"
172  : "false");
173 
174  m_finger_manager->getDiagnosticStatus(static_cast<driver_svh::SVHChannel>(channel),
175  diagnostic_data);
176 
177  finger.current_max_actual = diagnostic_data.diagnostic_current_maximum;
178  finger.current_min_actual = diagnostic_data.diagnostic_current_minimum;
179  finger.encoder = diagnostic_data.diagnostic_encoder_state;
180  finger.motor = diagnostic_data.diagnostic_motor_state;
181  finger.position_range_actual = diagnostic_data.diagnostic_position_maximum -
182  diagnostic_data.diagnostic_position_minimum;
183 
184  m_action_feedback.fingers[channel] = finger;
185 
187  }
188  else
189  {
190  ROS_INFO("%s: Preempted", m_action_name.c_str());
191  // set the action state to preempted
193  break;
194  }
195  }
196  // summery of all resets
197  basic_test_success &= reset_success[channel];
198  }
199 
200  // debugOuput();
201 
202  m_basic_test_running = false;
203 
204  if (basic_test_success)
205  { // if successed than just send this
206  ROS_INFO_STREAM("SVHDiagnostics - Basic test by reset routine for the Hand: SVH "
207  << m_serial_no
208  << " was: " << (basic_test_success ? "successfull" : "FAILED!"));
209  }
210 
212 
214  }
215  else
216  {
217  schunk_svh_msgs::SVHDiagnosticsResult action_result;
218 
219  action_result.result = -1;
220  action_result.channel = -1;
221 
223 
224  ROS_ERROR("No hand connected!");
225  }
226 
228 }
229 
230 schunk_svh_msgs::SVHDiagnosticsResult SVHDiagnostics::evaluateBasicTest()
231 {
232  ROS_INFO_STREAM("SVHDiagnostics - Evaluate the Basic Test");
233 
234  schunk_svh_msgs::SVHDiagnosticsResult action_result;
235 
236  action_result.result = zero_defect;
237  action_result.channel = -1;
238 
239  // failure of :
240  // 1st controller board both encoder and motor
241  if (m_action_feedback.fingers[0].encoder == false &&
242  m_action_feedback.fingers[1].encoder == false &&
243  m_action_feedback.fingers[2].encoder == false &&
244  m_action_feedback.fingers[3].encoder == false &&
245  m_action_feedback.fingers[4].encoder == false &&
246  m_action_feedback.fingers[0].motor == false && m_action_feedback.fingers[1].motor == false &&
247  m_action_feedback.fingers[2].motor == false && m_action_feedback.fingers[3].motor == false &&
248  m_action_feedback.fingers[4].motor == false)
249  {
250  action_result.result = board_one;
251  ROS_WARN_STREAM("SVHDiagnostics::evaluateBasicTest: failure of : 1nd controller board both "
252  "encoder and motor");
253  return action_result;
254  }
255 
256  // 2nd controller board both encoder and motor
257  if (m_action_feedback.fingers[5].encoder == false &&
258  m_action_feedback.fingers[6].encoder == false &&
259  m_action_feedback.fingers[7].encoder == false &&
260  m_action_feedback.fingers[8].encoder == false &&
261  m_action_feedback.fingers[5].motor == false && m_action_feedback.fingers[6].motor == false &&
262  m_action_feedback.fingers[7].motor == false && m_action_feedback.fingers[8].motor == false)
263  {
264  action_result.result = board_two;
265  ROS_WARN_STREAM("SVHDiagnostics::evaluateBasicTest: failure of : 2nd controller board both "
266  "encoder and motor");
267  return action_result;
268  }
269 
270  // 1st controller board encoder
271  if (m_action_feedback.fingers[0].encoder == false &&
272  m_action_feedback.fingers[1].encoder == false &&
273  m_action_feedback.fingers[2].encoder == false &&
274  m_action_feedback.fingers[3].encoder == false &&
275  m_action_feedback.fingers[4].encoder == false)
276  {
277  action_result.result = board_one_encoder;
278  ROS_WARN_STREAM("SVHDiagnostics::evaluateBasicTest: failure of : 1nd controller board encoder");
279  return action_result;
280  }
281 
282  // 1st controller board motor
283  if (m_action_feedback.fingers[0].motor == false && m_action_feedback.fingers[1].motor == false &&
284  m_action_feedback.fingers[2].motor == false && m_action_feedback.fingers[3].motor == false &&
285  m_action_feedback.fingers[4].motor == false)
286  {
287  action_result.result = board_one_motor;
288  ROS_WARN_STREAM("SVHDiagnostics::evaluateBasicTest: failure of : 1nd controller board motor");
289  return action_result;
290  }
291 
292  // 2nd controller board encoder
293  if (m_action_feedback.fingers[5].encoder == false &&
294  m_action_feedback.fingers[6].encoder == false &&
295  m_action_feedback.fingers[7].encoder == false &&
296  m_action_feedback.fingers[8].encoder == false)
297  {
298  action_result.result = board_two_encoder;
299  ROS_WARN_STREAM("SVHDiagnostics::evaluateBasicTest: failure of : 2nd controller board encoder");
300  return action_result;
301  }
302 
303  // 2nd controller board motor
304  if (m_action_feedback.fingers[5].motor == false && m_action_feedback.fingers[6].motor == false &&
305  m_action_feedback.fingers[7].motor == false && m_action_feedback.fingers[8].motor == false)
306  {
307  action_result.result = board_two_motor;
308  ROS_WARN_STREAM("SVHDiagnostics::evaluateBasicTest: failure of : 2nd controller board motor");
309  return action_result;
310  }
311 
312  // encoder and motor failure, any finger
313  for (size_t i = 0; i < driver_svh::SVH_DIMENSION; i++)
314  {
315  if (m_action_feedback.fingers[i].motor == false &&
316  m_action_feedback.fingers[i].encoder == false)
317  {
318  action_result.result = encoder_motor;
319  action_result.channel = i;
321  "SVHDiagnostics::evaluateBasicTest: encoder and motor failure, finger: " << i);
322  return action_result;
323  }
324  }
325 
326  // encoder not working, any finger
327  for (size_t i = 0; i < driver_svh::SVH_DIMENSION; i++)
328  {
329  if (m_action_feedback.fingers[i].encoder == false)
330  {
331  action_result.result = encoder;
332  action_result.channel = i;
333  ROS_WARN_STREAM("SVHDiagnostics::evaluateBasicTest: encoder not working, finger: " << i);
334  return action_result;
335  }
336  }
337 
338  // motor not working, any finger
339  for (size_t i = 0; i < driver_svh::SVH_DIMENSION; i++)
340  {
341  if (m_action_feedback.fingers[i].motor == false)
342  {
343  action_result.result = motor;
344  action_result.channel = i;
345  ROS_WARN_STREAM("SVHDiagnostics::evaluateBasicTest: motor not working, finger: " << i);
346  return action_result;
347  }
348  }
349 
350  // motor don't get enough current, any finger
351  for (size_t i = 0; i < driver_svh::SVH_DIMENSION; i++)
352  {
353  if (m_action_feedback.fingers[i].current_max_actual <
354  m_action_feedback.fingers[i].current_max_target ||
355  m_action_feedback.fingers[i].current_min_actual >
356  m_action_feedback.fingers[i].current_min_target)
357  {
358  action_result.result = current_range;
359  action_result.channel = i;
361  "SVHDiagnostics::evaluateBasicTest: motor don't get enough current, finger: " << i);
362  return action_result;
363  }
364  }
365 
366  // position range is not enough, any finger
367  for (size_t i = 0; i < driver_svh::SVH_DIMENSION; i++)
368  {
369  if (m_action_feedback.fingers[i].position_range_actual <
370  m_action_feedback.fingers[i].position_range_target)
371  {
372  action_result.result = position_range;
373  action_result.channel = i;
375  "SVHDiagnostics::evaluateBasicTest: position range is not enough, finger: " << i);
376  return action_result;
377  }
378  }
379 
380  // basic test successfully without an error
381  action_result.result = zero_defect;
382  ROS_DEBUG("No error detected! Basic test successfully");
383  return action_result;
384 }
385 
387 {
388  for (size_t channel = 0; channel < driver_svh::SVH_DIMENSION; ++channel)
389  {
390  schunk_svh_msgs::SVHDiagnosticsFinger finger = m_action_feedback.fingers[channel];
391  finger.current_max_actual = 0;
392  finger.current_min_actual = 0;
393  finger.position_range_actual = 0;
394  finger.encoder = false;
395  finger.motor = false;
396 
397  m_action_feedback.fingers[channel] = finger;
398  }
399 }
400 
402 {
403  // get current / home settings from the finger manager
404  driver_svh::SVHHomeSettings home_settings;
405  driver_svh::SVHCurrentSettings current_settings;
406  struct driver_svh::SVHFingerManager::DiagnosticState diagnostic_data;
407 
408  // ---------------- evaluation output of the finger resets
409  ROS_INFO_STREAM("SVHDiagnostics - Results of basic test:");
410 
411  for (size_t channel = 0; channel < reset_success.size(); ++channel)
412  {
413  m_finger_manager->getCurrentSettings(static_cast<driver_svh::SVHChannel>(channel),
414  current_settings);
415  m_finger_manager->getHomeSettings(static_cast<driver_svh::SVHChannel>(channel), home_settings);
416  m_finger_manager->getDiagnosticStatus(static_cast<driver_svh::SVHChannel>(channel),
417  diagnostic_data);
418 
419  double desired_current_neg, desired_current_pos;
420  double max_current, min_current;
421  double max_position, min_position;
422  double deadlock;
423 
424  desired_current_pos = home_settings.reset_current_factor * current_settings.wmx;
425  desired_current_neg = home_settings.reset_current_factor * current_settings.wmn;
426  max_current = diagnostic_data.diagnostic_current_maximum;
427  min_current = diagnostic_data.diagnostic_current_minimum;
428  max_position = diagnostic_data.diagnostic_position_maximum;
429  min_position = diagnostic_data.diagnostic_position_minimum;
430  deadlock = diagnostic_data.diagnostic_deadlock;
431 
432  ROS_INFO_STREAM("Channel: " << channel);
434  << " reset: \t" << (reset_success[channel] ? "OK" : "FAILED"));
435  ROS_INFO_STREAM("Maximal position: " << max_position << "\t minimal position: " << min_position
436  << "\t maximal current: " << max_current << " / "
437  << desired_current_pos
438  << "\t minimal current: " << min_current << " / "
439  << desired_current_neg << " deadlock: " << deadlock);
440  ROS_INFO_STREAM("Position range: " << max_position - min_position << " max position: "
441  << max_position << " min position: " << min_position);
442  }
443 }
444 
446 {
448 
449  // serial no. and testers name got from web side
450  m_msg_protocol_variable.serial_number = m_serial_no;
455 
456  m_msg_protocol_variable.ppnr = " ";
457 
458  for (size_t channel = 0; channel < driver_svh::SVH_DIMENSION; ++channel)
459  {
460  m_msg_protocol_variable.joint[channel] =
461  (m_action_feedback.fingers[channel].encoder && m_action_feedback.fingers[channel].motor &&
462  (m_action_feedback.fingers[channel].position_range_actual >
463  m_action_feedback.fingers[channel].position_range_target) &&
464  (m_action_feedback.fingers[channel].current_max_actual >=
465  m_action_feedback.fingers[channel].current_max_target) &&
466  (m_action_feedback.fingers[channel].current_min_actual <=
467  m_action_feedback.fingers[channel].current_min_target));
468  }
469 
471 }
472 
474 {
475  // date will be evaluate in SVHProtocol
477  m_msg_protocol_variable.serial_number = "";
478  m_msg_protocol_variable.firmware = "";
479  m_msg_protocol_variable.assembly_of = "";
480  m_msg_protocol_variable.execution_L = false;
481  m_msg_protocol_variable.execution_R = false;
482  m_msg_protocol_variable.communication = false;
483 
484  // not used till now!!
485  m_msg_protocol_variable.ppnr = "XXXX";
486  m_msg_protocol_variable.assignment = "";
487  m_msg_protocol_variable.repair = false;
488 
489  m_msg_protocol_variable.usb_isolator = false;
490  m_msg_protocol_variable.transport_position = false;
491  m_msg_protocol_variable.usb_cabel = false;
492  m_msg_protocol_variable.power_source = false;
493  m_msg_protocol_variable.cd = false;
494  m_msg_protocol_variable.description = false;
495  m_msg_protocol_variable.mecovis_description = false;
496  m_msg_protocol_variable.short_description = false;
497 }
SVHDiagnostics::initTest
void initTest()
initialize the protocol variables
Definition: SVHDiagnostics.cpp:68
driver_svh::SVHCurrentSettings::wmx
float wmx
SVHDiagnostics::m_pub_protocol_variables
ros::Publisher m_pub_protocol_variables
publisher to the protocol variables
Definition: SVHDiagnostics.h:186
SVHDiagnostics
Definition: SVHDiagnostics.h:70
SVHDiagnostics::m_init_controller_parameters
std::function< void(uint16_t, uint16_t)> m_init_controller_parameters
Definition: SVHDiagnostics.h:147
SVHDiagnostics::m_msg_protocol_variable
schunk_svh_msgs::SVHDiagnosticsToProtocol m_msg_protocol_variable
Message for the Protocol variable.
Definition: SVHDiagnostics.h:189
actionlib::SimpleActionServer::start
void start()
SVHDiagnostics::board_two
@ board_two
Definition: SVHDiagnostics.h:207
driver_svh::SVHController::m_channel_description
static const char * m_channel_description[]
SVHDiagnostics::m_assembly_of
std::string m_assembly_of
Name of the testing person.
Definition: SVHDiagnostics.h:173
driver_svh::SVHHomeSettings::reset_current_factor
float reset_current_factor
SVHDiagnostics::~SVHDiagnostics
~SVHDiagnostics()
Default DTOR.
Definition: SVHDiagnostics.cpp:63
ROS_DEBUG
#define ROS_DEBUG(...)
driver_svh::SVH_ALL
SVH_ALL
SVHDiagnostics::m_enable_ros_contol_loop
std::function< void(bool)> m_enable_ros_contol_loop
Definition: SVHDiagnostics.h:141
driver_svh::SVH_DIMENSION
SVH_DIMENSION
SVHDiagnostics::encoder_motor
@ encoder_motor
Definition: SVHDiagnostics.h:212
driver_svh::SVHHomeSettings::minimum_offset
float minimum_offset
actionlib::SimpleActionServer::isPreemptRequested
bool isPreemptRequested()
ROS_DEBUG_STREAM
#define ROS_DEBUG_STREAM(args)
SVHDiagnostics::position_range
@ position_range
Definition: SVHDiagnostics.h:216
ros::Publisher::publish
void publish(const boost::shared_ptr< M > &message) const
actionlib::SimpleActionServer::publishFeedback
void publishFeedback(const Feedback &feedback)
actionlib::SimpleActionServer::setSucceeded
void setSucceeded(const Result &result=Result(), const std::string &text=std::string(""))
ros::NodeHandle::advertise
Publisher advertise(AdvertiseOptions &ops)
SVHDiagnostics::board_one_encoder
@ board_one_encoder
Definition: SVHDiagnostics.h:208
driver_svh::SVHFingerManager::DiagnosticState::diagnostic_current_maximum
double diagnostic_current_maximum
ros::ok
ROSCPP_DECL bool ok()
driver_svh::SVHFingerManager::DiagnosticState::diagnostic_current_minimum
double diagnostic_current_minimum
SVHDiagnostics::m_execution_L
bool m_execution_L
Definition: SVHDiagnostics.h:177
ROS_WARN_STREAM
#define ROS_WARN_STREAM(args)
SVHDiagnostics::m_execution_R
bool m_execution_R
Type of the Hand, No/ L / R.
Definition: SVHDiagnostics.h:176
driver_svh::SVHFingerManager::DiagnosticState::diagnostic_deadlock
double diagnostic_deadlock
driver_svh::SVHHomeSettings::maximum_offset
float maximum_offset
driver_svh::SVHFingerManager::DiagnosticState::diagnostic_motor_state
bool diagnostic_motor_state
SVHDiagnostics::debugOuput
void debugOuput()
debugOutput prints the diagnostic data of all finger
Definition: SVHDiagnostics.cpp:401
SVHDiagnostics::zero_defect
@ zero_defect
Definition: SVHDiagnostics.h:205
SVHDiagnostics::board_one_motor
@ board_one_motor
Definition: SVHDiagnostics.h:209
driver_svh::SVHFingerManager::DiagnosticState::diagnostic_position_maximum
double diagnostic_position_maximum
SVHDiagnostics::SVHDiagnostics
SVHDiagnostics(const ros::NodeHandle &nh, std::shared_ptr< driver_svh::SVHFingerManager > &finger_manager, std::function< void(bool)> enable_ros_contol_loop, std::function< void(uint16_t, uint16_t)> init_controller_parameters, std::string name)
SVHDiagnostics constructs a new node object that handles most of the functionality.
Definition: SVHDiagnostics.cpp:35
SVHDiagnostics::initializeProtocolMessage
void initializeProtocolMessage()
initialize the protocol variables
Definition: SVHDiagnostics.cpp:473
driver_svh::SVHCurrentSettings
SVHDiagnostics::m_action_feedback
schunk_svh_msgs::SVHDiagnosticsFeedback m_action_feedback
Definition: SVHDiagnostics.h:195
ROS_ERROR
#define ROS_ERROR(...)
driver_svh::SVHFirmwareInfo
driver_svh::SVHCurrentSettings::wmn
float wmn
SVHDiagnostics::m_diagnostics_action_server
actionlib::SimpleActionServer< schunk_svh_msgs::SVHDiagnosticsAction > m_diagnostics_action_server
Action Server.
Definition: SVHDiagnostics.h:192
driver_svh::SVHHomeSettings
SVHDiagnostics::m_serial_no
std::string m_serial_no
Serial No of the tested Hand.
Definition: SVHDiagnostics.h:170
ROS_INFO_STREAM
#define ROS_INFO_STREAM(args)
actionlib::SimpleActionServer::setPreempted
void setPreempted(const Result &result=Result(), const std::string &text=std::string(""))
driver_svh::SVHChannel
SVHChannel
SVHDiagnostics::resetDiagnosticStatus
void resetDiagnosticStatus()
resetDiagnosticStatus resets the finger vector with the diagnostic data
Definition: SVHDiagnostics.cpp:386
driver_svh::SVHFirmwareInfo::version_minor
uint16_t version_minor
SVHDiagnostics::m_action_name
std::string m_action_name
Definition: SVHDiagnostics.h:201
driver_svh::SVHFingerManager::DiagnosticState::diagnostic_encoder_state
bool diagnostic_encoder_state
SVHDiagnostics::m_priv_nh
ros::NodeHandle m_priv_nh
private node handle
Definition: SVHDiagnostics.h:102
actionlib::SimpleActionServer::setAborted
void setAborted(const Result &result=Result(), const std::string &text=std::string(""))
SVHDiagnostics::qualityProtocolWritting
void qualityProtocolWritting()
set the protocol variables
Definition: SVHDiagnostics.cpp:445
std
driver_svh::SVHFingerManager::DiagnosticState
SVHDiagnostics.h
driver_svh::SVHFingerManager::DiagnosticState::diagnostic_position_minimum
double diagnostic_position_minimum
driver_svh::SVHHomeSettings::direction
int direction
SVHDiagnostics::board_two_encoder
@ board_two_encoder
Definition: SVHDiagnostics.h:210
driver_svh::SVHFirmwareInfo::version_major
uint16_t version_major
SVHDiagnostics::reset_success
std::vector< bool > reset_success
Reset successed vector.
Definition: SVHDiagnostics.h:167
SVHDiagnostics::current_range
@ current_range
Definition: SVHDiagnostics.h:215
SVHDiagnostics::board_one
@ board_one
Definition: SVHDiagnostics.h:206
SVHDiagnostics::board_two_motor
@ board_two_motor
Definition: SVHDiagnostics.h:211
ROS_INFO
#define ROS_INFO(...)
SVHDiagnostics::m_basic_test_running
bool m_basic_test_running
To catch multiple bastic test starts.
Definition: SVHDiagnostics.h:183
SVHDiagnostics::m_communication
bool m_communication
Type of onnection.
Definition: SVHDiagnostics.h:180
SVHDiagnostics::basicTestCallback
void basicTestCallback(const schunk_svh_msgs::SVHDiagnosticsGoalConstPtr &goal)
Definition: SVHDiagnostics.cpp:115
SVHDiagnostics::encoder
@ encoder
Definition: SVHDiagnostics.h:213
ros::NodeHandle
SVHDiagnostics::evaluateBasicTest
schunk_svh_msgs::SVHDiagnosticsResult evaluateBasicTest()
evaluateBasicTest evaluates the diagnostics status of the basic test to send the hint informations to...
Definition: SVHDiagnostics.cpp:230
SVHDiagnostics::m_finger_manager
std::shared_ptr< driver_svh::SVHFingerManager > m_finger_manager
Handle to the SVH finger manager for library access.
Definition: SVHDiagnostics.h:136
SVHDiagnostics::motor
@ motor
Definition: SVHDiagnostics.h:214


schunk_svh_driver
Author(s): Georg Heppner , Felix Exner , Pascal Becker , Johannes Mangler
autogenerated on Sat Apr 15 2023 02:24:55