1 and 11): It is not safe to use a velocity or acceleration limit of 0 because moves will never complete. I don't know if the cRIO accepts 0 but I'd rather not find out.
2) Good suggestion. I will use time.monotonic instead of time.time.
As to the accuracy of the model: it would be better if I used the actuator from ts_ATMCSSimulator, which handles slewing and tracking, but I filed a separate ticket for that and I'm not sure we need it.
3) Yes, it's just a simulator.
4) Thank you. I will update the comment.
5) I respectfully disagree. I love the new support for underlines in integer contants. I admit it may take time for folks to become used to them.
6) Good catch. That is leftover debugging code. I will remove it.
7) I agree that the MockMTRotatorController run_command method is messy and difficult to understand.
I refactored the code as follows:
- Added a method for each command. This method is responsible for checking initial conditions.
- Added a lookup table that ties commands to those new methods.
I think it looks a lot better now.
8) The "_n" means it is a count. I will rename it to _tracking_started_telemetry_counter.
9) I assume you are correct and remove anything that says clearError goes to OFFLINE/PUBLISH_ONLY.
10) Based on your notes it appears that you used the interlock system to put the rotator into a FAULT state. I think it likely that the extra operation you had to perform was related to the interlock system.