30 #ifndef _REC_ROBOTINO_API2_OMNIDRIVEMODEL_H_ 31 #define _REC_ROBOTINO_API2_OMNIDRIVEMODEL_H_ 33 #include "rec/robotino/api2/utils.h" 75 double rb()
const {
return _rb; }
78 double rw()
const {
return _rw; }
81 double gear()
const {
return _gear; }
95 void project(
float* m1,
float* m2,
float* m3,
float vx,
float vy,
float omega )
const 98 static const double v0[2] = { -0.5 * sqrt( 3.0 ), 0.5 };
99 static const double v1[2] = { 0.0 , -1.0 };
100 static const double v2[2] = { 0.5 * sqrt( 3.0 ), 0.5 };
103 double vOmegaScaled = _rb * (double)omega ;
106 const double k = 60.0 * _gear / ( 2.0 * rec::robotino::api2::PI * _rw );
109 *m1 =
static_cast<float>( ( v0[0] * (double)vx + v0[1] * (
double)vy + vOmegaScaled ) * k );
110 *m2 =
static_cast<float>( ( v1[0] * (double)vx + v1[1] * (
double)vy + vOmegaScaled ) * k );
111 *m3 =
static_cast<float>( ( v2[0] * (double)vx + v2[1] * (
double)vy + vOmegaScaled ) * k );
126 void unproject(
float* vx,
float* vy,
float* omega,
float m1,
float m2,
float m3 )
const 129 const double k = 60.0 * _gear / ( 2.0 * rec::robotino::api2::PI * _rw );
131 *vx =
static_cast<float>( ( (double)m3 - (
double)m1 ) / sqrt( 3.0 ) / k );
132 *vy =
static_cast<float>( 2.0 / 3.0 * ( (double)m1 + 0.5 * ( (
double)m3 - (double)m1 ) - (double)m2 ) / k );
134 double vw = (double)*vy + (
double)m2 / k;
136 *omega =
static_cast<float>( vw / _rb );
159 #endif //_REC_ROBOTINO_API2_OMNIDRIVEMODEL_H_ void setRw(double rw)
Definition: OmniDriveModel.h:66
void project(float *m1, float *m2, float *m3, float vx, float vy, float omega) const
Definition: OmniDriveModel.h:95
double rb() const
Definition: OmniDriveModel.h:75
void setGear(double gear)
Definition: OmniDriveModel.h:72
void setRb(double rb)
Definition: OmniDriveModel.h:60
Definition: AnalogInput.h:36
double gear() const
Definition: OmniDriveModel.h:81
double rw() const
Definition: OmniDriveModel.h:78
Project single motor speeds to velocity vector and vice versa.
Definition: OmniDriveModel.h:46
void unproject(float *vx, float *vy, float *omega, float m1, float m2, float m3) const
Definition: OmniDriveModel.h:126