Saturn: odd behavior with increasingly large values of Z
cc @jakeread
We're having some problems with Saturn's toolpathing. We're thinking it's because we're sending large values for Z, while X and Y stay very small. (In our case, Z is the apple's rotator, X and Y are the end effector location controls.)
At the point where X and Y turn at a corner, all the sudden the Z value starts accelerating/decelerating (looks almost like it goes into an incremental mode), and then eventually it all stops and no longer ingests further messages (blocking our output).
Given the warning messages we see, and based on the timing, we think it has to do with the dtp being lower than 0.001.
if (dtp < 0.001) {
/*
console.log(`> complete position, had ${positions.length}`)
for (let i = 0; i < 10; i++) {
console.log(`> position[${i}] ${positions[i][0].toFixed(3)}, ${positions[i][1].toFixed(3)}, ${positions[i][2].toFixed(3)}`)
}
for (let i = 0; i < 10; i++) {
console.log(`> ramps[${i}].pi ${ramps[i].pi[0].toFixed(3)},${ramps[i].pi[1].toFixed(3)},${ramps[i].pi[2].toFixed(3)}`)
console.log(`> ramps[${i}].pf ${ramps[i].pf[0].toFixed(3)},${ramps[i].pf[1].toFixed(3)},${ramps[i].pf[2].toFixed(3)}`)
}
*/
positions.shift()
speed = ramps[0].vf
ramps.shift()
if (debugRuntime) console.log(`> complete position`)
// have to recalculate blocks now I think?
} else {
if (debugRuntime) console.log(`> updating p[0]`)
positions[0] = ramps[0].pf
speed = ramps[0].vf
ramps.shift()
}
Do you have any ideas for things to try? Would a Z approaching increasingly large numbers cause some issue? We go up to around 25,000 steps for z.
We may try incresaing the steps per unit down in the motor driver to keep the numbers low upstream in case it's a floating point operation issue.