Inverse_kinematica
Dependencies: mbed QEI HIDScope biquadFilter MODSERIAL FastPWM
main.cpp@6:c550e499896f, 2019-10-29 (annotated)
- Committer:
- AnkePost
- Date:
- Tue Oct 29 16:44:08 2019 +0000
- Revision:
- 6:c550e499896f
- Parent:
- 5:ac4b1c0366b3
Inverse kinematica
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
RobertoO | 0:67c50348f842 | 1 | #include "mbed.h" |
AnkePost | 3:710f993d5848 | 2 | #define M_PI 3.14159265358979323846 /* pi */ |
WiesjeRoskamp | 2:aee655d11b6d | 3 | #include <math.h> |
RobertoO | 0:67c50348f842 | 4 | |
AnkePost | 4:739136c479bd | 5 | double vx; //Gelijk aan variabele die snelheid aangeeft in EMG (in x-richting) |
AnkePost | 4:739136c479bd | 6 | double vy; //Gelijk aan variabele die snelheid aangeeft in EMG (in y-richting) |
AnkePost | 4:739136c479bd | 7 | |
AnkePost | 5:ac4b1c0366b3 | 8 | double Joint_1_position_x; |
AnkePost | 5:ac4b1c0366b3 | 9 | double Joint_2_position_x; |
AnkePost | 5:ac4b1c0366b3 | 10 | |
AnkePost | 4:739136c479bd | 11 | double Joint_velocity_x[2][1]; |
AnkePost | 4:739136c479bd | 12 | double Joint_velocity_y[2][1]; |
AnkePost | 4:739136c479bd | 13 | |
AnkePost | 5:ac4b1c0366b3 | 14 | |
AnkePost | 4:739136c479bd | 15 | // Defining motor angles |
AnkePost | 4:739136c479bd | 16 | double M1 = 20*M_PI/180; //Vervang 20 door encoder_value_motor_1 (deg), de naam die is gegeven aan hoek die uit encoder counts is gekomen, current encoder position |
AnkePost | 4:739136c479bd | 17 | double M2 = 30*M_PI/180; //Zelfde als hierboven, current encoder position |
AnkePost | 4:739136c479bd | 18 | |
AnkePost | 4:739136c479bd | 19 | // Calculating joint angles based on motor angles (current encoder values) |
AnkePost | 4:739136c479bd | 20 | double q1 = M1; //Relative angle joint 1 (rad) |
AnkePost | 4:739136c479bd | 21 | double q2 = M2 - M1; //Relative angle joint 2 (rad) |
WiesjeRoskamp | 2:aee655d11b6d | 22 | |
AnkePost | 3:710f993d5848 | 23 | void Inverse_Kinematics() |
WiesjeRoskamp | 2:aee655d11b6d | 24 | { |
AnkePost | 4:739136c479bd | 25 | // Defining joint velocities based om calculations of matlab |
WiesjeRoskamp | 2:aee655d11b6d | 26 | |
AnkePost | 4:739136c479bd | 27 | Joint_velocity_x[0][0] = (vx*(exp(q2*sqrt(-1.0))*(-1.798599718146044E18+6.546367607647411E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*sqrt(-1.0))*(-1.798599718146044E18-6.546367607647411E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*2.0*sqrt(-1.0))*(1.168095770314175E18+1.321169505615574E18*sqrt(-1.0))+exp(q1*sqrt(-1.0))*exp(q2*sqrt(-1.0))*cos(q1+3.141592653589793/9.0)*3.828059683264922E18+1.168095770314175E18-1.321169505615574E18*sqrt(-1.0))*(2.0E1/1.7E1))/(cos(q1+3.141592653589793/9.0)*(6.605847528077872E17+5.840478851570874E17*sqrt(-1.0))+sin(q1+3.141592653589793/9.0)*(-5.840478851570874E17+6.605847528077872E17*sqrt(-1.0))+exp(q2*sqrt(-1.0))*cos(q1+3.141592653589793/9.0)*(-3.273183803823705E17-8.992998590730221E17*sqrt(-1.0))+exp(q2*sqrt(-1.0))*sin(q1+3.141592653589793/9.0)*(8.992998590730221E17-3.273183803823705E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*sqrt(-1.0))*cos(q1+3.141592653589793/9.0)*(-3.273183803823705E17+8.992998590730221E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*2.0*sqrt(-1.0))*cos(q1+3.141592653589793/9.0)*(6.605847528077872E17-5.840478851570874E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*sqrt(-1.0))*sin(q1+3.141592653589793/9.0)*(8.992998590730221E17+3.273183803823705E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*2.0*sqrt(-1.0))*sin(q1+3.141592653589793/9.0)*(-5.840478851570874E17-6.605847528077872E17*sqrt(-1.0))); |
AnkePost | 4:739136c479bd | 28 | Joint_velocity_x[1][0] = (vx*(exp(q2*sqrt(-1.0))*(1.798599718146044E18-6.546367607647411E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*sqrt(-1.0))*(1.798599718146044E18+6.546367607647411E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*2.0*sqrt(-1.0))*(-1.168095770314175E18-1.321169505615574E18*sqrt(-1.0))+-1.168095770314175E18+1.321169505615574E18*sqrt(-1.0))*(2.0E1/1.7E1))/(cos(q1+3.141592653589793/9.0)*(6.605847528077872E17+5.840478851570874E17*sqrt(-1.0))+sin(q1+3.141592653589793/9.0)*(-5.840478851570874E17+6.605847528077872E17*sqrt(-1.0))+exp(q2*sqrt(-1.0))*cos(q1+3.141592653589793/9.0)*(-3.273183803823705E17-8.992998590730221E17*sqrt(-1.0))+exp(q2*sqrt(-1.0))*sin(q1+3.141592653589793/9.0)*(8.992998590730221E17-3.273183803823705E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*sqrt(-1.0))*cos(q1+3.141592653589793/9.0)*(-3.273183803823705E17+8.992998590730221E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*2.0*sqrt(-1.0))*cos(q1+3.141592653589793/9.0)*(6.605847528077872E17-5.840478851570874E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*sqrt(-1.0))*sin(q1+3.141592653589793/9.0)*(8.992998590730221E17+3.273183803823705E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*2.0*sqrt(-1.0))*sin(q1+3.141592653589793/9.0)*(-5.840478851570874E17-6.605847528077872E17*sqrt(-1.0))); |
RobertoO | 0:67c50348f842 | 29 | |
AnkePost | 4:739136c479bd | 30 | Joint_velocity_y[0][0] = (vy*(exp(q2*sqrt(-1.0))*(-3.273183803823705E17-8.992998590730221E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*sqrt(-1.0))*(-3.273183803823705E17+8.992998590730221E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*2.0*sqrt(-1.0))*(6.605847528077872E17-5.840478851570874E17*sqrt(-1.0))+exp(q1*sqrt(-1.0))*exp(q2*sqrt(-1.0))*sin(q1+3.141592653589793/9.0)*1.914029841632461E18+6.605847528077872E17+5.840478851570874E17*sqrt(-1.0))*(4.0E1/1.7E1))/(cos(q1+3.141592653589793/9.0)*(6.605847528077872E17+5.840478851570874E17*sqrt(-1.0))+sin(q1+3.141592653589793/9.0)*(-5.840478851570874E17+6.605847528077872E17*sqrt(-1.0))+exp(q2*sqrt(-1.0))*cos(q1+3.141592653589793/9.0)*(-3.273183803823705E17-8.992998590730221E17*sqrt(-1.0))+exp(q2*sqrt(-1.0))*sin(q1+3.141592653589793/9.0)*(8.992998590730221E17-3.273183803823705E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*sqrt(-1.0))*cos(q1+3.141592653589793/9.0)*(-3.273183803823705E17+8.992998590730221E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*2.0*sqrt(-1.0))*cos(q1+3.141592653589793/9.0)*(6.605847528077872E17-5.840478851570874E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*sqrt(-1.0))*sin(q1+3.141592653589793/9.0)*(8.992998590730221E17+3.273183803823705E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*2.0*sqrt(-1.0))*sin(q1+3.141592653589793/9.0)*(-5.840478851570874E17-6.605847528077872E17*sqrt(-1.0))); |
AnkePost | 4:739136c479bd | 31 | Joint_velocity_y[1][0] = (vy*(exp(q2*sqrt(-1.0))*(3.273183803823705E17+8.992998590730221E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*sqrt(-1.0))*(3.273183803823705E17-8.992998590730221E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*2.0*sqrt(-1.0))*(-6.605847528077872E17+5.840478851570874E17*sqrt(-1.0))+-6.605847528077872E17-5.840478851570874E17*sqrt(-1.0))*(4.0E1/1.7E1))/(cos(q1+3.141592653589793/9.0)*(6.605847528077872E17+5.840478851570874E17*sqrt(-1.0))+sin(q1+3.141592653589793/9.0)*(-5.840478851570874E17+6.605847528077872E17*sqrt(-1.0))+exp(q2*sqrt(-1.0))*cos(q1+3.141592653589793/9.0)*(-3.273183803823705E17-8.992998590730221E17*sqrt(-1.0))+exp(q2*sqrt(-1.0))*sin(q1+3.141592653589793/9.0)*(8.992998590730221E17-3.273183803823705E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*sqrt(-1.0))*cos(q1+3.141592653589793/9.0)*(-3.273183803823705E17+8.992998590730221E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*2.0*sqrt(-1.0))*cos(q1+3.141592653589793/9.0)*(6.605847528077872E17-5.840478851570874E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*sqrt(-1.0))*sin(q1+3.141592653589793/9.0)*(8.992998590730221E17+3.273183803823705E17*sqrt(-1.0))+exp(q1*2.0*sqrt(-1.0))*exp(q2*2.0*sqrt(-1.0))*sin(q1+3.141592653589793/9.0)*(-5.840478851570874E17-6.605847528077872E17*sqrt(-1.0))); |
AnkePost | 4:739136c479bd | 32 | |
AnkePost | 4:739136c479bd | 33 | // Integratie |
AnkePost | 4:739136c479bd | 34 | Joint_1_position_x = Joint_1_position_x + Joint_velocity_x[0][0]*delta_t; |
AnkePost | 4:739136c479bd | 35 | Joint_2_position_x = Joint_2_position_x + Joint_velocity_x[1][0]*delta_t; |
AnkePost | 3:710f993d5848 | 36 | |
AnkePost | 4:739136c479bd | 37 | Joint1_position_y = Joint_1_position_y + Joint_velocity_y[0][0]*delta_t; |
AnkePost | 4:739136c479bd | 38 | Joint2_position_y = Joint_2_position_y + Joint_velocity_y[1][0]*delta_t; |
AnkePost | 3:710f993d5848 | 39 | |
AnkePost | 4:739136c479bd | 40 | double Motor_1_velocity_x = Joint_velocity_x[0][0]; |
AnkePost | 4:739136c479bd | 41 | double Motor_2_velocity_x = Joint_velocity_x[0][0] + Joint_velocity_x[1][0]; |
AnkePost | 3:710f993d5848 | 42 | |
AnkePost | 4:739136c479bd | 43 | double Motor_1_velocity_y = Joint_velocity_y[0][0]; |
AnkePost | 4:739136c479bd | 44 | double Motor_2_velocity_y = Joint_velocity_y[0][0] + Joint_velocity_y[1][0]; |
AnkePost | 4:739136c479bd | 45 | |
AnkePost | 3:710f993d5848 | 46 | } |
RobertoO | 0:67c50348f842 | 47 | |
RobertoO | 0:67c50348f842 | 48 | int main() |
RobertoO | 0:67c50348f842 | 49 | { |
AnkePost | 4:739136c479bd | 50 | Inverse_Kinematics (); |
RobertoO | 0:67c50348f842 | 51 | } |
WiesjeRoskamp | 2:aee655d11b6d | 52 | |
WiesjeRoskamp | 2:aee655d11b6d | 53 | |
WiesjeRoskamp | 2:aee655d11b6d | 54 | |
WiesjeRoskamp | 2:aee655d11b6d | 55 |