EgtMachKernel :

- quando si scelgono gli angoli del robot se inizio si accetta di passare anche da direzione singolare (movimento in aria).
This commit is contained in:
Dario Sassi
2026-05-17 19:28:09 +02:00
parent db30954eb3
commit b1e7534b28
+3 -4
View File
@@ -2876,7 +2876,6 @@ Operation::CalculateRobotAxesValues( bool bFirst, const Point3d& ptP, const Vect
if ( abs( vAng2[i] - vAxRotPrec[i]) > dAngDeltaMinForHome)
pMachine->GetNearestAngleInStroke( i, vAxRotHome[i], vAng2[i]) ;
}
bFirst = false ;
}
// altrimenti movimenti successivi
else {
@@ -2925,10 +2924,10 @@ Operation::CalculateRobotAxesValues( bool bFirst, const Point3d& ptP, const Vect
// se esiste solo la prima
if ( vAng2.empty())
vAxVal = vAng1 ;
// evito passaggio per lo zero di R5 (per evitare passaggio attraverso direzione singolare)
else if ( vAng1[4] * vAxRotPrec[4] >= 0 && vAng2[4] * vAxRotPrec[4] < 0)
// se non è inizio, evito passaggio per lo zero di R5 (per evitare passaggio attraverso direzione singolare)
else if ( ! bFirst && vAng1[4] * vAxRotPrec[4] >= 0 && vAng2[4] * vAxRotPrec[4] < 0)
vAxVal = vAng1 ;
else if ( vAng1[4] * vAxRotPrec[4] < 0 && vAng2[4] * vAxRotPrec[4] >= 0)
else if ( ! bFirst && vAng1[4] * vAxRotPrec[4] < 0 && vAng2[4] * vAxRotPrec[4] >= 0)
vAxVal = vAng2 ;
// minimizzo rotazione polso
else if ( abs( vAng1[3] - vAxRotPrec[3]) < abs( vAng2[3] - vAxRotPrec[3]) + 10 * EPS_ANG_SMALL)