full sequence (no tuning or position feedback)
This commit is contained in:
parent
0fc7ba0f11
commit
5bc480eaab
2 changed files with 15 additions and 10 deletions
|
|
@ -5,7 +5,7 @@ const float VEL_LIMIT = 10.0; // cm/s
|
|||
const float BACKLASH_RIGHT = 0.0; // degrees
|
||||
const float BACKLASH_LEFT = 0.0; // degrees
|
||||
const float WHEEL_DIAMETER = 10.00; // cm
|
||||
const float WHEEL_TO_WHEEL = 0.0; // cm
|
||||
const float WHEEL_TO_WHEEL = 10.0; // cm
|
||||
|
||||
// centimeters per second to rpm
|
||||
const float CMS_RPM = 60.0 / (PI*WHEEL_DIAMETER);
|
||||
|
|
@ -13,8 +13,9 @@ const float CMS_RPM = 60.0 / (PI*WHEEL_DIAMETER);
|
|||
// degrees to centimeters
|
||||
const float DEG_CM = (PI*WHEEL_DIAMETER) / 360.0;
|
||||
|
||||
const float FORWARD_DISTANCE = 30.0; // cm
|
||||
const float FORWARD_DISTANCE = 100.0; // cm
|
||||
const float TURN_AMOUNT = 180.0; // degrees
|
||||
const float TURN_DISTANCE = (TURN_AMOUNT / 360.0) * WHEEL_TO_WHEEL * PI;
|
||||
const float RETURN_DISTANCE = 100.0; // cm
|
||||
|
||||
const float FF_ACCEL = 0.7; // motor acceleration feedforward
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ float phase_start;
|
|||
enum ROBOT_STATE robot_state;
|
||||
|
||||
struct Trapezoidal forward = {VEL_LIMIT, ACCEL_LIMIT, FORWARD_DISTANCE};
|
||||
struct Trapezoidal turn = {VEL_LIMIT, ACCEL_LIMIT, TURN_DISTANCE};
|
||||
|
||||
void write_rpm_ff(SmartMotor* motor, int32_t rpm, float ff) {
|
||||
if (rpm == 0) {rpm = 1;};
|
||||
|
|
@ -57,11 +58,11 @@ void loop() {
|
|||
float time = (float)millis() / 1000.0 - phase_start;
|
||||
switch (robot_state) {
|
||||
case FORWARD:
|
||||
case RETURN:
|
||||
setpoint = trapezoidal_planner(&forward, time);
|
||||
break;
|
||||
case TURN:
|
||||
break;
|
||||
case RETURN:
|
||||
setpoint = trapezoidal_planner(&forward, time);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -106,17 +107,20 @@ void loop() {
|
|||
case FORWARD:
|
||||
robot_state = TURN;
|
||||
phase_start = (float)millis() / 1000.0;
|
||||
break;
|
||||
case TURN:
|
||||
robot_state = RETURN;
|
||||
phase_start = (float)millis() / 1000.0;
|
||||
|
||||
// end (temp)
|
||||
break;
|
||||
case RETURN:
|
||||
|
||||
// end
|
||||
left_motor.write_rpm(0.0);
|
||||
delay(10);
|
||||
delay(1);
|
||||
right_motor.write_rpm(0.0);
|
||||
for (;;) {};
|
||||
break;
|
||||
case TURN:
|
||||
break;
|
||||
case RETURN:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue