RosMsgTreeUtilities.cpp
Go to the documentation of this file.
00001 #include "robodyn_controllers/RosMsgTreeUtilities.h"
00002 
00003 RosMsgTreeUtilities::RosMsgTreeUtilities()
00004 {
00005     bases.clear();
00006     jointNames.clear();
00007 }
00008 
00009 //RosMsgTreeUtilities::~RosMsgTreeUtilities()
00010 //{
00011 //}
00012 
00016 void RosMsgTreeUtilities::loadFromFile(const std::string& fileName)
00017 {
00018     KdlTreeParser::loadFromFile(fileName);
00019     bases.clear();
00020     bases.push_back(getBaseName());
00021     jointNames.clear();
00022     getJointNames(jointNames);
00023 }
00024 
00029 bool RosMsgTreeUtilities::setBaseFrame(const r2_msgs::StringArray& baseMsg)
00030 {
00031     int n = baseMsg.data.size();
00032 
00034     if (n > 0 && baseMsg.data != bases)
00035     {
00037         bases.clear();
00038 
00040         for (unsigned int i = 0; i < baseMsg.data.size(); ++i)
00041         {
00042             if (tree.getSegment(baseMsg.data[i]) == tree.getSegments().end())
00043             {
00044                 std::stringstream err;
00045                 err << "Unable to set base! Couldn't find segment " << baseMsg.data[i] << " in tree";
00046                 NasaCommonLogging::Logger::log("gov.nasa.controllers.RosMsgTreeUtilities.setBaseFrame", log4cpp::Priority::ERROR, err.str());
00047                 return false;
00048             }
00049 
00050             bases.push_back(baseMsg.data[i]);
00051         }
00052     }
00053     else
00054     {
00055         NasaCommonLogging::Logger::log("gov.nasa.controllers.RosMsgTreeUtilities.setBaseFrame", log4cpp::Priority::INFO, "call to setBaseFrame but bases are 0 or haven't changed");
00056     }
00057 
00058     return true;
00059 }
00060 
00065 bool RosMsgTreeUtilities::setBaseFrame(std::string& baseMsg)
00066 {
00067     if (tree.getSegment(baseMsg) == tree.getSegments().end())
00068     {
00069         std::stringstream err;
00070         err << "Unable to set base! Couldn't find segment " << baseMsg << " in tree";
00071         NasaCommonLogging::Logger::log("gov.nasa.controllers.RosMsgTreeUtilities.setBaseFrame", log4cpp::Priority::ERROR, err.str());
00072         return false;
00073     }
00074 
00075     bases.clear();
00076     bases.push_back(baseMsg);
00077     return true;
00078 }
00079 
00085 void RosMsgTreeUtilities::getFrames(const r2_msgs::PoseState& poseState, const std::string& base, std::map<std::string, KDL::Frame>& frames)
00086 {
00087     KDL::Frame  frame;
00088     std::string tipName;
00089 
00090     for (unsigned int i = 0; i < poseState.name.size(); ++i)
00091     {
00092         tipName = poseState.name[i];
00093 
00094         try
00095         {
00096             RosMsgConverter::PoseStateToFrame(poseState, base, tipName, frame );
00097             frames[tipName] = frame;
00098         }
00099         catch (std::exception)
00100         {
00101             NasaCommonLogging::Logger::log("gov.nasa.controllers.RosMsgTreeUtilities.getFrames", log4cpp::Priority::WARN, "Squelched error.. continuing..");
00102         }
00103     }
00104 }
00105 
00106 void RosMsgTreeUtilities::getFrameVels(const r2_msgs::PoseState& poseState, const std::string& base, std::map<std::string, KDL::FrameVel>& framevels)
00107 {
00108     NasaCommonLogging::Logger::getCategory("gov.nasa.controllers.RosMsgTreeUtilities") << log4cpp::Priority::DEBUG << "entered getFrameVels";
00109     KDL::FrameVel frameVel;
00110     std::string   tipName;
00111 
00112     if (framevels.size() != poseState.name.size())
00113     {
00114         NasaCommonLogging::Logger::getCategory("gov.nasa.controllers.RosMsgTreeUtilities") << log4cpp::Priority::DEBUG << "resizing getFrameVels";
00115         framevels.clear();
00116 
00117         for (unsigned int i = 0; i < poseState.name.size(); ++i)
00118         {
00119             framevels.insert(std::make_pair(poseState.name[i], KDL::FrameVel()));
00120         }
00121     }
00122 
00123     for (unsigned int i = 0; i < poseState.name.size(); ++i)
00124     {
00125         NasaCommonLogging::Logger::getCategory("gov.nasa.controllers.RosMsgTreeUtilities") << log4cpp::Priority::DEBUG << "entered getFrameVels";
00126         tipName = poseState.name[i];
00127 
00128         try
00129         {
00130             RosMsgConverter::PoseStateToFrameVel(poseState, base, tipName, frameVel );
00131             framevels[tipName] = frameVel;
00132         }
00133         catch (std::exception)
00134         {
00135             NasaCommonLogging::Logger::log("gov.nasa.controllers.RosMsgTreeUtilities.getFrameVels", log4cpp::Priority::WARN, "Squelched error in getFrameVels.. continuing..");
00136         }
00137     }
00138 }
00139 
00140 void RosMsgTreeUtilities::getFrameAccs(const r2_msgs::PoseState& poseState, const std::string& base, std::map<std::string, KDL::FrameAcc>& frameaccs)
00141 {
00142     KDL::FrameAcc frameAcc;
00143     std::string   tipName;
00144 
00145     for (unsigned int i = 0; i < poseState.name.size(); ++i)
00146     {
00147         tipName = poseState.name[i];
00148 
00149         try
00150         {
00151             RosMsgConverter::PoseStateToFrameAcc(poseState, base, tipName, frameAcc );
00152             frameaccs[tipName] = frameAcc;
00153         }
00154         catch (std::exception)
00155         {
00156             NasaCommonLogging::Logger::log("gov.nasa.controllers.RosMsgTreeUtilities.getFrameAccs", log4cpp::Priority::WARN, "Squelched error.. continuing..");
00157         }
00158     }
00159 }


robodyn_controllers
Author(s):
autogenerated on Sat Jun 8 2019 20:20:53