24 #include <gtest/gtest.h> 33 #include <boost/foreach.hpp> 43 pair<string, string> item;
44 BOOST_FOREACH(item, map)
46 if (value == item.second)
55 TEST(SrHandFinder, hand_absent_test)
68 map<string, vector<string> > hand_joints(hand_finder.
get_joints());
69 ASSERT_EQ(hand_joints.size(), 0);
71 ASSERT_EQ(calibration_path.size(), 0);
73 ASSERT_EQ(controller_tuning.friction_compensation_.size(), 0);
74 ASSERT_EQ(controller_tuning.host_control_.size(), 0);
75 ASSERT_EQ(controller_tuning.motor_control_.size(), 0);
78 TEST(SrHandFinder, one_hand_no_robot_description_finder_test)
96 "FFJ1",
"FFJ2",
"FFJ3",
"FFJ4",
"MFJ1",
"MFJ2",
"MFJ3",
"MFJ4",
97 "RFJ1",
"RFJ2",
"RFJ3",
"RFJ4",
"LFJ1",
"LFJ2",
"LFJ3",
"LFJ4",
"LFJ5",
98 "THJ1",
"THJ2",
"THJ3",
"THJ4",
"THJ5",
"WRJ1",
"WRJ2" 109 ASSERT_EQ(hand_finder.
get_joints().size(), 1);
110 ASSERT_GT(hand_finder.
get_joints().count(
"right"), 0);
111 const vector<string> rh_joints = hand_finder.
get_joints().at(
"right");
112 ASSERT_EQ(rh_joints.size(), 24);
113 for (
size_t i = 0; i < rh_joints.size(); ++i)
116 ASSERT_STREQ(rh_joints[i].c_str(), (
"rh_" + joint_names[i]).c_str());
123 ASSERT_STREQ(calibration_path.c_str(), (ethercat_path +
"/calibrations/right/" +
"calibration.yaml").c_str());
128 for (map<string, string>::const_iterator iter = controller_tuning.friction_compensation_.begin();
129 iter != controller_tuning.friction_compensation_.end(); ++iter)
131 ASSERT_STREQ(iter->second.c_str(), (ethercat_path +
"/controls/friction_compensation.yaml").c_str());
134 for (map<string, string>::const_iterator iter = controller_tuning.motor_control_.begin();
135 iter != controller_tuning.motor_control_.end(); ++iter)
137 ASSERT_STREQ(iter->second.c_str(),
138 (ethercat_path +
"/controls/motors/right/motor_board_effort_controllers.yaml").c_str());
141 for (map<
string, vector<string> >::const_iterator iter = controller_tuning.host_control_.begin();
142 iter != controller_tuning.host_control_.end(); ++iter)
144 string host_array[] =
146 "sr_edc_calibration_controllers.yaml",
147 "sr_edc_joint_velocity_controllers_PWM.yaml",
148 "sr_edc_effort_controllers_PWM.yaml",
149 "sr_edc_joint_velocity_controllers.yaml",
150 "sr_edc_effort_controllers.yaml",
151 "sr_edc_mixed_position_velocity_joint_controllers_PWM.yaml",
152 "sr_edc_joint_position_controllers_PWM.yaml",
153 "sr_edc_mixed_position_velocity_joint_controllers.yaml",
154 "sr_edc_joint_position_controllers.yaml" 156 vector<string> host_controller_files(host_array, host_array + 9);
157 ASSERT_EQ(host_controller_files.size(), iter->second.size());
158 for (
size_t i = 0; i != iter->second.size(); ++i)
160 ASSERT_STREQ(iter->second[i].c_str(), (ethercat_path +
"/controls/host/right/" +
161 host_controller_files[i]).c_str());
167 TEST(SrHandFinder, one_hand_no_mapping_no_robot_description_finder_test)
185 "FFJ1",
"FFJ2",
"FFJ3",
"FFJ4",
"MFJ1",
"MFJ2",
"MFJ3",
"MFJ4",
186 "RFJ1",
"RFJ2",
"RFJ3",
"RFJ4",
"LFJ1",
"LFJ2",
"LFJ3",
"LFJ4",
"LFJ5",
187 "THJ1",
"THJ2",
"THJ3",
"THJ4",
"THJ5",
"WRJ1",
"WRJ2" 198 ASSERT_EQ(hand_finder.
get_joints().size(), 1);
199 ASSERT_GT(hand_finder.
get_joints().count(
"1"), 0);
200 const vector<string> rh_joints = hand_finder.
get_joints().at(
"1");
201 ASSERT_EQ(rh_joints.size(), 24);
202 for (
size_t i = 0; i < rh_joints.size(); ++i)
205 ASSERT_STREQ(rh_joints[i].c_str(), (
"rh_" + joint_names[i]).c_str());
212 ASSERT_STREQ(calibration_path.c_str(), (ethercat_path +
"/calibrations/1/" +
"calibration.yaml").c_str());
217 for (map<string, string>::const_iterator iter = controller_tuning.friction_compensation_.begin();
218 iter != controller_tuning.friction_compensation_.end(); ++iter)
220 ASSERT_STREQ(iter->second.c_str(), (ethercat_path +
"/controls/friction_compensation.yaml").c_str());
223 for (map<string, string>::const_iterator iter = controller_tuning.motor_control_.begin();
224 iter != controller_tuning.motor_control_.end(); ++iter)
226 ASSERT_STREQ(iter->second.c_str(),
227 (ethercat_path +
"/controls/motors/1/motor_board_effort_controllers.yaml").c_str());
230 for (map<
string, vector<string> >::const_iterator iter = controller_tuning.host_control_.begin();
231 iter != controller_tuning.host_control_.end(); ++iter)
233 string host_array[] =
235 "sr_edc_calibration_controllers.yaml",
236 "sr_edc_joint_velocity_controllers_PWM.yaml",
237 "sr_edc_effort_controllers_PWM.yaml",
238 "sr_edc_joint_velocity_controllers.yaml",
239 "sr_edc_effort_controllers.yaml",
240 "sr_edc_mixed_position_velocity_joint_controllers_PWM.yaml",
241 "sr_edc_joint_position_controllers_PWM.yaml",
242 "sr_edc_mixed_position_velocity_joint_controllers.yaml",
243 "sr_edc_joint_position_controllers.yaml" 245 vector<string> host_controller_files(host_array, host_array + 9);
246 ASSERT_EQ(host_controller_files.size(), iter->second.size());
247 for (
size_t i = 0; i != iter->second.size(); ++i)
249 ASSERT_STREQ(iter->second[i].c_str(), (ethercat_path +
"/controls/host/1/" + host_controller_files[i]).c_str());
255 TEST(SrHandFinder, one_hand_no_prefix_no_robot_description_finder_test)
273 "FFJ1",
"FFJ2",
"FFJ3",
"FFJ4",
"MFJ1",
"MFJ2",
"MFJ3",
"MFJ4",
274 "RFJ1",
"RFJ2",
"RFJ3",
"RFJ4",
"LFJ1",
"LFJ2",
"LFJ3",
"LFJ4",
"LFJ5",
275 "THJ1",
"THJ2",
"THJ3",
"THJ4",
"THJ5",
"WRJ1",
"WRJ2" 286 ASSERT_EQ(hand_finder.
get_joints().size(), 1);
287 ASSERT_GT(hand_finder.
get_joints().count(
"rh"), 0);
288 const vector<string> rh_joints = hand_finder.
get_joints().at(
"rh");
289 ASSERT_EQ(rh_joints.size(), 24);
290 for (
size_t i = 0; i < rh_joints.size(); ++i)
293 ASSERT_STREQ(rh_joints[i].c_str(), (joint_names[i]).c_str());
300 ASSERT_STREQ(calibration_path.c_str(), (ethercat_path +
"/calibrations/rh/" +
"calibration.yaml").c_str());
305 for (map<string, string>::const_iterator iter = controller_tuning.friction_compensation_.begin();
306 iter != controller_tuning.friction_compensation_.end(); ++iter)
308 ASSERT_STREQ(iter->second.c_str(), (ethercat_path +
"/controls/friction_compensation.yaml").c_str());
311 for (map<string, string>::const_iterator iter = controller_tuning.motor_control_.begin();
312 iter != controller_tuning.motor_control_.end(); ++iter)
314 ASSERT_STREQ(iter->second.c_str(),
315 (ethercat_path +
"/controls/motors/rh/motor_board_effort_controllers.yaml").c_str());
318 for (map<
string, vector<string> >::const_iterator iter = controller_tuning.host_control_.begin();
319 iter != controller_tuning.host_control_.end(); ++iter)
321 string host_array[] =
323 "sr_edc_calibration_controllers.yaml",
324 "sr_edc_joint_velocity_controllers_PWM.yaml",
325 "sr_edc_effort_controllers_PWM.yaml",
326 "sr_edc_joint_velocity_controllers.yaml",
327 "sr_edc_effort_controllers.yaml",
328 "sr_edc_mixed_position_velocity_joint_controllers_PWM.yaml",
329 "sr_edc_joint_position_controllers_PWM.yaml",
330 "sr_edc_mixed_position_velocity_joint_controllers.yaml",
331 "sr_edc_joint_position_controllers.yaml" 333 vector<string> host_controller_files(host_array, host_array + 9);
334 ASSERT_EQ(host_controller_files.size(), iter->second.size());
335 for (
size_t i = 0; i != iter->second.size(); ++i)
337 ASSERT_STREQ(iter->second[i].c_str(), (ethercat_path +
"/controls/host/rh/" + host_controller_files[i]).c_str());
343 TEST(SrHandFinder, one_hand_no_mapping_no_prefix_no_robot_description_finder_test)
361 "FFJ1",
"FFJ2",
"FFJ3",
"FFJ4",
"MFJ1",
"MFJ2",
"MFJ3",
"MFJ4",
362 "RFJ1",
"RFJ2",
"RFJ3",
"RFJ4",
"LFJ1",
"LFJ2",
"LFJ3",
"LFJ4",
"LFJ5",
363 "THJ1",
"THJ2",
"THJ3",
"THJ4",
"THJ5",
"WRJ1",
"WRJ2" 374 ASSERT_EQ(hand_finder.
get_joints().size(), 1);
375 ASSERT_GT(hand_finder.
get_joints().count(
"1"), 0);
376 const vector<string> rh_joints = hand_finder.
get_joints().at(
"1");
377 ASSERT_EQ(rh_joints.size(), 24);
378 for (
size_t i = 0; i < rh_joints.size(); ++i)
381 ASSERT_STREQ(rh_joints[i].c_str(), (joint_names[i]).c_str());
388 ASSERT_STREQ(calibration_path.c_str(), (ethercat_path +
"/calibrations/1/" +
"calibration.yaml").c_str());
393 for (map<string, string>::const_iterator iter = controller_tuning.friction_compensation_.begin();
394 iter != controller_tuning.friction_compensation_.end(); ++iter)
396 ASSERT_STREQ(iter->second.c_str(), (ethercat_path +
"/controls/friction_compensation.yaml").c_str());
399 for (map<string, string>::const_iterator iter = controller_tuning.motor_control_.begin();
400 iter != controller_tuning.motor_control_.end(); ++iter)
402 ASSERT_STREQ(iter->second.c_str(),
403 (ethercat_path +
"/controls/motors/1/motor_board_effort_controllers.yaml").c_str());
406 for (map<
string, vector<string> >::const_iterator iter = controller_tuning.host_control_.begin();
407 iter != controller_tuning.host_control_.end(); ++iter)
409 string host_array[] =
411 "sr_edc_calibration_controllers.yaml",
412 "sr_edc_joint_velocity_controllers_PWM.yaml",
413 "sr_edc_effort_controllers_PWM.yaml",
414 "sr_edc_joint_velocity_controllers.yaml",
415 "sr_edc_effort_controllers.yaml",
416 "sr_edc_mixed_position_velocity_joint_controllers_PWM.yaml",
417 "sr_edc_joint_position_controllers_PWM.yaml",
418 "sr_edc_mixed_position_velocity_joint_controllers.yaml",
419 "sr_edc_joint_position_controllers.yaml" 421 vector<string> host_controller_files(host_array, host_array + 9);
422 ASSERT_EQ(host_controller_files.size(), iter->second.size());
423 for (
size_t i = 0; i != iter->second.size(); ++i)
425 ASSERT_STREQ(iter->second[i].c_str(), (ethercat_path +
"/controls/host/1/" + host_controller_files[i]).c_str());
431 TEST(SrHandFinder, one_hand_robot_description_exists_finger_test)
443 string right_hand_description;
452 "FFJ1",
"FFJ2",
"FFJ3",
"FFJ4",
"MFJ1",
"MFJ2",
"MFJ3",
"MFJ4",
453 "RFJ1",
"RFJ2",
"RFJ3",
"RFJ4",
"LFJ1",
"LFJ2",
"LFJ3",
"LFJ4",
"LFJ5",
454 "THJ1",
"THJ2",
"THJ3",
"THJ4",
"THJ5",
"WRJ1",
"WRJ2" 465 ASSERT_EQ(hand_finder.
get_joints().size(), 1);
466 ASSERT_GT(hand_finder.
get_joints().count(
"right"), 0);
467 const vector<string> rh_joints = hand_finder.
get_joints().at(
"right");
468 ASSERT_EQ(rh_joints.size(), 1);
469 ASSERT_EQ(std::find(rh_joints.begin(), rh_joints.end(),
"rh_FFJ3"), rh_joints.end());
470 ASSERT_NE(std::find(rh_joints.begin(), rh_joints.end(),
"rh_RFJ4"), rh_joints.end());
476 ASSERT_STREQ(calibration_path.c_str(), (ethercat_path +
"/calibrations/right/" +
"calibration.yaml").c_str());
481 for (map<string, string>::const_iterator iter = controller_tuning.friction_compensation_.begin();
482 iter != controller_tuning.friction_compensation_.end(); ++iter)
484 ASSERT_STREQ(iter->second.c_str(), (ethercat_path +
"/controls/friction_compensation.yaml").c_str());
487 for (map<string, string>::const_iterator iter = controller_tuning.motor_control_.begin();
488 iter != controller_tuning.motor_control_.end(); ++iter)
490 ASSERT_STREQ(iter->second.c_str(),
491 (ethercat_path +
"/controls/motors/right/motor_board_effort_controllers.yaml").c_str());
494 for (map<
string, vector<string> >::const_iterator iter = controller_tuning.host_control_.begin();
495 iter != controller_tuning.host_control_.end(); ++iter)
497 string host_array[] =
499 "sr_edc_calibration_controllers.yaml",
500 "sr_edc_joint_velocity_controllers_PWM.yaml",
501 "sr_edc_effort_controllers_PWM.yaml",
502 "sr_edc_joint_velocity_controllers.yaml",
503 "sr_edc_effort_controllers.yaml",
504 "sr_edc_mixed_position_velocity_joint_controllers_PWM.yaml",
505 "sr_edc_joint_position_controllers_PWM.yaml",
506 "sr_edc_mixed_position_velocity_joint_controllers.yaml",
507 "sr_edc_joint_position_controllers.yaml" 509 vector<string> host_controller_files(host_array, host_array + 9);
510 ASSERT_EQ(host_controller_files.size(), iter->second.size());
511 for (
size_t i = 0; i != iter->second.size(); ++i)
513 ASSERT_STREQ(iter->second[i].c_str(), (ethercat_path +
"/controls/host/right/" 514 + host_controller_files[i]).c_str());
520 TEST(SrHandFinder, two_hand_robot_description_exists_finder_test)
537 string two_hands_description;
543 "FFJ1",
"FFJ2",
"FFJ3",
"FFJ4",
"MFJ1",
"MFJ2",
"MFJ3",
"MFJ4",
544 "RFJ1",
"RFJ2",
"RFJ3",
"RFJ4",
"LFJ1",
"LFJ2",
"LFJ3",
"LFJ4",
"LFJ5",
545 "THJ1",
"THJ2",
"THJ3",
"THJ4",
"THJ5",
"WRJ1",
"WRJ2" 549 const string dir[] = {
"left",
"right"};
555 ASSERT_EQ(hand_finder.
get_joints().size(), 2);
564 ASSERT_GT(hand_finder.
get_joints().count(
"right"), 0);
565 const vector<string> rh_joints = hand_finder.
get_joints().at(
"right");
566 ASSERT_EQ(std::find(rh_joints.begin(), rh_joints.end(),
"rh_FFJ3"), rh_joints.end());
567 ASSERT_NE(std::find(rh_joints.begin(), rh_joints.end(),
"rh_RFJ4"), rh_joints.end());
569 ASSERT_GT(hand_finder.
get_joints().count(
"left"), 0);
570 const vector<string> lh_joints = hand_finder.
get_joints().at(
"left");
571 ASSERT_EQ(std::find(lh_joints.begin(), lh_joints.end(),
"lh_FFJ1"), lh_joints.end());
572 ASSERT_NE(std::find(lh_joints.begin(), lh_joints.end(),
"lh_LFJ4"), lh_joints.end());
577 for (map<string, string>::const_iterator iter = calibration_path.begin(); iter != calibration_path.end(); ++iter)
580 ASSERT_STREQ(iter->second.c_str(), (ethercat_path +
"/calibrations/" 581 + dir[idx] +
"/" +
"calibration.yaml").c_str());
586 for (map<string, string>::const_iterator iter = controller_tuning.friction_compensation_.begin();
587 iter != controller_tuning.friction_compensation_.end(); ++iter)
589 ASSERT_STREQ(iter->second.c_str(), (ethercat_path +
"/controls/friction_compensation.yaml").c_str());
594 for (map<string, string>::const_iterator iter = controller_tuning.motor_control_.begin();
595 iter != controller_tuning.motor_control_.end(); ++iter)
597 ASSERT_STREQ(iter->second.c_str(),
598 (ethercat_path +
"/controls/motors/" + dir[idx] +
"/motor_board_effort_controllers.yaml").c_str());
604 for (map<
string, vector<string> >::const_iterator iter = controller_tuning.host_control_.begin();
605 iter != controller_tuning.host_control_.end(); ++iter)
607 string host_array[] =
609 "sr_edc_calibration_controllers.yaml",
610 "sr_edc_joint_velocity_controllers_PWM.yaml",
611 "sr_edc_effort_controllers_PWM.yaml",
612 "sr_edc_joint_velocity_controllers.yaml",
613 "sr_edc_effort_controllers.yaml",
614 "sr_edc_mixed_position_velocity_joint_controllers_PWM.yaml",
615 "sr_edc_joint_position_controllers_PWM.yaml",
616 "sr_edc_mixed_position_velocity_joint_controllers.yaml",
617 "sr_edc_joint_position_controllers.yaml" 619 vector<string> host_controller_files(host_array, host_array + 9);
620 ASSERT_EQ(host_controller_files.size(), iter->second.size());
621 for (
size_t i = 0; i != iter->second.size(); ++i)
623 ASSERT_STREQ(iter->second[i].c_str(), (ethercat_path +
"/controls/host/" 624 + dir[idx] +
"/" + host_controller_files[i]).c_str());
632 int main(
int argc,
char **argv)
634 ros::init(argc, argv,
"test_hand_finder");
636 testing::InitGoogleTest(&argc, argv);
637 return RUN_ALL_TESTS();
TEST(SrHandFinder, hand_absent_test)
HandControllerTuning get_hand_controller_tuning()
ROSCPP_DECL void init(int &argc, char **argv, const std::string &name, uint32_t options=0)
void ASSERT_MAP_HAS_VALUE(const map< string, string > &map, const string &value)
std::map< std::string, std::string > mapping_
ROSCPP_DECL void set(const std::string &key, const XmlRpc::XmlRpcValue &v)
ROSCPP_DECL bool get(const std::string &key, std::string &s)
int main(int argc, char **argv)
HandConfig get_hand_parameters()
ROSCPP_DECL bool has(const std::string &key)
std::map< std::string, std::string > get_calibration_path()
#define ROS_DEBUG_STREAM(args)
std::map< std::string, std::vector< std::string > > get_joints()
ROSLIB_DECL std::string getPath(const std::string &package_name)
ROSCPP_DECL bool del(const std::string &key)
std::map< std::string, std::string > joint_prefix_