chassis.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /*
  2. * Copyright (c) 2019, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2019-07-17 Wu Han The first version
  9. */
  10. #ifndef __CHASSIS_H__
  11. #define __CHASSIS_H__
  12. #include <kinematics.h>
  13. #include <wheel.h>
  14. #define CHASSIS_VELOCITY_LINEAR_MAXIMUM 0.1f // m/s
  15. #define CHASSIS_VELOCITY_ANGULAR_MAXIMUM 5.0f * CHASSIS_VELOCITY_LINEAR_MAXIMUM // rad/s
  16. typedef struct chassis *chassis_t;
  17. struct chassis
  18. {
  19. wheel_t* c_wheels;
  20. kinematics_t c_kinematics;
  21. struct velocity c_velocity;
  22. };
  23. chassis_t chassis_create(wheel_t* c_wheel, kinematics_t c_kinematics);
  24. rt_err_t chassis_destroy(chassis_t chas);
  25. rt_err_t chassis_enable(chassis_t chas);
  26. rt_err_t chassis_disable(chassis_t chas);
  27. rt_err_t chassis_reset(chassis_t chas);
  28. rt_err_t chassis_set_velocity(chassis_t chas, struct velocity target_velocity);
  29. rt_err_t chassis_set_rpm(chassis_t chas, rt_int16_t target_rpm[]);
  30. rt_err_t chassis_update(chassis_t chas);
  31. rt_err_t chassis_straight(chassis_t chas, float linear_x);
  32. rt_err_t chassis_move(chassis_t chas, float linear_y);
  33. rt_err_t chassis_rotate(chassis_t chas, float angular_z);
  34. rt_err_t chassis_set_velocity_x(chassis_t chas, float linear_x);
  35. rt_err_t chassis_set_velocity_y(chassis_t chas, float linear_y);
  36. rt_err_t chassis_set_velocity_z(chassis_t chas, float angular_z);
  37. #endif