@@ -451,6 +451,8 @@ void uArmClass::moveTo(double x, double y, double z)
451451 l_current_x = g_cal_x;
452452 l_current_y = g_cal_y;
453453 l_current_z = g_cal_z;
454+ double current_hand = readAngle (SERVO_HAND_ROT_NUM );
455+ if (current_hand < 0 ) current_hand = 0 ;
454456
455457 interpolation (l_current_x, x);
456458 for (byte i = 0 ; i < 50 ; i++){
@@ -475,7 +477,7 @@ void uArmClass::moveTo(double x, double y, double z)
475477 calAngles (x_arr[i],y_arr[i],z_arr[i]);
476478
477479 l_movementTrigger = 1 ;
478- uarm.writeAngle (g_theta_1, g_theta_2, g_theta_3,0 );
480+ uarm.writeAngle (g_theta_1, g_theta_2, g_theta_3,current_hand );
479481
480482 delay (40 );
481483
@@ -495,6 +497,8 @@ void uArmClass::moveTo(double x, double y, double z, int relative, double time_s
495497 double current_x = g_cal_x;
496498 double current_y = g_cal_y;
497499 double current_z = g_cal_z;
500+ double current_hand = readAngle (SERVO_HAND_ROT_NUM );
501+ if (current_hand < 0 ) current_hand = 0 ;
498502
499503 if ((relative !=0 )&&(relative != 1 ))
500504 {
@@ -536,7 +540,7 @@ void uArmClass::moveTo(double x, double y, double z, int relative, double time_s
536540 {
537541 calAngles (x_arr[i],y_arr[i],z_arr[i]);
538542 l_movementTrigger = 1 ;
539- uarm.writeAngle (g_theta_1, g_theta_2, g_theta_3,0 );
543+ uarm.writeAngle (g_theta_1, g_theta_2, g_theta_3,current_hand );
540544
541545 delay (time_spend*1000 /50 );
542546
@@ -574,16 +578,18 @@ void uArmClass::moveToAtOnce(double x, double y, double z, int relative, double
574578void uArmClass::moveTo (double x, double y, double z, int relative, double time_spend, int servo_4_relative, double servo_4_angle)
575579{
576580 uarm.attachAll ();
577-
581+
578582 double x_arr[50 ];
579583 double y_arr[50 ];
580584 double z_arr[50 ];
581-
585+ double h_arr[ 50 ];
582586
583587 calXYZ ();
584588 double current_x = g_cal_x;
585589 double current_y = g_cal_y;
586590 double current_z = g_cal_z;
591+ double current_hand = readAngle (SERVO_HAND_ROT_NUM );
592+ if (current_hand < 0 ) current_hand = 0 ;
587593
588594 if ((relative !=0 )&&(relative != 1 ))
589595 {
@@ -626,12 +632,20 @@ void uArmClass::moveTo(double x, double y, double z, int relative, double time_s
626632 z_arr[i] = g_interpol_val_arr[i];
627633
628634 }
635+
636+ interpolation (current_hand, current_hand*servo_4_relative+servo_4_angle);
637+
638+ for (byte i = 0 ; i < 50 ; i++){
639+
640+ h_arr[i] = g_interpol_val_arr[i];
641+
642+ }
629643
630644 for (byte i = 0 ; i < 50 ; i++)
631645 {
632646 calAngles (x_arr[i],y_arr[i],z_arr[i]);
633647 l_movementTrigger = 1 ;
634- uarm.writeAngle (g_theta_1, g_theta_2, g_theta_3, g_theta_1*servo_4_relative+servo_4_angle );
648+ uarm.writeAngle (g_theta_1, g_theta_2, g_theta_3, h_arr[i] );
635649
636650 delay (time_spend*1000 /50 );
637651 }
0 commit comments