Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SANS2D collision avoidance: set deceleration to a high value before stopping motor #5735

Closed
Tom-Willemsen opened this issue Sep 18, 2020 · 7 comments

Comments

@Tom-Willemsen
Copy link
Contributor

Tom-Willemsen commented Sep 18, 2020

As an instrument scientist on SANS2D, I would like the collision avoidance system to be able to avoid collisions.

Currently the motor is stopped (via the .STOP field of the motor record) when the axes are within a tolerance of each other. However, due to the deceleration time, there is a significant run-on after the stop is sent. In the case of the baffles, this is about 50mm which, which means that the collision avoidance system is actually unable to stop the motor fully before the bump strips are hit.

We should implement the following workflow:

  • Remember old deceleration
  • Set deceleration to a high value (see fast deceleration galil code, which is activated on bump stops, for sensible values)
  • Send STOP
  • Put deceleration back to original value

Acceptance criteria

Notes

For clarity: this ticket refers to the collision avoidance system implemented in DB records for SANS2D - not the fast deceleration galil code, which is triggered by the bump strips.

@John-Holt-Tessella
Copy link
Contributor

Would it be possible just to increase the avoidance lengths then the deceleration is slow?

@Tom-Willemsen
Copy link
Contributor Author

Tom-Willemsen commented Sep 18, 2020

If we increase the collision avoidance lengths enough to sort this, we would prevent them from moving to useful positions. The scientist would rather we increased the deceleration.

@John-Holt-Tessella
Copy link
Contributor

Cool, I am sorry I saw this in review but thought it was part of the system. It is currently in the notes of how the IOC works so will need editing in there; have added to acceptance criteria (end of https://github.com/ISISComputingGroup/ibex_developers_manual/wiki/SANS2D-vacuum-tank-collision-avoidance)

@Tom-Willemsen
Copy link
Contributor Author

Pulled into sprint as we would like to test this during the next SANS2D commisioning time (in shutdown)

@Tom-Willemsen Tom-Willemsen self-assigned this Oct 12, 2020
@Tom-Willemsen Tom-Willemsen moved this from Ready to In Progress in IBEX Project Board Oct 12, 2020
@Tom-Willemsen
Copy link
Contributor Author

Impeded until setting deceleration mid-move is tested on real axis. Trying to get hold of a real axis on CRISP (should be possible, scientists just need to check area is locked etc).

@Tom-Willemsen Tom-Willemsen moved this from In Progress to Impeded in IBEX Project Board Oct 15, 2020
@Tom-Willemsen Tom-Willemsen moved this from Impeded to In Progress in IBEX Project Board Oct 20, 2020
@Tom-Willemsen
Copy link
Contributor Author

Tom-Willemsen commented Oct 20, 2020

Tested on a real galil axis on CRISP. Acceleration is only sent on move start. Setting the acceleration mid-move and then stopping uses the old acceleration, not the new acceleration. This is the same behavior as the simulated motor.

For this ticket we will need to use a different approach which is probably to define a fast stop galil routine and then call that routine by passing the galil an appropriate variable.

@Tom-Willemsen
Copy link
Contributor Author

PRs:

As this is galil code I don't think it's possible to test in an automated way - we will need to test it against hardware on SANS2D.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants