31 #include <console_bridge/console.h>
43 if (xml_element->Attribute(
"damping") ==
nullptr && xml_element->Attribute(
"friction") ==
nullptr)
44 std::throw_with_nested(std::runtime_error(
"Dynamics: Missing both attributes 'damping' and 'friction', remove tag "
45 "or add attributes and values!"));
47 auto dynamics = std::make_shared<tesseract_scene_graph::JointDynamics>();
49 int status = xml_element->QueryDoubleAttribute(
"damping", &(dynamics->damping));
50 if (status != tinyxml2::XML_NO_ATTRIBUTE && status != tinyxml2::XML_SUCCESS)
51 std::throw_with_nested(std::runtime_error(
"Dynamics: Error parsing attribute 'damping'!"));
53 if (status == tinyxml2::XML_NO_ATTRIBUTE)
54 CONSOLE_BRIDGE_logDebug(
"Dynamics: Missing attribute 'damping', using default value 0!");
56 status = xml_element->QueryDoubleAttribute(
"friction", &(dynamics->friction));
57 if (status != tinyxml2::XML_NO_ATTRIBUTE && status != tinyxml2::XML_SUCCESS)
58 std::throw_with_nested(std::runtime_error(
"Dynamics: Error parsing attribute 'friction'!"));
60 if (status == tinyxml2::XML_NO_ATTRIBUTE)
61 CONSOLE_BRIDGE_logDebug(
"Dynamics: Missing attribute 'friction', using default value 0!");
66 tinyxml2::XMLElement*
writeDynamics(
const std::shared_ptr<const tesseract_scene_graph::JointDynamics>& dynamics,
67 tinyxml2::XMLDocument& doc)
69 if (dynamics ==
nullptr)
70 std::throw_with_nested(std::runtime_error(
"Dynamics is nullptr and cannot be converted to XML"));
73 xml_element->SetAttribute(
"damping",
toString(dynamics->damping).c_str());
74 xml_element->SetAttribute(
"friction",
toString(dynamics->damping).c_str());