Branch data Line data Source code
1 : : // Copyright (c) 2017 Jordan Lack <jlack1987@gmail.com> 2 : : // Copyright (c) 2011-2016 Martin Felis <martin.felis@iwr.uni-heidelberg.de> 3 : : // RDL - Robot Dynamics Library 4 : : // Licensed under the zlib license. See LICENSE for more details. 5 : : 6 : : #ifndef _RDL_BENCHMARK_SAMPLE_DATA_H__ 7 : : #define _RDL_BENCHMARK_SAMPLE_DATA_H__ 8 : : 9 : : #include <rdl_dynamics/rdl_eigenmath.hpp> 10 : : 11 : : struct SampleData 12 : : { 13 : 0 : SampleData() : count(0), q(NULL), qdot(NULL), qddot(NULL), tau(NULL) 14 : : { 15 : 0 : } 16 : : 17 : 0 : ~SampleData() 18 : : { 19 : 0 : deleteData(); 20 : 0 : } 21 : : 22 : : SampleData(const SampleData& data) 23 : : { 24 : : count = data.count; 25 : : 26 : : q = new RobotDynamics::Math::VectorNd[count]; 27 : : qdot = new RobotDynamics::Math::VectorNd[count]; 28 : : qddot = new RobotDynamics::Math::VectorNd[count]; 29 : : tau = new RobotDynamics::Math::VectorNd[count]; 30 : : 31 : : for (unsigned int si = 0; si < count; si++) 32 : : { 33 : : q[si] = data.q[si]; 34 : : qdot[si] = data.qdot[si]; 35 : : qddot[si] = data.qddot[si]; 36 : : tau[si] = data.tau[si]; 37 : : } 38 : : } 39 : : 40 : : SampleData& operator=(const SampleData& data) 41 : : { 42 : : if (this != &data) 43 : : { 44 : : deleteData(); 45 : : *this = SampleData(data); 46 : : } 47 : : return *this; 48 : : } 49 : : 50 : : unsigned int count; 51 : : RobotDynamics::Math::VectorNd* q; 52 : : RobotDynamics::Math::VectorNd* qdot; 53 : : RobotDynamics::Math::VectorNd* qddot; 54 : : RobotDynamics::Math::VectorNd* tau; 55 : : 56 : 0 : void deleteData() 57 : : { 58 : 0 : count = 0; 59 : : 60 : 0 : if (q) 61 : : { 62 : 0 : delete[] q; 63 : : } 64 : 0 : q = NULL; 65 : : 66 : 0 : if (qdot) 67 : : { 68 : 0 : delete[] qdot; 69 : : } 70 : 0 : qdot = NULL; 71 : : 72 : 0 : if (qddot) 73 : : { 74 : 0 : delete[] qddot; 75 : : } 76 : 0 : qddot = NULL; 77 : : 78 : 0 : if (tau) 79 : : { 80 : 0 : delete[] tau; 81 : : } 82 : 0 : tau = NULL; 83 : 0 : } 84 : : 85 : 0 : void fillRandom(unsigned int dof_count, unsigned int sample_count) 86 : : { 87 : 0 : deleteData(); 88 : 0 : count = sample_count; 89 : : 90 : 0 : q = new RobotDynamics::Math::VectorNd[count]; 91 : 0 : qdot = new RobotDynamics::Math::VectorNd[count]; 92 : 0 : qddot = new RobotDynamics::Math::VectorNd[count]; 93 : 0 : tau = new RobotDynamics::Math::VectorNd[count]; 94 : : 95 : 0 : for (unsigned int si = 0; si < count; si++) 96 : : { 97 : 0 : q[si].resize(dof_count); 98 : 0 : qdot[si].resize(dof_count); 99 : 0 : qddot[si].resize(dof_count); 100 : 0 : tau[si].resize(dof_count); 101 : : 102 : 0 : for (unsigned int i = 0; i < dof_count; i++) 103 : : { 104 : 0 : q[si][i] = (static_cast<double>(rand()) / static_cast<double>(RAND_MAX)) * 2. - 1.; 105 : 0 : qdot[si][i] = (static_cast<double>(rand()) / static_cast<double>(RAND_MAX)) * 2. - 1.; 106 : 0 : qddot[si][i] = (static_cast<double>(rand()) / static_cast<double>(RAND_MAX)) * 2. - 1.; 107 : 0 : tau[si][i] = (static_cast<double>(rand()) / static_cast<double>(RAND_MAX)) * 2. - 1.; 108 : : } 109 : : } 110 : 0 : } 111 : : }; 112 : : 113 : : #endif