00001 // 00002 // Created by tom on 03/04/16. 00003 // 00004 00005 #include "robotican_controllers/robot.h" 00006 00007 RobotArm::RobotArm() { 00008 std::vector<std::string> names; 00009 if(_nodeHandle.getParam("joint_names_list", names)) { 00010 size_t size = names.size(); 00011 for(int i = 0; i < size; ++i) { 00012 _arm.insert(std::pair<std::string, JointInfo_t>(names[i], JointInfo_t())); 00013 hardware_interface::JointStateHandle jointStateHandle(names[i], &_arm[names[i]].position, &_arm[names[i]].velocity, &_arm[names[i]].effort); 00014 _jointStateInterface.registerHandle(jointStateHandle); 00015 hardware_interface::JointHandle jointHandle(_jointStateInterface.getHandle(names[i]), &_arm[names[i]].cmd); 00016 _positionJointInterface.registerHandle(jointHandle); 00017 00018 00019 } 00020 registerInterface(&_jointStateInterface); 00021 registerInterface(&_positionJointInterface); 00022 rosUtil::rosInfo("Active"); 00023 00024 00025 00026 } 00027 else { 00028 rosUtil::rosError("The parameter 'joint_names' is not loaded"); 00029 ros::shutdown(); 00030 } 00031 } 00032 00033 ros::Time RobotArm::getTime() { 00034 return ros::Time::now(); 00035 } 00036 00037 ros::Duration RobotArm::getPeriod() { 00038 ros::Time now = ros::Time::now(); 00039 ros::Duration period = now - _time; 00040 _time = now; 00041 return period; 00042 } 00043