рд╣рдо рд╣реЗрдХреНрд╕рд╛рдкреЙрдб рдХреЛ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рднрд╛рдЧ рддреАрди

рдЬреИрд╕рд╛ рдХрд┐ рдЕрднреНрдпрд╛рд╕ рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ, рд▓реЗрдЦ рдореЗрдВ рдХреЛрдб рдХреА рдкреНрд░рдЪреБрд░рддрд╛ рдЗрд╕рдХреА рдкрдардиреАрдпрддрд╛ рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдХрднреА-рдХрднреА рдЖрдкрдХреЗ рджрд┐рдорд╛рдЧ рдХреЛ рддрдирд╛рд╡ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд░реНрдЪ рд╣реЛрддрд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рдкреНрд░рдХрд╛рд╢рди рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХреНрдпрд╛ рдерд╛ред рдЖрдЬ рдореИрдВ рд╣реЗрдХреНрд╕рд╛рдкреЛрдб рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реНрдЯрдлрд┐рдВрдЧ рдкрд░ рд▓реЗрдЦреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдЬреЛ рд╣рдореЗрдВ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ред

рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ рдХрд╛ рдЪрдХреНрд░:


рд╣рдордиреЗ рд╣реЗрдХреНрд╕рд╛рдкреЙрдб рдХреЛ рдХреИрд╕реЗ рдЫрд╛рдкрд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдЖрдпрд╛
ред рд╣рдо рд╣реЗрдХреНрд╕рд╛рдкреЙрдб рдХреЛ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рднрд╛рдЧ рдПрдХ
рд╣рдо рд╣реЗрдХреНрд╕рд╛рдкреЙрдб рдХреЛ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рднрд╛рдЧ рджреЛ

рд╡рд┐рдиреНрдпрд╛рд╕


рд░реЛрдмреЛрдЯ рдХреА рднреМрддрд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрд▓рдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ config.h рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмреАрдЪ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореБрдЦреНрдп рд╕рдореВрд╣реЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдЕрдВрдЧреЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рдЙрдирдХреЗ рдЖрдВрджреЛрд▓рди рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ
рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдлрд╝реАрдЪрд░ рд╡рд┐рд╡рд░рдг
COXA_LENGTHрдХрдВрдзреЗ рдХреА рд▓рдВрдмрд╛рдИ (рдорд┐рдореА)
FEMORA_LENGTHрдЬрд╛рдВрдШ рдХреА рд▓рдВрдмрд╛рдИ (рдорд┐рдореА)
TIBIA_LENGTHрд╢рд┐рди рдХреА рд▓рдВрдмрд╛рдИ (рдорд┐рдореА)
TIBIA_OFFSET()
COXA_ANGLE_0()
FEMORA_ANGLE_0()
TIBIA_ANGLE_0()
COXA_ANGLE_INVERSE
FEMORA_ANGLE_INVERSE
TIBIA_ANGLE_INVERSE


рдЗрд╕рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд░реЛрдмреЛрдЯ рдХреЗ рдЕрдВрдЧреЛрдВ рдХрд╛ рд╕реНрдерд╛рди рдФрд░ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕
LEFT_FRONT_FOOT_POSITION
LEFT_MIDLE_FOOT_POSITION
LEFT_BACK_FOOT_POSITION
RIGTH_FRONT_FOOT_POSITION
RIGTH_MIDLE_FOOT_POSITION
RIGTH_BACK_FOOT_POSITION
LEFT_FRONT_FOOT_ROTATION
LEFT_MIDLE_FOOT_ROTATION
LEFT_BACK_FOOT_ROTATION
RIGTH_FRONT_FOOT_ROTATION
RIGTH_MIDLE_FOOT_ROTATION
RIGTH_BACK_FOOT_ROTATION


рд╕рд╣рд╛рдпрдХ рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдореЗрдп рдХреЛрдг рд░реЗрдВрдЬ
COXA_MIN_ANGLE
COXA_MAX_ANGLE
FEMORA_MIN_ANGLE
FEMORA_MAX_ANGLE
TIBIA_MIN_ANGLE
TIBIA_MAX_ANGLE
COMPLEX_ANGLE_LIMITS_1
MIDLE_COXA_MIN_ANGLE
MIDLE_COXA_MAX_ANGLE


рд░реЛрдмреЛрдЯ рдЖрдВрджреЛрд▓рди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ
MOTION_JOB_PERIOD()
MOVE_STEP()
ROTATE_STEP()


рдЧрдгрд┐рдд


рд░реЛрдмреЛрдЯ рдХреЗ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдХреАрдиреЗрдореЗрдЯреАрдХреНрд╕ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реЗрдХреНрдЯрд░ рдФрд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧрдгрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ Vector3D рдФрд░ Matrix3D рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдШреЛрд╖рд┐рдд 3d_math.h

рд╕реНрдЯреНрд░рдХреНрдЪрд░ рд╡реЗрдХреНрдЯрд░ 3 рдбреА
struct Vector3D {
  float x,y,z;

  Vector3D operator -(void) {
    return {-x, -y ,-z};
  }                        

  Vector3D& operator=(const Vector3D a);
  
  float len();
};


рд╕рдВрд░рдЪрдирд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ 3 рдбреА
struct Matrix3D {
  float a[3][3];

  Vector3D operator *(Vector3D& v) {
    Vector3D p;
    p.x = v.x*a[0][0] + v.y*a[0][1] + v.z*a[0][2];
    p.y = v.x*a[1][0] + v.y*a[1][1] + v.z*a[1][2];
    p.z = v.x*a[2][0] + v.y*a[2][1] + v.z*a[2][2];
    return p;
  };                                               

  Matrix3D operator *(Matrix3D m) {
    Matrix3D r;
    for(int i=0; i<3; i++) {
      for(int j=0; j<3; j++) {
        r.a[i][j] = 0;
        for(int k=0; k<3; k++)
          r.a[i][j] += a[i][k]*m.a[k][j];
      }
    }
    return r;
  };
};

рдСрдкрд░реЗрдЯрд░ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ
Vector3D operator +=(Vector3D left, const Vector3D right);
Vector3D operator -=(Vector3D left, const Vector3D right);
Vector3D operator- (Vector3D a, Vector3D b);
Vector3D operator+ (Vector3D a, Vector3D b);
Vector3D operator* (Vector3D a, Vector3D b);
Vector3D operator* (float a, Vector3D b);
Vector3D operator* (Vector3D a, float b);
Vector3D operator/ (Vector3D a, int b);
//        r = {rx, ry, rz}
Matrix3D rotMatrix(Vector3D r);  //   
Matrix3D rotMatrix2(Vector3D r);  //   
//  
float arcctn(float);


рд╕реЛрд░реНрд╕ рдХреЛрдб


рд╕рднреА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдм GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ ред рд╡рд╣рд╛рдВ рдЖрдк рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдлреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ 3 рдбреА рдкреНрд░рд┐рдВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред Arduino рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рджреЛ рдЦрдВрдб рд╣реЛрддреЗ рд╣реИрдВ:

  • рдореБрдЦреНрдп - Arduino рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдореБрдЦреНрдп рд╕реЗрдЯ
  • рд╡рд╛рдИрдлрд╛рдИ - рдПрд╕реНрдк 86 рдХреЗ рд▓рд┐рдП рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рд╡рд╛рдИ-рдлрд╛рдИ рдкрд░ рдПрдХ рд╕рдВрдЪрд╛рд░ рдЪреИрдирд▓ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?


рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдПрдХ рдЕрдВрддрд┐рдо рдкреНрд░рдХреГрддрд┐ рдХрд╛ рд╣реИ, рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╛рдИ-рдлрд╛рдИ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдЪрд╛рд░ рдЪреИрдирд▓ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд╡рд┐рд╖рдп рджреГрд╖реНрдЯрд┐ рд╕реЗ рдмрд╛рд╣рд░ рд░рд╣реЗред рдпрджрд┐ рдпреЗ рд╡рд┐рд╖рдп рд░реБрдЪрд┐ рдХреЗ рд╣реИрдВ рдпрд╛ рдЕрдиреНрдп рдЕрдирд╕реБрд▓рдЭреЗ рдореБрджреНрджреЗ рдмрдиреЗ рд╣реБрдП рд╣реИрдВ, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдпрд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрддреНрд░рд╛рдЪрд╛рд░ рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦреЗрдВред рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдЬрд╡рд╛рдм рджреЗрдиреЗ рдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рд╕рдорд░реНрдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред

рдЧреЗрдХреНрд╕рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрдкрдирд╛ рд╡рд┐рдХрд╛рд╕ рдЬрд╛рд░реА рд░рдЦреЗрдЧреАред рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдпрд╣ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдШрдЯрдХреЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрджрд▓рдиреЗ, рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ, рд░реЛрдмреЛрдЯ рдирд┐рдХрд╛рдп рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ, рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдкрд░рд┐рд╡рд░реНрдзрди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рдЖрдкрдХреА рд░рдЪрдирд╛рддреНрдордХ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдпрд╛ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЛ рд╕реБрдирдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рдзрдиреНрдпрд╡рд╛рдж!

All Articles