Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
OmniMove.cpp
- Committer:
- DarkFlame
- Date:
- 2021-03-25
- Revision:
- 1:e515f6a4da2e
- Parent:
- 0:44476ac6ab91
- Child:
- 2:4c4ff6bf6282
File content as of revision 1:e515f6a4da2e:
#include "mbed.h"
#include "math.h"
#include "OmniMove.h"
void OmniMove::setup(int nWheel,float fstWheelAng){
this->nWheel = nWheel;
m_pi = 3.1415;
for(i = 0;i < nWheel; i++){
Vx_wheel[i] = -1 * sin( conv_rad( fstWheelAng + (360 / nWheel) * i ) );
Vy_wheel[i] = cos( conv_rad( fstWheelAng + (360 / nWheel) * i ) );
}
}
void OmniMove::input_polar(float r,float theta,float Vroll,float roll_ratio){
Vx = r * cos( conv_rad( theta ) ) * ( 1 - roll_ratio );
Vy = r * sin( conv_rad( theta ) ) * ( 1 - roll_ratio );
this->Vroll = Vroll * roll_ratio;
}
void OmniMove::input_polar(float r,float theta,float Vroll,float roll_ratio,float MachineAng){
Vx = r * cos( conv_rad( theta - MachineAng ) ) * ( 1 - roll_ratio );
Vy = r * sin( conv_rad( theta - MachineAng ) ) * ( 1 - roll_ratio );
this->Vroll = Vroll * roll_ratio;
}
float OmniMove::output(int nWheel){
if( nWheel < 8 ){
return Vx*Vx_wheel[nWheel] + Vy*Vy_wheel[nWheel] + Vroll;
}else{
return 0;
}
}
void OmniMove::output(float *V){
for(i = 0;i < nWheel;i++){
V[i] = Vx*Vx_wheel[i] + Vy*Vy_wheel[i] + Vroll;
}
}
float OmniMove::conv_deg(float _rad){
return _rad * 180 / m_pi;
}
float OmniMove::conv_rad(float _deg){
return m_pi * _deg / 180;
}