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

MTHexapod moves are still not reliable

    XMLWordPrintable

Details

    • 4
    • TSSW Sprint - Apr 26 - May 10
    • Telescope and Site
    • No

    Description

      MTHexapod moves still do not reliably interrupt each other.

      Also keep track of enabled/stationary to speed up moves slightly.

      Attachments

        Issue Links

          Activity

            No builds found.
            rowen Russell Owen created issue -
            rowen Russell Owen made changes -
            Field Original Value New Value
            Status To Do [ 10001 ] In Progress [ 3 ]
            rowen Russell Owen added a comment - - edited

            There were several issues:

            • HexapodCsc do_move and do_offset methods started with an assert that the low-level controller was not moving (I forgot to change that in DM-29423 and my unit test was not catching it). Fixed by changing to assert that the state is enabled.
            • HexapodCsc was not resetting the nstopped counter run_multiple_commands (only for run_command). Note that in the course of this ticket I changed the counter to ntelemetry; this makes the waiting simpler and a bit more efficient.
            • While fixing the previous item I also discovered that hexrotcomm.BaseCsc.run_multiple_commands was not acquiring the write_lock. Fixed by adding a new basic_run_command method which both run_command and run_multiple_command calls. I then fixed the previous item by overriding basic_run_command in HexapodCsc.

            I added unit tests for move interrupts move immediately and stop interrupts move immediately.

            Pull requests:

            rowen Russell Owen added a comment - - edited There were several issues: HexapodCsc do_move and do_offset methods started with an assert that the low-level controller was not moving (I forgot to change that in DM-29423 and my unit test was not catching it). Fixed by changing to assert that the state is enabled. HexapodCsc was not resetting the nstopped counter run_multiple_commands (only for run_command). Note that in the course of this ticket I changed the counter to ntelemetry; this makes the waiting simpler and a bit more efficient. While fixing the previous item I also discovered that hexrotcomm.BaseCsc.run_multiple_commands was not acquiring the write_lock. Fixed by adding a new basic_run_command method which both run_command and run_multiple_command calls. I then fixed the previous item by overriding basic_run_command in HexapodCsc. I added unit tests for move interrupts move immediately and stop interrupts move immediately. Pull requests: https://github.com/lsst-ts/ts_hexrotcomm/pull/38 https://github.com/lsst-ts/ts_mthexapod/pull/46
            rowen Russell Owen made changes -
            Story Points 2 3
            rowen Russell Owen made changes -
            Link This issue relates to DM-29975 [ DM-29975 ]
            rowen Russell Owen made changes -
            Story Points 3 4
            rowen Russell Owen made changes -
            Reviewers Te-Wei Tsai [ ttsai ]
            Status In Progress [ 3 ] In Review [ 10004 ]
            ttsai Te-Wei Tsai added a comment -

            The update looks good to me.

            ttsai Te-Wei Tsai added a comment - The update looks good to me.
            ttsai Te-Wei Tsai made changes -
            Status In Review [ 10004 ] Reviewed [ 10101 ]
            rowen Russell Owen added a comment -

            Te-Wei's review:

            lsst-ts/ts_mthexapod

            python/lsst/ts/mthexapod/hexapod_commander.py

            1. Maybe add the doc string for do_movestop() and do_movemove()?
            https://github.com/lsst-ts/ts_mthexapod/pull/46/files#diff-5b2b21eacf3c164219f784f6ea9cf911eff9545571f19a11c855aa5ac29a9471R80
            https://github.com/lsst-ts/ts_mthexapod/pull/46/files#diff-5b2b21eacf3c164219f784f6ea9cf911eff9545571f19a11c855aa5ac29a9471R91

            2. Not sure the meaning of 500, -500, 510, -520, and 530 in the realization of the above two functions. Why do you want to set the z position like that?

            python/lsst/ts/mthexapod/hexapod_csc.py

            1. In wait_stopped(), do you want to check the minimum value of 3 mentioned in doc string here?
            https://github.com/lsst-ts/ts_mthexapod/pull/46/files#diff-aa27843b4f5f8b8e93da82ca8dff98645d300df64b708e8e76f184df93b49ca5R872-R875

            rowen Russell Owen added a comment - Te-Wei's review: lsst-ts/ts_mthexapod python/lsst/ts/mthexapod/hexapod_commander.py 1. Maybe add the doc string for do_movestop() and do_movemove()? https://github.com/lsst-ts/ts_mthexapod/pull/46/files#diff-5b2b21eacf3c164219f784f6ea9cf911eff9545571f19a11c855aa5ac29a9471R80 https://github.com/lsst-ts/ts_mthexapod/pull/46/files#diff-5b2b21eacf3c164219f784f6ea9cf911eff9545571f19a11c855aa5ac29a9471R91 2. Not sure the meaning of 500, -500, 510, -520, and 530 in the realization of the above two functions. Why do you want to set the z position like that? python/lsst/ts/mthexapod/hexapod_csc.py 1. In wait_stopped(), do you want to check the minimum value of 3 mentioned in doc string here? https://github.com/lsst-ts/ts_mthexapod/pull/46/files#diff-aa27843b4f5f8b8e93da82ca8dff98645d300df64b708e8e76f184df93b49ca5R872-R875
            rowen Russell Owen added a comment -

            My response:

            hexapod_commander.py 1 & 2: the values were arbitrary; the main requirement was that the move be long enough to be interrupted and that (for "movemove") each move was to a different location so it was clear if a move was interrupted. However, I decided these two new commands were too specialized so I removed them. Better to use a Nublado notebook for this kind of thing.

            hexapod_csc.py: I would rather allow rely on documentation, to allow experimentation with newer versions of the low-level controller.

            rowen Russell Owen added a comment - My response: hexapod_commander.py 1 & 2: the values were arbitrary; the main requirement was that the move be long enough to be interrupted and that (for "movemove") each move was to a different location so it was clear if a move was interrupted. However, I decided these two new commands were too specialized so I removed them. Better to use a Nublado notebook for this kind of thing. hexapod_csc.py: I would rather allow rely on documentation, to allow experimentation with newer versions of the low-level controller.
            rowen Russell Owen added a comment -

            Released:

            • ts_hexrotcomm v0.18.1
            • ts_mthexapod v0.17.1
            rowen Russell Owen added a comment - Released: ts_hexrotcomm v0.18.1 ts_mthexapod v0.17.1
            rowen Russell Owen made changes -
            Resolution Done [ 10000 ]
            Status Reviewed [ 10101 ] Done [ 10002 ]

            People

              rowen Russell Owen
              rowen Russell Owen
              Te-Wei Tsai
              Russell Owen, Te-Wei Tsai
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Jenkins

                  No builds found.