Closed MuffinSpawn closed 7 years ago
I have finished the implementation, but I am nervous. If the LT goes uninitialized in the middle of a step (move, find, measure, find, measure.... sequence), the component will have to be re-initialized manually/by the script because it cannot distinguish between find.ack from the re-init or one from a pending step find.
My inclination is to modify the behavior to 1) save the inputs to the step, 2) flush the inbound queue, 3) abort Motion, 4) abort Laser Tracker 5) re-init, 6) flush the inbound queue again, and 7) redo the step from the start using the saved inputs.
There's a pathological case whereby an exit or abort could be issued during re-init, so it should respond appropriately to these events.
Also, abort will have to be implemented in Motion and Laser Tracker if the default functionality is insufficient.
I'm punting on doing the updates for now (see issue #50).
Detect when the laser tracker needs to be reinitialized and do the following:
1) save state (i.e. current reflector position, etc...), 2) go to ref#1 3) init.cmd --> lasertracker 4) return to previous action (i.e. go to saved reflector position)