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.
I added a detailedState event to ts_xml (and associated enums to ts_idl) because it is crucial for users to know what these substates are. (If we decide to go with the vendor's CSC code we can modify it to output the detailed state, but I hope it doesn't come to that.)
Pull requests: