G28 MotorStepsToCartesian => thetaL:234.67=MotorPosX:216935.00/StepsPermmX:924.44 MotorStepsToCartesian => thetaR:234.67=MotorPosY:83200.00/StepsPermmY:924.44 getForwad => getIntersec(distalL:210.00,distalR:213.00,xL:-167.87,yL:-102.79,xR:93.00,yR:133.00) getIntersec firstRadius: 210.00 secondRadius: 213.00 firstX: -167.87 firstY: -102.79 secondX: 93.00 secondY: 133.00 getTurn => turn:-41336.09 = (x2:-117.60 - x1:-167.87) * (y3:133.00 - y1:-102.79) - (y2:101.10 - y1:-102.79) * (x3:93.00 - x1:-167.87) getTurn => turn:41336.09 = (x2:40.05 - x1:-167.87) * (y3:133.00 - y1:-102.79) - (y2:-73.31 - y1:-102.79) * (x3:93.00 - x1:-167.87) getTurn => turn:-9690.57 = (x2:-167.87 - x1:-95.00) * (y3:101.10 - y1:0.00) - (y2:-102.79 - y1:0.00) * (x3:-117.60 - x1:-95.00) getTurn => turn:28009.58 = (x2:93.00 - x1:93.00) * (y3:101.10 - y1:0.00) - (y2:133.00 - y1:0.00) * (x3:-117.60 - x1:93.00) getForwad => workmode:1 turnLeft:-9690.57 turnRight:28009.58 MotorStepsToCartesian => MachinePosX:nan MachinePosY:nan XYZ_AXES:3 numVisibleAxes:3 MotorStepsToCartesian => thetaL:234.67=MotorPosX:216935.00/StepsPermmX:924.44 MotorStepsToCartesian => thetaR:234.67=MotorPosY:83200.00/StepsPermmY:924.44 getForwad => getIntersec(distalL:210.00,distalR:213.00,xL:-167.87,yL:-102.79,xR:93.00,yR:133.00) getIntersec firstRadius: 210.00 secondRadius: 213.00 firstX: -167.87 firstY: -102.79 secondX: 93.00 secondY: 133.00 getTurn => turn:-41336.09 = (x2:-117.60 - x1:-167.87) * (y3:133.00 - y1:-102.79) - (y2:101.10 - y1:-102.79) * (x3:93.00 - x1:-167.87) getTurn => turn:41336.09 = (x2:40.05 - x1:-167.87) * (y3:133.00 - y1:-102.79) - (y2:-73.31 - y1:-102.79) * (x3:93.00 - x1:-167.87) getTurn => turn:-9690.57 = (x2:-167.87 - x1:-95.00) * (y3:101.10 - y1:0.00) - (y2:-102.79 - y1:0.00) * (x3:-117.60 - x1:-95.00) getTurn => turn:28009.58 = (x2:93.00 - x1:93.00) * (y3:101.10 - y1:0.00) - (y2:133.00 - y1:0.00) * (x3:-117.60 - x1:93.00) getForwad => workmode:1 turnLeft:-9690.57 turnRight:28009.58 MotorStepsToCartesian => MachinePosX:nan MachinePosY:nan XYZ_AXES:3 numVisibleAxes:3 MotorStepsToCartesian => thetaL:51.00=MotorPosX:47147.00/StepsPermmX:924.44 MotorStepsToCartesian => thetaR:51.00=MotorPosY:83200.00/StepsPermmY:924.44 getForwad => getIntersec(distalL:210.00,distalR:213.00,xL:-15.71,yL:97.92,xR:93.00,yR:133.00) getIntersec firstRadius: 210.00 secondRadius: 213.00 firstX: -15.71 firstY: 97.92 secondX: 93.00 secondY: 133.00 getTurn => turn:-23253.28 = (x2:-29.16 - x1:-15.71) * (y3:133.00 - y1:97.92) - (y2:307.49 - y1:97.92) * (x3:93.00 - x1:-15.71) getTurn => turn:23253.28 = (x2:95.88 - x1:-15.71) * (y3:133.00 - y1:97.92) - (y2:-79.98 - y1:97.92) * (x3:93.00 - x1:-15.71) getTurn => turn:17934.62 = (x2:-15.71 - x1:-95.00) * (y3:307.49 - y1:0.00) - (y2:97.92 - y1:0.00) * (x3:-29.16 - x1:-95.00) getTurn => turn:16246.89 = (x2:93.00 - x1:93.00) * (y3:307.49 - y1:0.00) - (y2:133.00 - y1:0.00) * (x3:-29.16 - x1:93.00) getForwad => workmode:1 turnLeft:17934.62 turnRight:16246.89 MotorStepsToCartesian => MachinePosX:-29.16 MachinePosY:307.49 XYZ_AXES:3 numVisibleAxes:3 MotorStepsToCartesian => thetaL:51.00=MotorPosX:47147.00/StepsPermmX:924.44 MotorStepsToCartesian => thetaR:51.00=MotorPosY:83200.00/StepsPermmY:924.44 getForwad => getIntersec(distalL:210.00,distalR:213.00,xL:-15.71,yL:97.92,xR:93.00,yR:133.00) getIntersec firstRadius: 210.00 secondRadius: 213.00 firstX: -15.71 firstY: 97.92 secondX: 93.00 secondY: 133.00 getTurn => turn:-23253.28 = (x2:-29.16 - x1:-15.71) * (y3:133.00 - y1:97.92) - (y2:307.49 - y1:97.92) * (x3:93.00 - x1:-15.71) getTurn => turn:23253.28 = (x2:95.88 - x1:-15.71) * (y3:133.00 - y1:97.92) - (y2:-79.98 - y1:97.92) * (x3:93.00 - x1:-15.71) getTurn => turn:17934.62 = (x2:-15.71 - x1:-95.00) * (y3:307.49 - y1:0.00) - (y2:97.92 - y1:0.00) * (x3:-29.16 - x1:-95.00) getTurn => turn:16246.89 = (x2:93.00 - x1:93.00) * (y3:307.49 - y1:0.00) - (y2:133.00 - y1:0.00) * (x3:-29.16 - x1:93.00) getForwad => workmode:1 turnLeft:17934.62 turnRight:16246.89 MotorStepsToCartesian => MachinePosX:-29.16 MachinePosY:307.49 XYZ_AXES:3 numVisibleAxes:3 MotorStepsToCartesian => thetaL:51.00=MotorPosX:47147.00/StepsPermmX:924.44 MotorStepsToCartesian => thetaR:51.00=MotorPosY:83200.00/StepsPermmY:924.44 getForwad => getIntersec(distalL:210.00,distalR:213.00,xL:-15.71,yL:97.92,xR:93.00,yR:133.00) getIntersec firstRadius: 210.00 secondRadius: 213.00 firstX: -15.71 firstY: 97.92 secondX: 93.00 secondY: 133.00 getTurn => turn:-23253.28 = (x2:-29.16 - x1:-15.71) * (y3:133.00 - y1:97.92) - (y2:307.49 - y1:97.92) * (x3:93.00 - x1:-15.71) getTurn => turn:23253.28 = (x2:95.88 - x1:-15.71) * (y3:133.00 - y1:97.92) - (y2:-79.98 - y1:97.92) * (x3:93.00 - x1:-15.71) getTurn => turn:17934.62 = (x2:-15.71 - x1:-95.00) * (y3:307.49 - y1:0.00) - (y2:97.92 - y1:0.00) * (x3:-29.16 - x1:-95.00) getTurn => turn:16246.89 = (x2:93.00 - x1:93.00) * (y3:307.49 - y1:0.00) - (y2:133.00 - y1:0.00) * (x3:-29.16 - x1:93.00) getForwad => workmode:1 turnLeft:17934.62 turnRight:16246.89 MotorStepsToCartesian => MachinePosX:-29.16 MachinePosY:307.49 XYZ_AXES:3 numVisibleAxes:3 MotorStepsToCartesian => thetaL:49.00=MotorPosX:45298.00/StepsPermmX:924.44 MotorStepsToCartesian => thetaR:49.00=MotorPosY:81351.00/StepsPermmY:924.44 getForwad => getIntersec(distalL:210.00,distalR:213.00,xL:-12.34,yL:95.09,xR:97.64,yR:132.92) getIntersec firstRadius: 210.00 secondRadius: 213.00 firstX: -12.34 firstY: 95.09 secondX: 97.64 secondY: 132.92 getTurn => turn:-23641.96 = (x2:-28.62 - x1:-12.34) * (y3:132.92 - y1:95.09) - (y2:304.46 - y1:95.09) * (x3:97.64 - x1:-12.34) getTurn => turn:23641.95 = (x2:103.61 - x1:-12.34) * (y3:132.92 - y1:95.09) - (y2:-80.00 - y1:95.09) * (x3:97.64 - x1:-12.34) getTurn => turn:18855.43 = (x2:-12.34 - x1:-95.00) * (y3:304.46 - y1:0.00) - (y2:95.09 - y1:0.00) * (x3:-28.62 - x1:-95.00) getTurn => turn:17578.94 = (x2:97.64 - x1:93.00) * (y3:304.46 - y1:0.00) - (y2:132.92 - y1:0.00) * (x3:-28.62 - x1:93.00) getForwad => workmode:1 turnLeft:18855.43 turnRight:17578.94 MotorStepsToCartesian => MachinePosX:-28.62 MachinePosY:304.46 XYZ_AXES:3 numVisibleAxes:3 MotorStepsToCartesian => thetaL:49.00=MotorPosX:45298.00/StepsPermmX:924.44 MotorStepsToCartesian => thetaR:49.00=MotorPosY:81351.00/StepsPermmY:924.44 getForwad => getIntersec(distalL:210.00,distalR:213.00,xL:-12.34,yL:95.09,xR:97.64,yR:132.92) getIntersec firstRadius: 210.00 secondRadius: 213.00 firstX: -12.34 firstY: 95.09 secondX: 97.64 secondY: 132.92 getTurn => turn:-23641.96 = (x2:-28.62 - x1:-12.34) * (y3:132.92 - y1:95.09) - (y2:304.46 - y1:95.09) * (x3:97.64 - x1:-12.34) getTurn => turn:23641.95 = (x2:103.61 - x1:-12.34) * (y3:132.92 - y1:95.09) - (y2:-80.00 - y1:95.09) * (x3:97.64 - x1:-12.34) getTurn => turn:18855.43 = (x2:-12.34 - x1:-95.00) * (y3:304.46 - y1:0.00) - (y2:95.09 - y1:0.00) * (x3:-28.62 - x1:-95.00) getTurn => turn:17578.94 = (x2:97.64 - x1:93.00) * (y3:304.46 - y1:0.00) - (y2:132.92 - y1:0.00) * (x3:-28.62 - x1:93.00) getForwad => workmode:1 turnLeft:18855.43 turnRight:17578.94 MotorStepsToCartesian => MachinePosX:-28.62 MachinePosY:304.46 XYZ_AXES:3 numVisibleAxes:3 MotorStepsToCartesian => thetaL:51.00=MotorPosX:47147.00/StepsPermmX:924.44 MotorStepsToCartesian => thetaR:51.00=MotorPosY:81351.00/StepsPermmY:924.44 getForwad => getIntersec(distalL:210.00,distalR:213.00,xL:-15.71,yL:97.92,xR:97.64,yR:132.92) getIntersec firstRadius: 210.00 secondRadius: 213.00 firstX: -15.71 firstY: 97.92 secondX: 97.64 secondY: 132.92 getTurn => turn:-24075.32 = (x2:-24.02 - x1:-15.71) * (y3:132.92 - y1:97.92) - (y2:307.76 - y1:97.92) * (x3:97.64 - x1:-15.71) getTurn => turn:24075.33 = (x2:95.73 - x1:-15.71) * (y3:132.92 - y1:97.92) - (y2:-80.07 - y1:97.92) * (x3:97.64 - x1:-15.71) getTurn => turn:17452.44 = (x2:-15.71 - x1:-95.00) * (y3:307.76 - y1:0.00) - (y2:97.92 - y1:0.00) * (x3:-24.02 - x1:-95.00) getTurn => turn:16982.36 = (x2:97.64 - x1:93.00) * (y3:307.76 - y1:0.00) - (y2:132.92 - y1:0.00) * (x3:-24.02 - x1:93.00) getForwad => workmode:1 turnLeft:17452.44 turnRight:16982.36 MotorStepsToCartesian => MachinePosX:-24.02 MachinePosY:307.76 XYZ_AXES:3 numVisibleAxes:3 MotorStepsToCartesian => thetaL:51.00=MotorPosX:47147.00/StepsPermmX:924.44 MotorStepsToCartesian => thetaR:51.00=MotorPosY:81351.00/StepsPermmY:924.44 getForwad => getIntersec(distalL:210.00,distalR:213.00,xL:-15.71,yL:97.92,xR:97.64,yR:132.92) getIntersec firstRadius: 210.00 secondRadius: 213.00 firstX: -15.71 firstY: 97.92 secondX: 97.64 secondY: 132.92 getTurn => turn:-24075.32 = (x2:-24.02 - x1:-15.71) * (y3:132.92 - y1:97.92) - (y2:307.76 - y1:97.92) * (x3:97.64 - x1:-15.71) getTurn => turn:24075.33 = (x2:95.73 - x1:-15.71) * (y3:132.92 - y1:97.92) - (y2:-80.07 - y1:97.92) * (x3:97.64 - x1:-15.71) getTurn => turn:17452.44 = (x2:-15.71 - x1:-95.00) * (y3:307.76 - y1:0.00) - (y2:97.92 - y1:0.00) * (x3:-24.02 - x1:-95.00) getTurn => turn:16982.36 = (x2:97.64 - x1:93.00) * (y3:307.76 - y1:0.00) - (y2:132.92 - y1:0.00) * (x3:-24.02 - x1:93.00) getForwad => workmode:1 turnLeft:17452.44 turnRight:16982.36 MotorStepsToCartesian => MachinePosX:-24.02 MachinePosY:307.76 XYZ_AXES:3 numVisibleAxes:3 MotorStepsToCartesian => thetaL:51.00=MotorPosX:47147.00/StepsPermmX:924.44 MotorStepsToCartesian => thetaR:51.00=MotorPosY:83200.00/StepsPermmY:924.44 getForwad => getIntersec(distalL:210.00,distalR:213.00,xL:-15.71,yL:97.92,xR:93.00,yR:133.00) getIntersec firstRadius: 210.00 secondRadius: 213.00 firstX: -15.71 firstY: 97.92 secondX: 93.00 secondY: 133.00 getTurn => turn:-23253.28 = (x2:-29.16 - x1:-15.71) * (y3:133.00 - y1:97.92) - (y2:307.49 - y1:97.92) * (x3:93.00 - x1:-15.71) getTurn => turn:23253.28 = (x2:95.88 - x1:-15.71) * (y3:133.00 - y1:97.92) - (y2:-79.98 - y1:97.92) * (x3:93.00 - x1:-15.71) getTurn => turn:17934.62 = (x2:-15.71 - x1:-95.00) * (y3:307.49 - y1:0.00) - (y2:97.92 - y1:0.00) * (x3:-29.16 - x1:-95.00) getTurn => turn:16246.89 = (x2:93.00 - x1:93.00) * (y3:307.49 - y1:0.00) - (y2:133.00 - y1:0.00) * (x3:-29.16 - x1:93.00) getForwad => workmode:1 turnLeft:17934.62 turnRight:16246.89 MotorStepsToCartesian => MachinePosX:-29.16 MachinePosY:307.49 XYZ_AXES:3 numVisibleAxes:3 constraintsOK => cachedInvalid:0 cachedX0:0.00 cachedY0:0.00 getInverse => not cantilevered proximalL:126.00 distalL:210.00 xOrigL:-95.00 yOrigL:0.00 x_0:-29.16 y_0:307.49 getIntersec firstRadius: 126.00 secondRadius: 210.00 firstX: -95.00 firstY: 0.00 secondX: -29.16 secondY: 307.49 getTurn => turn:-17934.62 = (x2:-127.24 - x1:-95.00) * (y3:307.49 - y1:0.00) - (y2:121.80 - y1:0.00) * (x3:-29.16 - x1:-95.00) getTurn => turn:17934.62 = (x2:-15.71 - x1:-95.00) * (y3:307.49 - y1:0.00) - (y2:97.92 - y1:0.00) * (x3:-29.16 - x1:-95.00) getTheta => workmode: 1 thetaA:104.83 thetaB:51.00 proxturnA:-17934.62 proxturnB:-17934.62 getTheta => use: 2 x2: -15.71 y2: 97.92 thetaB: 51.00 x1: -127.24 y1: 121.80 thetaA: 104.83 getInverse => not cantilevered proximalR:133.00 distalR:213.00 xOrigR:93.00 yOrigR:0.00 x_0:-29.16 y_0:307.49 getIntersec firstRadius: 133.00 secondRadius: 213.00 firstX: 93.00 firstY: 0.00 secondX: -29.16 secondY: 307.49 getTurn => turn:-16246.89 = (x2:1.73 - x1:93.00) * (y3:307.49 - y1:0.00) - (y2:96.74 - y1:0.00) * (x3:-29.16 - x1:93.00) getTurn => turn:16246.89 = (x2:93.00 - x1:93.00) * (y3:307.49 - y1:0.00) - (y2:133.00 - y1:0.00) * (x3:-29.16 - x1:93.00) getTheta => workmode: 1 thetaA:133.33 thetaB:90.00 proxturnA:-16246.89 proxturnB:-16246.89 getTheta => use: 2 x2: 93.00 y2: 133.00 thetaB: 90.00 x1: 1.73 y1: 96.74 thetaA: 133.33 getInverse => value thetaL:51.00 getInverse => value thetaR:90.00 getInverse => cachedInvalid 0 cachedX0:-29.16 cachedY0:307.49 cachedX1:-29.16 cachedY1:307.49 getInverse => cachedXL:-15.71 cachedYL:97.92 cachedXR:93.00 cachedYR:133.00 cachedThetaR:90.00 cachedXR:93.00 getInverse => cachedYR:133.00 cachedThetaL:51.00 cachedXL:-15.71 cachedYL:97.92 getInverse => cachedInvalid:0 x_0:-29.16 y_0:307.49 xL:-15.71 yL:97.92 thetaL:51.00 xR:93.00 yR:133.00 thetaR:90.00 x1:-29.16 y1:307.49 constraintsOK => cachedInvalid:0 actuatorAngleLMin:-80.00<0 && thetaL:51.00>actuatorAngleLMax:260.00 constraintsOK => cachedInvalid:0 thetaL:51.00 < actuatorAngleLMin:-80.00 || thetaL:51.00 > actuatorAngleLMax:260.00 return false constraintsOK => cachedInvalid:0 actuatorAngleRMin:-80.00<0 && thetaR:90.00>actuatorAngleRMax:260.00 constraintsOK => cachedInvalid:0 thetaR:90.00 < actuatorAngleRMin:-80.00 || thetaR:90.00 > actuatorAngleRMax:260.00 return false getAngle => x1:-15.71 y1:97.92 x2:-29.16 y2:307.49 x3:93.00 y3:133.00 getAngle => angle:31.32 = angle2:305.00 - angle1:273.67 constraintsOK => achedInvalid:0 headAngle:31.32 < headAngleMin:15.00 || headAngle:31.32 > headAngleMax:165.00 isnan(headAngle):0 return false getAngle => x1:-95.00 y1:0.00 x2:-15.71 y2:97.92 x3:-29.16 y3:307.49 getAngle => angle:222.67 = 360 + angle2:93.67 - angle1:231.00 constraintsOK => cachedInvalid:0 angleProxDistL:222.67 < proxDistLAngleMin:0.00 || angleProxDistL:222.67 > proxDistLAngleMax:360.00 isnan(angleProxDistL):0 return false getAngle => x1:93.00 y1:0.00 x2:93.00 y2:133.00 x3:-29.16 y3:307.49 getAngle => angle:215.00 = 360 + angle2:125.00 - angle1:270.00 constraintsOK => cachedInvalid:0 angleProxDistR:215.00 < proxDistRAngleMin:0.00 || angleProxDistR:215.00 > proxDistRAngleMax:360.00 isnan(angleProxDistR):0 return false constraintsOK => cachedInvalid:0 cachedX0:-29.16 cachedY0:307.49 CartesianToMotorSteps => motorPosX = cachedThetaL:51.00 * stespPermm[X_AXIS]924.44 motorPosY = cachedThetaR:90.00 * stepsPermm[Y_AXIS]924.44 CartesianToMotorSteps => machinePos[0]:-29.16 machinePos[1]:307.49 motorPosX:0.00 motorPosY:924.44 CartesianToMotorSteps => XYZ_AXES:3 numVisibleAxes:3 constraintsOK => cachedInvalid:0 cachedX0:-29.16 cachedY0:307.49 CartesianToMotorSteps => motorPosX = cachedThetaL:51.00 * stespPermm[X_AXIS]924.44 motorPosY = cachedThetaR:90.00 * stepsPermm[Y_AXIS]924.44 CartesianToMotorSteps => machinePos[0]:-29.16 machinePos[1]:307.49 motorPosX:0.00 motorPosY:924.44 CartesianToMotorSteps => XYZ_AXES:3 numVisibleAxes:3ok