AP_Gripper_Backend.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. This program is free software: you can redistribute it and/or modify
  3. it under the terms of the GNU General Public License as published by
  4. the Free Software Foundation, either version 3 of the License, or
  5. (at your option) any later version.
  6. This program is distributed in the hope that it will be useful,
  7. but WITHOUT ANY WARRANTY; without even the implied warranty of
  8. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  9. GNU General Public License for more details.
  10. You should have received a copy of the GNU General Public License
  11. along with this program. If not, see <http://www.gnu.org/licenses/>.
  12. */
  13. #pragma once
  14. #include <AP_Gripper/AP_Gripper.h>
  15. class AP_Gripper_Backend {
  16. public:
  17. AP_Gripper_Backend(struct AP_Gripper::Backend_Config &_config) :
  18. config(_config) { }
  19. // initialise the gripper backend
  20. void init();
  21. // update - should be called at at least 10hz
  22. void update();
  23. // grab - move the servo to the grab position
  24. virtual void grab() = 0;
  25. // release - move the servo output to the release position
  26. virtual void release() = 0;
  27. // valid - returns true if the backend should be working
  28. virtual bool valid() const { return true; };
  29. // released - returns true if currently in released position
  30. virtual bool released() const = 0;
  31. // grabbed - returns true if currently in grabbed position
  32. virtual bool grabbed() const = 0;
  33. // type-specific intiailisations:
  34. virtual void init_gripper() = 0;
  35. // type-specific periodic updates:
  36. virtual void update_gripper() { };
  37. protected:
  38. struct AP_Gripper::Backend_Config &config;
  39. };