As best as I can tell from reading through the source code, the ~/halt service of a canopen_402_driver node is actually implemented by setting the Quick Stop bit of the control word. Reading the CIA402 specification, I understand that many CIA402 motion devices implement both a "quick stop" and a "halt" functionality - control word bit 2 and control word bit 8, respectively - so it's probably somewhat misleading that the ROS service calls itself "halt" when it's more properly a quick stop.
I think the best solution would be to rename the service to quick stop and introduce a new service called halt which actually implements halting by setting bit 8, although admittedly this could be a breaking change for any current users of halt. I'm not sure how to handle that part of it but I wanted to make you all aware of the discrepancy.
As best as I can tell from reading through the source code, the
~/halt
service of a canopen_402_driver node is actually implemented by setting the Quick Stop bit of the control word. Reading the CIA402 specification, I understand that many CIA402 motion devices implement both a "quick stop" and a "halt" functionality - control word bit 2 and control word bit 8, respectively - so it's probably somewhat misleading that the ROS service calls itself "halt" when it's more properly a quick stop.I think the best solution would be to rename the service to quick stop and introduce a new service called halt which actually implements halting by setting bit 8, although admittedly this could be a breaking change for any current users of halt. I'm not sure how to handle that part of it but I wanted to make you all aware of the discrepancy.
Thank you so much!