✅ Cinemática Inversa Robot Manipulador 4DOF | Inverse kinematics

แชร์
ฝัง
  • เผยแพร่เมื่อ 9 พ.ย. 2024

ความคิดเห็น • 16

  • @harbmecatronica
    @harbmecatronica  4 ปีที่แล้ว

    Si te ha servido este vídeo. no te pierdas ninguno!
    Suscribete YAAA:
    👉 👉 bit.ly/latamecatronica

  • @pitherbryanmescuatovar9353
    @pitherbryanmescuatovar9353 5 ปีที่แล้ว +7

    buena explicacion bro! serias amable de brindarme tu codigo?

  • @alphonsra
    @alphonsra 3 ปีที่แล้ว

    Muchas gracias por tu trabajo, aprecio bastante que puedas compartir contenido valioso e importante de robótica. Sería aún más increíble si es que me pudieras compartir el software que haz usado para lograr este tipo de movimiento, realmente aprecio lo que haces, muchas gracias

  • @gabrielfelipedoportodiaz9056
    @gabrielfelipedoportodiaz9056 3 ปีที่แล้ว +2

    consulta, este codigo te muestra las ecuaciones en el Monitor serie. gracias muy buen video.

    • @harbmecatronica
      @harbmecatronica  3 ปีที่แล้ว

      Hola Gabriel, el código mostraba los resultados en el monitor serie, lamentablemente ya no tenemos el código debido a un problema que tuvimos con el PC :(

  • @juanrivera3060
    @juanrivera3060 5 ปีที่แล้ว +2

    Fantástico, me encantó el trabajo, podrías ser amable de facilitar el código?

  • @Pacchioo
    @Pacchioo 5 ปีที่แล้ว +1

    Hola! Good work! Did you only use Arduino for this project or did you use Matlab too?
    Can you share/upload the code you used for inverse kinematics (CIManipulador2.ino) ? Thank you!

  • @maford552
    @maford552 6 หลายเดือนก่อน

    no tendras el codigo bro? eres un capo.

    • @manuelcuadra4096
      @manuelcuadra4096 4 หลายเดือนก่อน

      te comparto el código, no lo puedo probar pero si tuvieras algún detalle coméntame y lo tratare de resolver
      #include //
      #include
      byte posicion =0;
      //posiciones finales en el espacio
      float px=0;
      float py=0;
      float pz=0;
      // parametros para calculo de cinematica
      float q1real;
      float q2real;
      float q3real;
      float q1;
      float q2;
      float q3;
      int num2;
      int raiznumq3;
      float cq3;
      float cosq3num;
      float cosq3den;
      float Beta;
      float numx;
      float denx;
      float x;
      float y;
      float r;
      //longitud de las articulaciones
      float D11 = 9.5;
      float D12 = 10.5;
      float D13 = 11.5;
      Servo s1;
      Servo s2;
      Servo s3;
      Servo s4;
      void setup(){
      s1.attach(2);
      s2.attach(3);
      s3.attach(4);
      s4.attach(5);
      //pocicion inicial manupuladores
      s1.write(90);
      delay(1000);
      s2.write(90);
      delay(1000);
      s3.write(90);
      delay(1000);
      s4.write(90);
      delay(1000);
      //_________________________
      Serial.begin(9600);
      Serial.println("cinematica inversa");
      Serial.println("pocivion px");
      Serial.print("Px=");
      Serial.println(px);
      Serial.println("pocision py");
      Serial.print("Py=");
      Serial.println(py);
      Serial.println("pocision pz");
      Serial.print("Pz=");
      Serial.println (pz);
      Serial.println ("");
      //calculo cinematica inv
      q1=atan(py/px)*(180/3.1416);
      q1real=q1+90;
      Serial.print("Angulo q1=");
      Serial.println(q1); //_-------------- final
      r=sqrt(px*px)+(py*py);
      cosq3num= (r*r)+((pz+D11)*(pz+D11))-((D12)*(D12))-((D13)*(D13));
      cosq3den=(2*D12*D13);
      cq3=cosq3num/cosq3den;
      q3=atan(sqrt(1-(cq3*cq3)/cq3))*(180/3.1416);
      Serial.print("Angulo q3=");
      Serial.println(q3);//_-------------- final
      Beta=atan(pz-D11)/(r)*(180/3.1416);
      Serial.print("Beta=");
      Serial.println(Beta);
      numx=(D13*sin(q3*(180/3.1416)));
      denx=(D12+D13*cos(q3*(180/3.1416)));
      x=atan(numx/denx)*(180/3.1416);
      Serial.print("x:");
      Serial.println(x);
      q2=Beta-x;
      Serial.print("Angulo q2=");
      Serial.println(q2);//_-------------- final
      q2real=q2+90;
      q3real=q3+90;
      delay(50);
      Serial.println("-q1 Real-");
      Serial.print("q1 Real=");
      Serial.println(q1real);
      Serial.println("-q2 Real-");
      Serial.print("q2 Real=");
      Serial.println(q2real);
      Serial.println("-q3 Real-");
      Serial.print("q3 Rea=l");
      Serial.println(q3real);
      }
      void loop () {}

  • @gabrielfelipedoportodiaz9056
    @gabrielfelipedoportodiaz9056 3 ปีที่แล้ว +2

    muy bueno, como llegaste
    al codigo?. lo podrias compartir.

    • @jorgeluismarquezl.5583
      @jorgeluismarquezl.5583 3 ปีที่แล้ว

      si te lo compartio?

    • @maford552
      @maford552 6 หลายเดือนก่อน

      @@jorgeluismarquezl.5583 si lo conseguiste? jajaja ocupo hacer lo mismo

  • @mariaisabeldeleonmartinez209
    @mariaisabeldeleonmartinez209 ปีที่แล้ว

    Muy buen trabajo, crees que puedas compartirme tu código?

  • @Mr.J_Miller-Moore
    @Mr.J_Miller-Moore 3 ปีที่แล้ว +1

    en q1 porque le sumas +90°

  • @alejandrogarciagarcia7985
    @alejandrogarciagarcia7985 ปีที่แล้ว

    Magnifico trabajo, si pudieras compartirme el programa (Código) te lo agredecería mucho; saludos cordiales.

    • @manuelcuadra4096
      @manuelcuadra4096 4 หลายเดือนก่อน

      aqui esta el codigo
      #include //
      #include
      byte posicion =0;
      //posiciones finales en el espacio
      float px=0;//tota
      float py=11.5;
      float pz=20;
      // parametros para calculo de cinematica
      float q1real;
      float q2real;
      float q3real;
      float q1;
      float q2;
      float q3;
      int num2;
      int raiznumq3;
      float cq3;
      float cosq3num;
      float cosq3den;
      float Beta;
      float numx;
      float denx;
      float x;
      float y;
      float r;
      //longitud de las articulaciones
      float D11 = 9.5;
      float D12 = 10.5;
      float D13 = 11.5;
      Servo s1;
      Servo s2;
      Servo s3;
      Servo s4;
      void setup(){
      s1.attach(2);
      s2.attach(3);
      s3.attach(4);
      s4.attach(5);
      //pocicion inicial manupuladores
      s1.write(90);
      delay(1000);
      s2.write(90);
      delay(1000);
      s3.write(90);
      delay(1000);
      s4.write(90);
      delay(1000);
      //_________________________
      Serial.begin(9600);
      Serial.println("cinematica inversa");
      Serial.println("pocivion px");
      Serial.print("Px=");
      Serial.println(px);
      Serial.println("pocision py");
      Serial.print("Py=");
      Serial.println(py);
      Serial.println("pocision pz");
      Serial.print("Pz=");
      Serial.println (pz);
      Serial.println ("");
      //calculo cinematica inv
      q1=atan(py/px)*(180/3.1416);
      q1real=q1+90;
      Serial.print("Angulo q1=");
      Serial.println(q1); //_-------------- final
      r=sqrt(px*px)+(py*py);
      //cos q3 = ((px*px)+(py*py))+((pz+D11)*(pz+D11))-((D12)*(D12))-((D13)*(D13)); referencia de lo que es cos q3
      q3=atan(sqrt(1-((((px*px)+(py*py))+((pz+D11)*(pz+D11))-((D12)*(D12))-((D13)*(D13)))/(2*D12*D13)*(((px*px)+(py*py))+((pz+D11)*(pz+D11))-((D12)*(D12))-((D13)*(D13)))/(2*D12*D13))/(((px*px)+(py*py))+((pz+D11)*(pz+D11))-((D12)*(D12))-((D13)*(D13)))/(2*D12*D13)));//formula q3=atan(sqrt(1-(cos q3*cosq3)/cos q3))
      Serial.print("Angulo q3=");
      Serial.println(q3);//_-------------- final
      Beta=atan(pz-D11)/(r)*(180/3.1416);
      Serial.print("Beta=");
      Serial.println(Beta);
      numx=(D13*sin(q3*(180/3.1416)));
      denx=(D12+D13*cos(q3*(180/3.1416)));
      x=atan(numx/denx)*(180/3.1416);
      Serial.print("x:");
      Serial.println(x);
      q2=Beta-x;
      Serial.print("Angulo q2=");
      Serial.println(q2);//_-------------- final
      q2real=q2+90;
      q3real=q3+90;
      delay(50);
      Serial.println("-q1 Real-");
      Serial.print("q1 Real=");
      Serial.println(q1real);
      Serial.println("-q2 Real-");
      Serial.print("q2 Real=");
      Serial.println(q2real);
      Serial.println("-q3 Real-");
      Serial.print("q3 Rea=l");
      Serial.println(q3real);
      }
      void loop () {}