Beispiel #1
0
bool parseJointDynamics(JointDynamics &jd, TiXmlElement* config)
{
  jd.clear();

  // Get joint damping
  const char* damping_str = config->Attribute("damping");
  if (damping_str == NULL){
    CONSOLE_BRIDGE_logDebug("urdfdom.joint_dynamics: no damping, defaults to 0");
    jd.damping = 0;
  }
  else
  {
    try
    {
      jd.damping = boost::lexical_cast<double>(damping_str);
    }
    catch (boost::bad_lexical_cast &e)
    {
      CONSOLE_BRIDGE_logError("damping value (%s) is not a float: %s",damping_str, e.what());
      return false;
    }
  }

  // Get joint friction
  const char* friction_str = config->Attribute("friction");
  if (friction_str == NULL){
    CONSOLE_BRIDGE_logDebug("urdfdom.joint_dynamics: no friction, defaults to 0");
    jd.friction = 0;
  }
  else
  {
    try
    {
      jd.friction = boost::lexical_cast<double>(friction_str);
    }
    catch (boost::bad_lexical_cast &e)
    {
      CONSOLE_BRIDGE_logError("friction value (%s) is not a float: %s",friction_str, e.what());
      return false;
    }
  }

  if (damping_str == NULL && friction_str == NULL)
  {
    CONSOLE_BRIDGE_logError("joint dynamics element specified with no damping and no friction");
    return false;
  }
  else{
    CONSOLE_BRIDGE_logDebug("urdfdom.joint_dynamics: damping %f and friction %f", jd.damping, jd.friction);
    return true;
  }
}
Beispiel #2
0
bool parseJointDynamics(JointDynamics &jd, TiXmlElement* config)
{
  jd.clear();

  // Get joint damping
  const char* damping_str = config->Attribute("damping");
  if (damping_str == NULL){
    //std::cout<<"joint dynamics: no damping, defaults to 1"<<std::endl;
    jd.damping = 0;
  }
  else
  {
    try
    {
      jd.damping = boost::lexical_cast<double>(damping_str);
    }
    catch (boost::bad_lexical_cast &e)
    {
      std::cout<<"damping value ("<< damping_str<<") is not a float: "<<  e.what()<< std::endl;
      return false;
    }
  }

  // Get joint friction
  const char* friction_str = config->Attribute("friction");
  if (friction_str == NULL){
    //std::cout<<"joint dynamics: no friction, defaults to 0"<<std::endl;
    jd.friction = 0;
  }
  else
  {
    try
    {
      jd.friction = boost::lexical_cast<double>(friction_str);
    }
    catch (boost::bad_lexical_cast &e)
    {
      std::cout<<"friction value ("<< friction_str<< ") is not a float: "<< e.what() << std::endl;
      return false;
    }
  }

  if (damping_str == NULL && friction_str == NULL)
  {
    //printf("joint dynamics element specified with no damping and no friction \n");
    return false;
  }
  else{
      //printf("joint dynamics: damping %f and friction %f", jd.damping, jd.friction);
    return true;
  }
}