LCOV - code coverage report
Current view: top level - src - EEInterface.cpp (source / functions) Hit Total Coverage
Test: main_coverage.info Lines: 48 56 85.7 %
Date: 2022-06-06 13:34:00 Functions: 13 15 86.7 %

          Line data    Source code
       1             : /*
       2             :  * Copyright (C) 2019 IIT-HHCM
       3             :  * Author: Luca Muratore
       4             :  * email:  luca.muratore@iit.it
       5             :  * 
       6             :  * Licensed under the Apache License, Version 2.0 (the "License");
       7             :  * you may not use this file except in compliance with the License.
       8             :  * You may obtain a copy of the License at
       9             :  * http://www.apache.org/licenses/LICENSE-2.0
      10             :  * 
      11             :  * Unless required by applicable law or agreed to in writing, software
      12             :  * distributed under the License is distributed on an "AS IS" BASIS,
      13             :  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      14             :  * See the License for the specific language governing permissions and
      15             :  * limitations under the License.
      16             : */
      17             : 
      18             : #include <end_effector/EEInterface.h>
      19             : 
      20          72 : ROSEE::EEInterface::EEInterface ( const ROSEE::Parser& p  ) {
      21             :     
      22             :     // get number of joints from parse and resize dynamic structure
      23          72 :     _joints_num = p.getActuatedJointsNumber();
      24          72 :     _upper_limits.resize(_joints_num);
      25          72 :     _lower_limits.resize(_joints_num);
      26             :     
      27             :     // get the EE name
      28          72 :     _ee_name = p.getEndEffectorName();
      29             :     
      30             :     // get the ee description
      31          72 :     _ee_description = p.getFingerJointMap();
      32             :     
      33             :     // get he joints urdf description
      34          72 :     _urdf_joint_map = p.getUrdfJointMap();
      35             :     
      36          72 :     int id = 0;
      37             :     
      38             :     // save the finger names
      39         262 :     for( const auto& finger_joints_pair : _ee_description ) {
      40             :         
      41             :         // fingers
      42         380 :         std::string finger_name = finger_joints_pair.first;
      43         190 :         _fingers_names.push_back(finger_name);
      44             : 
      45         570 :         for( const auto& j : finger_joints_pair.second ) {
      46             :             
      47             :             // joint name
      48         380 :             _actuated_joints.push_back(j);
      49             :             
      50             :             // internal id
      51         380 :             _joints_internal_id_map[j] = id;
      52             :             
      53             :             // finger internal id map 
      54         380 :             _finger_joints_internal_id_map[finger_name].push_back(id);
      55             :             
      56             :             // upper limits
      57         380 :             _upper_limits[id] = _urdf_joint_map.at(j)->limits->upper;
      58             :             
      59             :             // lower limits
      60         380 :             _lower_limits[id] = _urdf_joint_map.at(j)->limits->lower;
      61             :             
      62             :             // increase internal id
      63         380 :             id++;
      64             :         }
      65             :     }
      66             : 
      67          72 : }
      68             : 
      69          33 : std::string ROSEE::EEInterface::getName() {
      70             :     
      71          33 :     return _ee_name;
      72             : }
      73             : 
      74             : 
      75          44 : Eigen::VectorXd ROSEE::EEInterface::getLowerPositionLimits() {
      76             : 
      77          44 :     return _lower_limits;
      78             : }
      79             : 
      80          24 : Eigen::VectorXd ROSEE::EEInterface::getUpperPositionLimits() {
      81             : 
      82          24 :     return _upper_limits;
      83             : }
      84             : 
      85          84 : bool ROSEE::EEInterface::getInternalIdForJoint ( std::string joint_name, int& internal_id ) {
      86             :         
      87          84 :     if ( _joints_internal_id_map.count(joint_name) ) {
      88             :         
      89          84 :         internal_id = _joints_internal_id_map.at(joint_name);
      90          84 :         return true;
      91             :     }
      92             :     
      93           0 :     return false;
      94             : 
      95             : }
      96             : 
      97             : 
      98           0 : bool ROSEE::EEInterface::getInternalIdsForFinger ( std::string finger_name, std::vector< int >& internal_ids ) {
      99             : 
     100           0 :     if ( _finger_joints_internal_id_map.count(finger_name) ) {
     101             :         
     102           0 :         internal_ids = _finger_joints_internal_id_map.at(finger_name);
     103           0 :         return true;
     104             :     }
     105             :     
     106           0 :     return false;
     107             : 
     108             : }
     109             : 
     110           8 : const std::vector< std::string >& ROSEE::EEInterface::getFingers() {
     111             :     
     112           8 :     return _fingers_names;
     113             : }
     114             : 
     115          27 : bool ROSEE::EEInterface::isFinger ( std::string finger_name ) {
     116             :     
     117          27 :     return ( _ee_description.count(finger_name) > 0 );
     118             : }
     119             : 
     120             : 
     121             : 
     122          16 : const std::vector< std::string >&  ROSEE::EEInterface::getActuatedJoints () {
     123             :     
     124          16 :     return _actuated_joints;
     125             : }
     126             : 
     127             : 
     128           3 : bool ROSEE::EEInterface::getActuatedJointsInFinger ( std::string finger_name, std::vector< std::string >& actuated_joints ) {
     129             : 
     130           3 :     if( !isFinger(finger_name) ) {
     131             :         
     132           0 :         return false;
     133             :     }
     134             :     
     135           3 :     actuated_joints = _ee_description.at(finger_name);
     136           3 :     return true;
     137             : }
     138             : 
     139           8 : int ROSEE::EEInterface::getActuatedJointsNum() {
     140             :     
     141           8 :     return _joints_num;
     142             : }
     143             : 
     144          16 : int ROSEE::EEInterface::getActuatedJointsNumInFinger ( std::string finger_name ) {
     145             :     
     146          16 :     if( !isFinger(finger_name) ) {
     147             :         
     148           0 :         return -1;
     149             :     } 
     150             : 
     151          16 :     return _ee_description.at(finger_name).size();
     152             : }
     153             : 
     154          26 : int ROSEE::EEInterface::getFingersNumber() {
     155             :     
     156          26 :     return _fingers_names.size();
     157             : }
     158             : 
     159             : 
     160          72 : ROSEE::EEInterface::~EEInterface() {
     161             : 
     162          72 : }

Generated by: LCOV version 1.14