1#ifndef TR_EMBEDDED_DJIMOTOR_H
2#define TR_EMBEDDED_DJIMOTOR_H
62 std::string
name =
"NO_NAME";
70 std::string
name =
"NO_NAME";
84 explicit DJIMotor(
bool isErroneousMotor =
false);
127 return us_ticker_read() / 1000 - timeOfLastFeedback <=
TIMEOUT_MS;
160 int16_t motorData[4] = {};
163 int lastMotorAngle = 0;
164 int integratedAngle = 0;
165 long lastIntegrationTime = -1;
167 uint32_t timeOfLastFeedback = 0;
168 uint32_t timeOfLastPID = 0;
170 static void updateOneMultiTurn(
int canBus,
int can_line,
int motor_id);
171 static void sendOneID(
CANHandler::CANBus canBus,
short sendIDindex,
bool debug =
false);
constexpr float M3508_GEAR_RATIO
Definition DJIMotor.h:11
constexpr float M2006_GEAR_RATIO
Definition DJIMotor.h:12
motorDataType
Definition DJIMotor.h:23
@ ANGLE
Definition DJIMotor.h:24
@ VELOCITY
Definition DJIMotor.h:25
@ MULTITURNANGLE
Definition DJIMotor.h:28
@ POWEROUT
Definition DJIMotor.h:29
@ TORQUE
Definition DJIMotor.h:26
@ TEMPERATURE
Definition DJIMotor.h:27
@ VALUE
Definition DJIMotor.h:30
constexpr int TIMEOUT_MS
Definition DJIMotor.h:15
motorType
Definition DJIMotor.h:38
@ M3508
Definition DJIMotor.h:42
@ GM6020
Definition DJIMotor.h:41
@ M3508_FLYWHEEL
Definition DJIMotor.h:44
@ M2006
Definition DJIMotor.h:43
@ STANDARD
Definition DJIMotor.h:40
@ NONE
Definition DJIMotor.h:39
constexpr int CAN_HANDLER_NUMBER
Definition DJIMotor.h:16
constexpr int INT15_T_MAX
Definition DJIMotor.h:19
constexpr int TICKS_REVOLUTION
Definition DJIMotor.h:14
constexpr int s_sendIDs[3]
Definition DJIMotor.h:21
constexpr int INT16_T_MAX
Definition DJIMotor.h:18
Definition CANHandler.h:33
CANBus
Definition CANHandler.h:45
@ NOBUS
Definition CANHandler.h:45
void setPosition(int position)
Definition DJIMotor.h:117
int calculatePositionPID(int desired, int current, double dt)
Definition DJIMotor.h:145
void setSpeedOutputCap(double cap)
Definition DJIMotor.h:142
int outputCap
Definition DJIMotor.h:77
int operator>>(motorDataType data)
Definition DJIMotor.h:130
static int calculateDeltaPhase(int target, int current, int max=TICKS_REVOLUTION)
Definition DJIMotor.cpp:337
void setPositionPID(float kP, float kI, float kD)
Definition DJIMotor.h:135
void setPower(int power)
Definition DJIMotor.h:105
PID pidPosition
Definition DJIMotor.h:74
int16_t powerOut
Definition DJIMotor.h:71
motorMoveMode getMode()
Definition DJIMotor.h:122
void setSpeedIntegralCap(double cap)
Definition DJIMotor.h:140
static void sendValues(bool debug=false)
Definition DJIMotor.cpp:127
int multiTurn
Definition DJIMotor.h:76
bool printAngle
Definition DJIMotor.h:79
motorType type
Definition DJIMotor.h:81
void setSpeed(int speed)
Definition DJIMotor.h:112
motorMoveMode
Definition DJIMotor.h:49
@ SPD
Definition DJIMotor.h:52
@ POS
Definition DJIMotor.h:51
@ OFF
Definition DJIMotor.h:50
@ POW
Definition DJIMotor.h:53
@ ERR
Definition DJIMotor.h:54
static bool initializedWarning
Definition DJIMotor.h:69
PID pidSpeed
Definition DJIMotor.h:73
DJIMotor(const DJIMotor &)=delete
int calculateSpeedPID(int desired, int current, double dt)
Definition DJIMotor.h:144
bool useAbsEncoder
Definition DJIMotor.h:78
void setPositionIntegralCap(double cap)
Definition DJIMotor.h:136
static int motorCount
Definition DJIMotor.h:68
int calculatePeriodicPosition(float dE, double dt)
Definition DJIMotor.h:146
void setPositionOutputCap(double cap)
Definition DJIMotor.h:137
std::string name
Definition DJIMotor.h:70
static void getCan2Feedback(const CANMsg *msg)
Definition DJIMotor.cpp:220
~DJIMotor()
Definition DJIMotor.cpp:71
void setSpeedDerivativeCap(double cap)
Definition DJIMotor.h:141
static void setCanHandlers(CANHandler *can_1, CANHandler *can_2)
Definition DJIMotor.cpp:175
int getData(motorDataType data)
Definition DJIMotor.cpp:321
void setSpeedPID(float kP, float kI, float kD)
Definition DJIMotor.h:139
static void getCan1Feedback(const CANMsg *msg)
Definition DJIMotor.cpp:181
DJIMotor & operator=(const DJIMotor &)=delete
__attribute__((unused)) inline bool isConnected() const
Definition DJIMotor.h:126
void setMotorOutput(int val, motorMoveMode mod)
Definition DJIMotor.h:99
int calculatePeriodic(float error, double dt)
Definition PID.cpp:181
void setPID(float p, float i, float d, float integralCap=0, float outputCap=0)
Definition PID.cpp:148
void setOutputCap(float outCap)
Definition PID.cpp:239
int calculate(int desired, int current, double dt)
Definition PID.cpp:175
void setIntegralCap(float integralCap)
Definition PID.cpp:234
void setDerivativeCap(float derivativeCap)
motorType type
Definition DJIMotor.h:61
PID::config pos_cfg
Definition DJIMotor.h:64
CANHandler::CANBus canBus
Definition DJIMotor.h:60
std::string name
Definition DJIMotor.h:62
PID::config vel_cfg
Definition DJIMotor.h:63
short motorID
Definition DJIMotor.h:59