RosMsgGainCalculatorBenchmark.cpp
Go to the documentation of this file.
00001 #include <hayai/hayai.hpp>
00002 #include <ros/package.h>
00003 #include "robodyn_controllers/RosMsgGainCalculator.h"
00004 
00005 class RosMsgGainCalculatorBenchmark : public hayai::Fixture
00006 {
00007 protected:
00008     virtual void SetUp()
00009     {
00010         yankLim = 1.0;
00011         yankLimWindup = 0.05;
00012 
00013         std::string packagePath = ros::package::getPath("robodyn_controllers");
00014         rmg.loadFromFile(packagePath + "/test/urdf/r2c_full_body.urdf.xml");
00015         rmg.getJointNames(jointNames);
00016 
00017         rmg.yl.setRateLimit(yankLim);
00018         rmg.ylWindup.setRateLimit(yankLimWindup);
00019 
00020         dd.joint_names.resize(jointNames.size());
00021         dd.naturalFreq.resize(jointNames.size());
00022         dd.dampingRatio.resize(jointNames.size());
00023         dd.windupLimit.resize(jointNames.size());
00024         inertia.name.resize(jointNames.size());
00025         inertia.position.resize(jointNames.size());
00026 
00027         for (unsigned int i = 0; i < jointNames.size(); ++i)
00028         {
00029             rmg.jointGainsData[jointNames[i]].maxK   = 30;
00030             rmg.jointGainsData[jointNames[i]].maxD   = 30;
00031             rmg.jointGainsData[jointNames[i]].scaleI = 0.01;
00032             rmg.jointGainsData[jointNames[i]].minD   = 5.0;
00033             dd.joint_names[i]                        = jointNames[i];
00034             dd.naturalFreq[i]                        = 1000.;
00035             dd.dampingRatio[i]                       = 1.5;
00036             dd.windupLimit[i]                        = 5.;
00037             inertia.name[i]                          = jointNames[i];
00038             inertia.position[i]                      = static_cast<double>(rand() % 10001) / 1000.;
00039         }
00040 
00041         yankLim = 20.0;
00042         rmg.yl.setRateLimit(yankLim);
00043 
00044         yankLimWindup = 2.0;
00045         rmg.ylWindup.setRateLimit(yankLimWindup);
00046     }
00047 
00048     virtual void TearDown()
00049     {
00050     }
00051 
00052     RosMsgGainCalculator       rmg;
00053     r2_msgs::Gains dd, dg;
00054     double                     scaleI, minD, yankLim, yankLimWindup;
00055     sensor_msgs::JointState    inertia;
00056     std::vector<std::string>   jointNames;
00057 };
00058 
00059 BENCHMARK_F(RosMsgGainCalculatorBenchmark, FindDesiredDynBenchmark, 3, 1000)
00060 {
00061     rmg.storeGainInformation(dd);
00062     rmg.findDesiredDynamics(inertia, dg);
00063 }
00064 
00065 int main(int argc, char** argv)
00066 {
00067     hayai::Benchmarker::RunAllTests();
00068     return 0;
00069 }
00070 


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