ODrive用ライブラリ
Diff: ODriveLibTest.h
- Revision:
- 0:c191cf9bf1a3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ODriveLibTest.h Fri Sep 13 05:05:14 2019 +0000 @@ -0,0 +1,50 @@ + +#ifndef ODriveLibTest_h +#define ODriveLibTest_h + +#include "mbed.h" +#include "string" + +//using std::string; + +class ODriveLibTest { +public: + enum AxisState_t { + AXIS_STATE_UNDEFINED = 0, //<! will fall through to idle + AXIS_STATE_IDLE = 1, //<! disable PWM and do nothing + AXIS_STATE_STARTUP_SEQUENCE = 2, //<! the actual sequence is defined by the config.startup_... flags + AXIS_STATE_FULL_CALIBRATION_SEQUENCE = 3, //<! run all calibration procedures, then idle + AXIS_STATE_MOTOR_CALIBRATION = 4, //<! run motor calibration + AXIS_STATE_SENSORLESS_CONTROL = 5, //<! run sensorless control + AXIS_STATE_ENCODER_INDEX_SEARCH = 6, //<! run encoder index search + AXIS_STATE_ENCODER_OFFSET_CALIBRATION = 7, //<! run encoder offset calibration + AXIS_STATE_CLOSED_LOOP_CONTROL = 8 //<! run closed loop control + }; + + ODriveLibTest(Stream& serial); + + // Commands + void SetLimit(int motor_number, float vel_limit, float current_lim); + void ODriveInit(int motor_number); + //void SetPosition(int motor_number, float position); + //void SetPosition(int motor_number, float position, float velocity_feedforward); + void SetPosition(int motor_number, float position, float velocity_feedforward = 0.0f, float current_feedforward = 0.0f); + void SetVelocity(int motor_number, float velocity); + void SetVelocity(int motor_number, float velocity, float current_feedforward); + void SetCurrent(int motor_number, float current); + void TrapezoidalMove(int motor_number, float position); + // Getters + float GetVelocity(int motor_number); + // General params + float readFloat(); + int32_t readInt(); + + // State helper + bool run_state(int axis, int requested_state, bool wait); +private: + string readString(); + + Stream& serial_; +}; + +#endif //ODriveArduino_h \ No newline at end of file