mirror of
https://github.com/okalachev/flix.git
synced 2026-09-06 00:10:58 +00:00
Rename motor indexes constant names
The original names are overly verbose. Make motor pins disabled by default on all platforms except classic esp32. Make config more clear.
This commit is contained in:
+6
-6
@@ -8,7 +8,7 @@
|
|||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "filter.h"
|
#include "filter.h"
|
||||||
|
|
||||||
extern const int MOTOR_REAR_LEFT, MOTOR_REAR_RIGHT, MOTOR_FRONT_RIGHT, MOTOR_FRONT_LEFT;
|
extern const int MOT_RL, MOT_RR, MOT_FR, MOT_FL;
|
||||||
extern const int RAW, ACRO, STAB, AUTO;
|
extern const int RAW, ACRO, STAB, AUTO;
|
||||||
extern const int W_AP, W_STA, W_ESPNOW;
|
extern const int W_AP, W_STA, W_ESPNOW;
|
||||||
extern float t, dt, loopRate;
|
extern float t, dt, loopRate;
|
||||||
@@ -152,7 +152,7 @@ void doCommand(String str, bool echo = false) {
|
|||||||
configWiFi(W_ESPNOW, arg0.c_str(), arg1.c_str());
|
configWiFi(W_ESPNOW, arg0.c_str(), arg1.c_str());
|
||||||
} else if (command == "mot") {
|
} else if (command == "mot") {
|
||||||
print("front-right %g front-left %g rear-right %g rear-left %g\n",
|
print("front-right %g front-left %g rear-right %g rear-left %g\n",
|
||||||
motors[MOTOR_FRONT_RIGHT], motors[MOTOR_FRONT_LEFT], motors[MOTOR_REAR_RIGHT], motors[MOTOR_REAR_LEFT]);
|
motors[MOT_FR], motors[MOT_FL], motors[MOT_RR], motors[MOT_RL]);
|
||||||
} else if (command == "log") {
|
} else if (command == "log") {
|
||||||
printLogHeader();
|
printLogHeader();
|
||||||
if (arg0 == "dump") printLogData();
|
if (arg0 == "dump") printLogData();
|
||||||
@@ -161,13 +161,13 @@ void doCommand(String str, bool echo = false) {
|
|||||||
} else if (command == "ca") {
|
} else if (command == "ca") {
|
||||||
calibrateAccel();
|
calibrateAccel();
|
||||||
} else if (command == "mfr") {
|
} else if (command == "mfr") {
|
||||||
testMotor(MOTOR_FRONT_RIGHT, arg0.isEmpty() ? 0.2 : arg0.toFloat());
|
testMotor(MOT_FR, arg0.isEmpty() ? 0.2 : arg0.toFloat());
|
||||||
} else if (command == "mfl") {
|
} else if (command == "mfl") {
|
||||||
testMotor(MOTOR_FRONT_LEFT, arg0.isEmpty() ? 0.2 : arg0.toFloat());
|
testMotor(MOT_FL, arg0.isEmpty() ? 0.2 : arg0.toFloat());
|
||||||
} else if (command == "mrr") {
|
} else if (command == "mrr") {
|
||||||
testMotor(MOTOR_REAR_RIGHT, arg0.isEmpty() ? 0.2 : arg0.toFloat());
|
testMotor(MOT_RR, arg0.isEmpty() ? 0.2 : arg0.toFloat());
|
||||||
} else if (command == "mrl") {
|
} else if (command == "mrl") {
|
||||||
testMotor(MOTOR_REAR_LEFT, arg0.isEmpty() ? 0.2 : arg0.toFloat());
|
testMotor(MOT_RL, arg0.isEmpty() ? 0.2 : arg0.toFloat());
|
||||||
} else if (command == "sys") {
|
} else if (command == "sys") {
|
||||||
#ifdef ESP32
|
#ifdef ESP32
|
||||||
print("Chip: %s\n", ESP.getChipModel());
|
print("Chip: %s\n", ESP.getChipModel());
|
||||||
|
|||||||
+12
-6
@@ -12,16 +12,22 @@ void setDefaults() {
|
|||||||
pwmFrequency = 38000;
|
pwmFrequency = 38000;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_IDF_TARGET_ESP32
|
||||||
|
// classic esp32 configuration
|
||||||
|
motorPins[MOT_RL] = 12;
|
||||||
|
motorPins[MOT_RR] = 13;
|
||||||
|
motorPins[MOT_FR] = 14;
|
||||||
|
motorPins[MOT_FL] = 15;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef FLIX2
|
#ifdef FLIX2
|
||||||
imuModel = 4; // ICM-40609-D
|
imuModel = 4; // ICM-40609-D
|
||||||
imuIntPin = 10;
|
imuIntPin = 10;
|
||||||
imuCsPin = 14;
|
imuCsPin = 14;
|
||||||
|
|
||||||
motorPins[MOTOR_REAR_LEFT] = 41;
|
|
||||||
motorPins[MOTOR_REAR_RIGHT] = 7;
|
|
||||||
motorPins[MOTOR_FRONT_RIGHT] = 18;
|
|
||||||
motorPins[MOTOR_FRONT_LEFT] = 38;
|
|
||||||
|
|
||||||
voltagePin = 3;
|
voltagePin = 3;
|
||||||
|
motorPins[MOT_RL] = 41;
|
||||||
|
motorPins[MOT_RR] = 7;
|
||||||
|
motorPins[MOT_FR] = 18;
|
||||||
|
motorPins[MOT_FL] = 38;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-6
@@ -29,7 +29,7 @@ Vector maxRate(radians(360), radians(360), radians(360));
|
|||||||
float tiltMax = radians(30);
|
float tiltMax = radians(30);
|
||||||
int flightModes[] = {STAB, STAB, STAB}; // map for rc mode switch
|
int flightModes[] = {STAB, STAB, STAB}; // map for rc mode switch
|
||||||
|
|
||||||
extern const int MOTOR_REAR_LEFT, MOTOR_REAR_RIGHT, MOTOR_FRONT_RIGHT, MOTOR_FRONT_LEFT;
|
extern const int MOT_RL, MOT_RR, MOT_FR, MOT_FL;
|
||||||
extern float controlRoll, controlPitch, controlThrottle, controlYaw, controlMode;
|
extern float controlRoll, controlPitch, controlThrottle, controlYaw, controlMode;
|
||||||
|
|
||||||
void control() {
|
void control() {
|
||||||
@@ -119,13 +119,13 @@ void controlTorque() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
motors[MOTOR_FRONT_LEFT] = thrustTarget + torqueTarget.x - torqueTarget.y + torqueTarget.z;
|
motors[MOT_FL] = thrustTarget + torqueTarget.x - torqueTarget.y + torqueTarget.z;
|
||||||
motors[MOTOR_FRONT_RIGHT] = thrustTarget - torqueTarget.x - torqueTarget.y - torqueTarget.z;
|
motors[MOT_FR] = thrustTarget - torqueTarget.x - torqueTarget.y - torqueTarget.z;
|
||||||
motors[MOTOR_REAR_LEFT] = thrustTarget + torqueTarget.x + torqueTarget.y - torqueTarget.z;
|
motors[MOT_RL] = thrustTarget + torqueTarget.x + torqueTarget.y - torqueTarget.z;
|
||||||
motors[MOTOR_REAR_RIGHT] = thrustTarget - torqueTarget.x + torqueTarget.y + torqueTarget.z;
|
motors[MOT_RR] = thrustTarget - torqueTarget.x + torqueTarget.y + torqueTarget.z;
|
||||||
|
|
||||||
// Prioritize angle control over thrust control
|
// Prioritize angle control over thrust control
|
||||||
desaturate(motors[MOTOR_FRONT_LEFT], motors[MOTOR_FRONT_RIGHT], motors[MOTOR_REAR_LEFT], motors[MOTOR_REAR_RIGHT]);
|
desaturate(motors[MOT_FL], motors[MOT_FR], motors[MOT_RL], motors[MOT_RR]);
|
||||||
|
|
||||||
motors[0] = constrain(motors[0], 0, 1);
|
motors[0] = constrain(motors[0], 0, 1);
|
||||||
motors[1] = constrain(motors[1], 0, 1);
|
motors[1] = constrain(motors[1], 0, 1);
|
||||||
|
|||||||
+2
-2
@@ -7,14 +7,14 @@
|
|||||||
|
|
||||||
float motors[4]; // normalized motor thrusts in range [0..1]
|
float motors[4]; // normalized motor thrusts in range [0..1]
|
||||||
|
|
||||||
int motorPins[4] = {12, 13, 14, 15}; // default pin numbers
|
int motorPins[4] = {-1, -1, -1, -1}; // default pin numbers
|
||||||
int pwmFrequency = 78000;
|
int pwmFrequency = 78000;
|
||||||
int pwmResolution = 10;
|
int pwmResolution = 10;
|
||||||
int pwmStop = 0;
|
int pwmStop = 0;
|
||||||
int pwmMin = 0;
|
int pwmMin = 0;
|
||||||
int pwmMax = -1; // -1 means duty cycle mode
|
int pwmMax = -1; // -1 means duty cycle mode
|
||||||
|
|
||||||
const int MOTOR_REAR_LEFT = 0, MOTOR_REAR_RIGHT = 1, MOTOR_FRONT_RIGHT = 2, MOTOR_FRONT_LEFT = 3;
|
const int MOT_RL = 0, MOT_RR = 1, MOT_FR = 2, MOT_FL = 3;
|
||||||
|
|
||||||
void setupMotors() {
|
void setupMotors() {
|
||||||
print("Setup motors\n");
|
print("Setup motors\n");
|
||||||
|
|||||||
+4
-4
@@ -87,10 +87,10 @@ Parameter parameters[] = {
|
|||||||
{"EST_LVL_WEIGHT", &levelWeight},
|
{"EST_LVL_WEIGHT", &levelWeight},
|
||||||
{"EST_RATES_LPF_A", &ratesFilter.alpha},
|
{"EST_RATES_LPF_A", &ratesFilter.alpha},
|
||||||
// motors
|
// motors
|
||||||
{"MOT_PIN_FL", &motorPins[MOTOR_FRONT_LEFT], setupMotors},
|
{"MOT_PIN_FL", &motorPins[MOT_FL], setupMotors},
|
||||||
{"MOT_PIN_FR", &motorPins[MOTOR_FRONT_RIGHT], setupMotors},
|
{"MOT_PIN_FR", &motorPins[MOT_FR], setupMotors},
|
||||||
{"MOT_PIN_RL", &motorPins[MOTOR_REAR_LEFT], setupMotors},
|
{"MOT_PIN_RL", &motorPins[MOT_RL], setupMotors},
|
||||||
{"MOT_PIN_RR", &motorPins[MOTOR_REAR_RIGHT], setupMotors},
|
{"MOT_PIN_RR", &motorPins[MOT_RR], setupMotors},
|
||||||
{"MOT_PWM_FREQ", &pwmFrequency, setupMotors},
|
{"MOT_PWM_FREQ", &pwmFrequency, setupMotors},
|
||||||
{"MOT_PWM_RES", &pwmResolution, setupMotors},
|
{"MOT_PWM_RES", &pwmResolution, setupMotors},
|
||||||
{"MOT_PWM_STOP", &pwmStop},
|
{"MOT_PWM_STOP", &pwmStop},
|
||||||
|
|||||||
@@ -98,10 +98,10 @@ public:
|
|||||||
const double maxThrust = 0.03 * ONE_G; // ~30 g, https://youtu.be/VtKI4Pjx8Sk?&t=78
|
const double maxThrust = 0.03 * ONE_G; // ~30 g, https://youtu.be/VtKI4Pjx8Sk?&t=78
|
||||||
|
|
||||||
const float scale0 = 1.0, scale1 = 1.1, scale2 = 0.9, scale3 = 1.05; // imitating motors asymmetry
|
const float scale0 = 1.0, scale1 = 1.1, scale2 = 0.9, scale3 = 1.05; // imitating motors asymmetry
|
||||||
float mfl = scale0 * maxThrust * motors[MOTOR_FRONT_LEFT];
|
float mfl = scale0 * maxThrust * motors[MOT_FL];
|
||||||
float mfr = scale1 * maxThrust * motors[MOTOR_FRONT_RIGHT];
|
float mfr = scale1 * maxThrust * motors[MOT_FR];
|
||||||
float mrl = scale2 * maxThrust * motors[MOTOR_REAR_LEFT];
|
float mrl = scale2 * maxThrust * motors[MOT_RL];
|
||||||
float mrr = scale3 * maxThrust * motors[MOTOR_REAR_RIGHT];
|
float mrr = scale3 * maxThrust * motors[MOT_RR];
|
||||||
|
|
||||||
body->AddLinkForce(Vector3d(0.0, 0.0, mfl), Vector3d(dist, dist, 0.0));
|
body->AddLinkForce(Vector3d(0.0, 0.0, mfl), Vector3d(dist, dist, 0.0));
|
||||||
body->AddLinkForce(Vector3d(0.0, 0.0, mfr), Vector3d(dist, -dist, 0.0));
|
body->AddLinkForce(Vector3d(0.0, 0.0, mfr), Vector3d(dist, -dist, 0.0));
|
||||||
@@ -110,10 +110,10 @@ public:
|
|||||||
|
|
||||||
// torque
|
// torque
|
||||||
const double maxTorque = 0.0024 * ONE_G; // ~24 g*cm
|
const double maxTorque = 0.0024 * ONE_G; // ~24 g*cm
|
||||||
body->AddRelativeTorque(Vector3d(0.0, 0.0, scale0 * maxTorque * motors[MOTOR_FRONT_LEFT]));
|
body->AddRelativeTorque(Vector3d(0.0, 0.0, scale0 * maxTorque * motors[MOT_FL]));
|
||||||
body->AddRelativeTorque(Vector3d(0.0, 0.0, scale1 * -maxTorque * motors[MOTOR_FRONT_RIGHT]));
|
body->AddRelativeTorque(Vector3d(0.0, 0.0, scale1 * -maxTorque * motors[MOT_FR]));
|
||||||
body->AddRelativeTorque(Vector3d(0.0, 0.0, scale2 * -maxTorque * motors[MOTOR_REAR_LEFT]));
|
body->AddRelativeTorque(Vector3d(0.0, 0.0, scale2 * -maxTorque * motors[MOT_RL]));
|
||||||
body->AddRelativeTorque(Vector3d(0.0, 0.0, scale3 * maxTorque * motors[MOTOR_REAR_RIGHT]));
|
body->AddRelativeTorque(Vector3d(0.0, 0.0, scale3 * maxTorque * motors[MOT_RR]));
|
||||||
}
|
}
|
||||||
|
|
||||||
void initNode() {
|
void initNode() {
|
||||||
|
|||||||
Reference in New Issue
Block a user