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.
Dependencies: biquadFilter MODSERIAL QEI Servo mbed
Fork of Robot_Battle_met_ARVID by
Revision 18:8f5305cebad4, committed 2018-11-06
- Comitter:
- gastongab
- Date:
- Tue Nov 06 15:35:54 2018 +0000
- Parent:
- 17:45b31bf0c11e
- Commit message:
- 16:34 06-11-18
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Fri Nov 02 13:46:29 2018 +0000
+++ b/main.cpp Tue Nov 06 15:35:54 2018 +0000
@@ -103,23 +103,23 @@
// VARIABLES ROBOT KINEMATICS
// constants
-const float la = 0.256; // lengte actieve arm
-const float lp = 0.21; // lengte passieve arm
-const float rp = 0.052; // straal van midden end effector tot hoekpunt
-const float rm = 0.23; // straal van global midden tot motor
-const float a = 0.09; // zijde van de driehoek
-const float xas = 0.40; // afstand van motor 1 tot motor 3
-const float yas = 0.346; // afstand van xas tot motor 2
-const float thetap = 0; // rotatiehoek van de end effector
+const float la = 0.256; // length active arm
+const float lp = 0.21; // length passive arm
+const float rp = 0.052; // radius from midpoint end effector to cornerpoint
+const float rm = 0.23; // radius from global midpoint to motor
+const float a = 0.09; // side of a triangle
+const float xas = 0.40; // distance from motor 1 to 3
+const float yas = 0.346; // distance from motor 2 to x axis
+const float thetap = 0; // rotation angle of end effector
-// motor locatie
-const int a1x = 0; //x locatie motor 1
-const int a1y = 0; //y locatie motor 1
-const float a2x = (0.5)*xas; // x locatie motor 2
-const float a2y = yas; // y locatie motor 2
-const float a3x = xas; // x locatie motor 3
-const int a3y = 0; // y locatie motor 3
+// motor location
+const int a1x = 0; //x location motor 1
+const int a1y = 0; //y location motor 1
+const float a2x = (0.5)*xas; // x location motor 2
+const float a2y = yas; // y location motor 2
+const float a3x = xas; // x location motor 3
+const int a3y = 0; // y location motor 3
// script voor het bepalen van de desired position aan de hand van emg (1/0)
@@ -129,23 +129,22 @@
int EMGyplus;
int EMGymin ;
-// Dit moet experimenteel geperfectioneerd worden
-float tijdstap = 0.005; //nu wss heel langzaam, kan miss omhoog KEER V GEEFT VERANDERING IN POSITIE
-float v = 0.1; // snelheid kan wss ook hoger
+float tijdstap = 0.005; // timestep (times velocity gives the size of the step)
+float v = 0.1; // angle velocity
float px = 0.2; //starting x // BOUNDARIES
float py = 0.155; // starting y // BOUNDARIES
-// verschil horizontale as met de actieve arm
-float da1 = 1.619685; // verschil a1 hoek en motor
+// difference horizontal axis with active arm
+float da1 = 1.619685; // difference angle a1 with motor
float da2 = -0.609780;
float da3 = 3.372859;
// limits (since no forward kinematics)
-float upperxlim = 0.25; //36, 0.04, 0.315, -0.085niet helemaal naar requierments ff kijken of ie groter kan
+float upperxlim = 0.25;
float lowerxlim = 0.15;
float upperylim = 0.225;
-float lowerylim = 0.05; //0.03 is goed
+float lowerylim = 0.05;
// VARIABLES PID CONTROLLER
double PI = M_PI;// CHANGE THIS INTO M_PI
@@ -368,7 +367,7 @@
// ~~~~~~~~~~~~~~ROBOT KINEMATICS ~~~~~~~~~~~~~~~~~~
-// functie x positie
+// function x positition
float positionx(int EMGxplus,int EMGxmin)
{
float EMGx = EMGxplus - EMGxmin;
@@ -385,12 +384,11 @@
px = lowerxlim;
}
}
-//printf("X eindpunt (%f) en verplaatsing: (%f)\n\r",px,verplaatsingx);
return px;
}
-// functie y positie
+// function y position
float positiony(int EMGyplus,int EMGymin)
{
float EMGy = EMGyplus - EMGymin;
@@ -408,7 +406,7 @@
py = lowerylim;
}
}
-//printf("Y eindpunt (%f) en verplaatsing: (%f) \n\r",py,verplaatsingy);
+
return (py);
}
@@ -417,11 +415,11 @@
// arm 1 --> reference angle motor 1
float hoek1(float px, float py) // input: ref x, ref y
{
- float c1x = px - rp * cos(thetap +(M_PI/6)); // x locatie hoekpunt end-effector
- float c1y = py - rp*sin(thetap+(M_PI/6)); // y locatie hoekpunt end-effector
+ float c1x = px - rp * cos(thetap +(M_PI/6)); // x location angle point end-effector
+ float c1y = py - rp*sin(thetap+(M_PI/6)); // y location angle point end-effector
float alpha1 = atan2((c1y-a1y),(c1x-a1x)); // hoek tussen horizontaal en lijn van motor naar bijbehorende end-effector punt
float psi1 = acos(( pow(la,2)-pow(lp,2)+pow((c1x-a1x),2)+pow((c1y-a1y),2))/(2*la*sqrt(pow ((c1x-a1x),2)+pow((c1y-a1y),2) ))); //Hoek tussen lijn van motor naar bijbehorende end=effector punt en actieve arm
- float a1 = alpha1 + psi1 - da1; //hoek tussen horizontaal en actieve arm
+ float a1 = alpha1 + psi1 - da1; //angle between horizontal and active arm
//printf("arm 1 = %f \n\r",a1);
return a1;
}
