1#ifndef TR_EMBEDDED_DJIMOTOR_H
2#define TR_EMBEDDED_DJIMOTOR_H
20static int s_sendIDs[3] = {0x200, 0x1FF, 0x2FF};
21static Thread s_motorFeedbackThread(osPriorityAboveNormal);
22static Thread s_motorSendThread(osPriorityNormal);
73 MotorSettings gimbly = {
74 {10.88,1.2,18.9,8000,500},
75 {0.13, 8.8, 0, 25000, 1000}
78 MotorSettings m3508 = {
79 {.48, 0.0137, 4.2, 3000, 300},
80 {1.79, 0.27, 10.57, 15000, 500}
83 MotorSettings m3508Flywheel = {
84 {.48, 0.0137, 4.2, 3000, 300},
85 {2.013, 0.319, 20.084, 15000, 500}
104 motorMoveMode mode = OFF;
107 int16_t motorData[4] = {};
110 int lastMotorAngle = 0;
111 int integratedAngle = 0;
112 long lastIntegrationTime = -1;
114 uint32_t timeOfLastFeedback = 0;
115 uint32_t timeOfLastPID = 0;
117 static void s_updateMultiTurnPosition();
118 static void s_sendOneID(
CANHandler::CANBus canBus,
short sendIDindex,
bool debug =
false);
142 explicit DJIMotor(
bool isErroneousMotor =
false);
176 return us_ticker_read() / 1000 - timeOfLastFeedback <=
TIMEOUT_MS;
int i
Definition BiCGSTAB_step_by_step.cpp:9
motorDataType
Definition DJIMotor.h:24
@ ANGLE
Definition DJIMotor.h:25
@ VELOCITY
Definition DJIMotor.h:26
@ MULTITURNANGLE
Definition DJIMotor.h:29
@ POWEROUT
Definition DJIMotor.h:30
@ TORQUE
Definition DJIMotor.h:27
@ TEMPERATURE
Definition DJIMotor.h:28
@ VALUE
Definition DJIMotor.h:31
constexpr double M2006_GEAR_RATIO
Definition DJIMotor.h:11
constexpr int TIMEOUT_MS
Definition DJIMotor.h:14
motorType
Definition DJIMotor.h:39
@ M3508
Definition DJIMotor.h:46
@ GM6020
Definition DJIMotor.h:44
@ M3508_FLYWHEEL
Definition DJIMotor.h:51
@ GIMBLY
Definition DJIMotor.h:43
@ C610
Definition DJIMotor.h:48
@ M2006
Definition DJIMotor.h:49
@ STANDARD
Definition DJIMotor.h:41
@ NONE
Definition DJIMotor.h:40
constexpr int CAN_HANDLER_NUMBER
Definition DJIMotor.h:15
constexpr int INT15_T_MAX
Definition DJIMotor.h:18
constexpr int TICKS_REVOLUTION
Definition DJIMotor.h:13
constexpr int INT16_T_MAX
Definition DJIMotor.h:17
constexpr double M3508_GEAR_RATIO
Definition DJIMotor.h:10
int data[]
Definition Map_placement_new.cpp:1
float * p
Definition Tutorial_Map_using.cpp:9
Scalar Scalar int size
Definition benchVecAdd.cpp:17
Definition CANHandler.h:18
CANBus
Definition CANHandler.h:27
@ NOBUS
Definition CANHandler.h:27
static void s_sendValues(bool debug=false)
Definition DJIMotor.cpp:144
static bool s_theseConnected(DJIMotor *motors[], int size, bool debug=false)
Definition DJIMotor.cpp:218
static int s_calculateDeltaPhase(int target, int current, int max=TICKS_REVOLUTION)
Definition DJIMotor.cpp:282
void setPosition(int position)
Definition DJIMotor.h:166
static void s_setCANHandlers(CANHandler *bus_1, CANHandler *bus_2, bool threadSend=true, bool threadFeedback=true)
Definition DJIMotor.cpp:90
void setSpeedOutputCap(double cap)
Definition DJIMotor.h:193
void printAllMotorData()
Definition DJIMotor.cpp:278
int outputCap
Definition DJIMotor.h:136
static float s_calculateDeltaPhaseF(float target, float current, float max)
Definition DJIMotor.cpp:297
int operator>>(motorDataType data)
Definition DJIMotor.h:184
void setPositionPID(float kP, float kI, float kD)
Definition DJIMotor.h:186
void setPower(int power)
Definition DJIMotor.h:155
PID pidPosition
Definition DJIMotor.h:133
int16_t powerOut
Definition DJIMotor.h:130
motorMoveMode getMode()
Definition DJIMotor.h:171
void setSpeedIntegralCap(double cap)
Definition DJIMotor.h:191
int multiTurn
Definition DJIMotor.h:135
bool printAngle
Definition DJIMotor.h:138
motorType type
Definition DJIMotor.h:140
static void s_feedbackThread()
the thread that runs the ever-necessary DJIMotor::s_getFeedback()
Definition DJIMotor.cpp:376
void setSpeed(int speed)
Definition DJIMotor.h:161
int calculatePeriodicPosition(float dE, double dt, int chassis_rpm=0)
Definition DJIMotor.h:197
static bool initializedWarning
Definition DJIMotor.h:128
static void s_getFeedback(bool debug=false)
Definition DJIMotor.cpp:186
PID pidSpeed
Definition DJIMotor.h:132
static void s_sendThread()
the thread that runs the ever-necessary DJIMotor::s_sendValues()
Definition DJIMotor.cpp:387
int calculatePositionPID(int desired, int current, double dt, int chassis_rpm=0)
Definition DJIMotor.h:196
static bool s_allConnected(bool debug=false)
Definition DJIMotor.cpp:237
int calculateSpeedPID(int desired, int current, double dt)
Definition DJIMotor.h:195
bool useAbsEncoder
Definition DJIMotor.h:137
void setPositionIntegralCap(double cap)
Definition DJIMotor.h:187
static int motorCount
Definition DJIMotor.h:127
void setPositionOutputCap(double cap)
Definition DJIMotor.h:188
std::string name
Definition DJIMotor.h:129
~DJIMotor()
Definition DJIMotor.cpp:82
void setSpeedDerivativeCap(double cap)
Definition DJIMotor.h:192
int getData(motorDataType data)
Definition DJIMotor.cpp:261
void setSpeedPID(float kP, float kI, float kD)
Definition DJIMotor.h:190
__attribute__((unused)) inline bool isConnected() const
Definition DJIMotor.h:175
int calculatePeriodic(float error, double dt)
Definition PID.cpp:172
void setPID(float p, float i, float d, float integralCap=0, float outputCap=0)
Definition PID.cpp:139
void setOutputCap(float outCap)
Definition PID.cpp:230
int calculate(int desired, int current, double dt)
Definition PID.cpp:166
void setIntegralCap(float integralCap)
Definition PID.cpp:225
void setDerivativeCap(float derivativeCap)
#define max(a, b)
Definition datatypes.h:20