Uploaded image for project: 'Data Management'
  1. Data Management
  2. DM-26107

Update Rotator CSC for changes to the low-level controller

    XMLWordPrintable

    Details

    • Type: Story
    • Status: Done
    • Resolution: Done
    • Fix Version/s: None
    • Component/s: None
    • Labels:

      Description

      The Rotator low-level controller will output velocity information as of DM-25994. Update the Rotator CSC accordingly.

        Attachments

          Issue Links

            Activity

            No builds found.
            rowen Russell Owen created issue -
            rowen Russell Owen made changes -
            Field Original Value New Value
            Epic Link DM-25674 [ 436565 ]
            rowen Russell Owen made changes -
            Link This issue is triggered by DM-25994 [ DM-25994 ]
            rowen Russell Owen made changes -
            Assignee Russell Owen [ rowen ]
            rowen Russell Owen made changes -
            Sprint TSSW Sprint - Aug 3 - Aug 17 [ 1037 ]
            Story Points 1 2
            wvreeven Wouter van Reeven made changes -
            Sprint TSSW Sprint - Aug 3 - Aug 17 [ 1037 ] TSSW Sprint - Aug 3 - Aug 17, TSSW Sprint - Aug 17 - Aug 31 [ 1037, 1040 ]
            rowen Russell Owen made changes -
            Status To Do [ 10001 ] In Progress [ 3 ]
            Hide
            rowen Russell Owen added a comment - - edited

            Changes to the C structs (see https://github.com/lsst-ts/ts_rotator_controller/pull/9):

            ddsTelemetryStreamStructure_t is the only C struct used for TCP/IP communications that changed. The changes are as follows:

            • Delete status_word_drive1. Note: this was not output in any SAL message and not used in the CSC.
            • Delete actual_torque_axisA and actual_torque_axisB. Same note as previous.
            • Add double RateCmd and double AccCmd after PositionCmd.
            • Add double Flags_noNewTrackCmdError after Flags_trackingLost.
            • Add double ChA_RateFb and double ChB_RateFb after Rotator_Position_deg.

            The other thing that is wanted is a combined actual velocity computed from ChA_RateFb and ChB_RateFb. It is not completely obvious how to compute this, but based on Te-Wei Tsai's graphs in DM-25994 (especially the last graph) it looks like some filtering to reduce noise would be helpful. The measured velocity is oddly different than the demand velocity at low speeds, with a weird jump. I fear we may be stuck with that since at some level we have to trust the encoders (though I believe the encoders are on the two linear actuators, so there is some math in the low-level controller to convert those readings to rotation). I wonder if that jump might indicate hysteresis in the connection between the linear actuators and the rotator.

            One other small change I made was to fix the spelling of SAFETY in an enum in the Rotator and Hexapod XML and the corresponding enums in ts_idl. The old misspelled names also work, for now. I filed DM-26367 to get rid of the misspelled versions later.

            Show
            rowen Russell Owen added a comment - - edited Changes to the C structs (see https://github.com/lsst-ts/ts_rotator_controller/pull/9): ddsTelemetryStreamStructure_t is the only C struct used for TCP/IP communications that changed. The changes are as follows: Delete status_word_drive1 . Note: this was not output in any SAL message and not used in the CSC. Delete actual_torque_axisA and actual_torque_axisB . Same note as previous. Add double RateCmd and double AccCmd after PositionCmd . Add double Flags_noNewTrackCmdError after Flags_trackingLost . Add double ChA_RateFb and double ChB_RateFb after Rotator_Position_deg . The other thing that is wanted is a combined actual velocity computed from ChA_RateFb and ChB_RateFb . It is not completely obvious how to compute this, but based on Te-Wei Tsai 's graphs in DM-25994 (especially the last graph) it looks like some filtering to reduce noise would be helpful. The measured velocity is oddly different than the demand velocity at low speeds, with a weird jump. I fear we may be stuck with that since at some level we have to trust the encoders (though I believe the encoders are on the two linear actuators, so there is some math in the low-level controller to convert those readings to rotation). I wonder if that jump might indicate hysteresis in the connection between the linear actuators and the rotator. One other small change I made was to fix the spelling of SAFETY in an enum in the Rotator and Hexapod XML and the corresponding enums in ts_idl. The old misspelled names also work, for now. I filed DM-26367 to get rid of the misspelled versions later.
            Show
            rowen Russell Owen added a comment - - edited Pull requests: https://github.com/lsst-ts/ts_rotator/pull/19 https://github.com/lsst-ts/ts_xml/pull/351 (merged) https://github.com/lsst-ts/ts_idl/pull/30 https://github.com/lsst-ts/ts_hexapod/pull/23 https://github.com/lsst-ts/ts_xml/pull/355 (add timestamp field, follows earlier merged pull request)
            rowen Russell Owen made changes -
            Link This issue relates to CAP-601 [ CAP-601 ]
            rowen Russell Owen made changes -
            Reviewers Wouter van Reeven [ wvreeven ]
            Status In Progress [ 3 ] In Review [ 10004 ]
            Hide
            wvreeven Wouter van Reeven added a comment -

            All changes look good to me. The unit tests of ts_rotator are failing because of

            AttributeError: 'Rotator_rotation_2371acfc' object has no attribute 'timestamp'

            which I though the Jenkinsfile shoujld be able to resolve if the changes to the code and ts_xml are done in the same branch as is the case with this change. In any case, as soon as the changes get merged into develop, these errors should disappear.

            Show
            wvreeven Wouter van Reeven added a comment - All changes look good to me. The unit tests of ts_rotator are failing because of AttributeError: 'Rotator_rotation_2371acfc' object has no attribute 'timestamp' which I though the Jenkinsfile shoujld be able to resolve if the changes to the code and ts_xml are done in the same branch as is the case with this change. In any case, as soon as the changes get merged into develop, these errors should disappear.
            wvreeven Wouter van Reeven made changes -
            Status In Review [ 10004 ] Reviewed [ 10101 ]
            Hide
            rowen Russell Owen added a comment - - edited

            The unit test failure was probably a sequencing issue – I may have pushed the ts_xml changes after the ts_hexapod and ts_rotator changes. I was able to git commit --amend and git push --force ts_hexapod and ts_rotator and then the tests passed. (Actually that failed the first time but deleting the ts_idl branch and reopening it and then repeating the amend/force push did finally make them pass. I have no idea what that was all about.)

            Merged all code to develop.
            Released ts_idl v1.4.0

            I cannot release new versions of ts_hexapod and ts_rotator until ts_xml 6.1 is released.
            I created DM-26416 to track this.

            Show
            rowen Russell Owen added a comment - - edited The unit test failure was probably a sequencing issue – I may have pushed the ts_xml changes after the ts_hexapod and ts_rotator changes. I was able to git commit --amend and git push --force ts_hexapod and ts_rotator and then the tests passed. (Actually that failed the first time but deleting the ts_idl branch and reopening it and then repeating the amend/force push did finally make them pass. I have no idea what that was all about.) Merged all code to develop. Released ts_idl v1.4.0 I cannot release new versions of ts_hexapod and ts_rotator until ts_xml 6.1 is released. I created DM-26416 to track this.
            rowen Russell Owen made changes -
            Resolution Done [ 10000 ]
            Status Reviewed [ 10101 ] Done [ 10002 ]
            rowen Russell Owen made changes -
            Link This issue relates to DM-26416 [ DM-26416 ]

              People

              Assignee:
              rowen Russell Owen
              Reporter:
              rowen Russell Owen
              Reviewers:
              Wouter van Reeven
              Watchers:
              Russell Owen, Wouter van Reeven
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:

                  Jenkins

                  No builds found.