19 lv_obj_t* label = lv_obj_get_child(btn, 0);
21 if (newColor == Color::RED) {
22 lv_obj_set_style_bg_color(btn, lv_palette_main(LV_PALETTE_RED), 0);
23 lv_label_set_text(label,
"RED");
25 lv_obj_set_style_bg_color(btn, lv_palette_main(LV_PALETTE_BLUE), 0);
26 lv_label_set_text(label,
"BLUE");
29 std::cout <<
"Alliance switched to: "
30 << (newColor == Color::RED ?
"Red" :
"Blue")
50 lv_obj_t* btn = lv_btn_create(lv_layer_top());
51 lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -10, -10);
52 lv_obj_set_size(btn, 80, 40);
54 lv_obj_set_style_bg_color(btn, lv_palette_main(LV_PALETTE_RED), 0);
56 lv_obj_t* label = lv_label_create(btn);
57 lv_label_set_text(label,
"RED");
165 bool trapDoor_commanded =
false;
166 bool matchload_on =
true;
167 float maxDeltaThrottle = 4;
168 float prevThrottle = 0;
169 float starting_pitch =
imu.get_roll();
170 float roll_forward_threshold = 1;
171 float roll_backward_threshold = -1;
174 int radio_cooldown = 50;
175 bool needs_clear =
false;
176 bool needs_print =
false;
177 bool needs_rumble =
false;
179 leftMotors.set_brake_mode(pros::E_MOTOR_BRAKE_COAST);
180 rightMotors.set_brake_mode(pros::E_MOTOR_BRAKE_COAST);
182 enum class ScoringMode {
183 NONE, INTAKE, OUTTAKE, MIDGOAL, LONGGOAL, MANUAL_UP, BRAKE
190 float throttle =
controller.get_analog(pros::E_CONTROLLER_ANALOG_LEFT_Y);
191 float steer =
controller.get_analog(pros::E_CONTROLLER_ANALOG_RIGHT_X);
193 if (std::abs(throttle) < 5) throttle = 0;
194 if (std::abs(steer) < 5) steer = 0;
197 bool isTipping = (
imu.get_roll() - starting_pitch > roll_forward_threshold ||
imu.get_roll() - starting_pitch < roll_backward_threshold);
198 bool isSlowingDown = (std::abs(throttle) < std::abs(prevThrottle));
199 bool isReversing = (prevThrottle > 0 && throttle < 0) || (prevThrottle < 0 && throttle > 0);
201 if (isTipping && (isSlowingDown || isReversing)) {
202 throttle = lemlib::slew(throttle, prevThrottle, maxDeltaThrottle);
206 if (
controller.get_digital_new_press(pros::E_CONTROLLER_DIGITAL_X)) {
215 if (radio_cooldown >= 50) {
221 else if (needs_print) {
226 else if (needs_rumble) {
228 needs_rumble =
false;
233 if (
controller.get_digital_new_press(pros::E_CONTROLLER_DIGITAL_B)) {
241 ScoringMode scoringMode = ScoringMode::NONE;
243 if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_RIGHT)) {
245 scoringMode = ScoringMode::BRAKE;
248 if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_A)) {
250 scoringMode = ScoringMode::BRAKE;
253 if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_LEFT)) {
255 scoringMode = ScoringMode::BRAKE;
258 if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_DOWN)) {
260 scoringMode = ScoringMode::BRAKE;
263 if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_L1)) {
264 scoringMode = ScoringMode::LONGGOAL;
265 }
else if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_L2)) {
266 scoringMode = ScoringMode::MIDGOAL;
267 }
else if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_UP)) {
268 scoringMode = ScoringMode::MANUAL_UP;
269 }
else if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_R2)) {
270 scoringMode = ScoringMode::OUTTAKE;
271 }
else if (
controller.get_digital(pros::E_CONTROLLER_DIGITAL_R1)) {
272 scoringMode = ScoringMode::INTAKE;
275 switch (scoringMode) {
276 case ScoringMode::INTAKE:
279 case ScoringMode::OUTTAKE:
282 case ScoringMode::MIDGOAL:
285 case ScoringMode::LONGGOAL:
288 case ScoringMode::MANUAL_UP:
290 case ScoringMode::NONE:
295 case ScoringMode::BRAKE:
302 float leftVel =
leftMotors.get_actual_velocity() * 0.00324173f;
303 float rightVel =
rightMotors.get_actual_velocity() * 0.00324173f;
304 std::cout << time <<
", " << (leftVel + rightVel) / 2 << std::endl;
306 prevThrottle = throttle;
307 radio_cooldown += 10;
Chassis chassis(drivebase, lateral_controller, angular_controller, sensors, &throttle_curve, &steer_curve)
float dynamic_steer_curve(float throttle, float steer, float min_turn_scale=0.4, float max_turn_scale=1.5)
rd::Selector selector({ {"Right 7 Split", right_auton_split}, {"Right 7 Wing", right_7_wing}, {"Right 7 Hood", right_7_hood}, {"Right Rush", right_rush}, {"Left 7 Block", left_auton_split}, {"Left Rush", left_rush}, {"AWP", awp_auton}, {"Skills", skills_auton}, {"Carry", carry_auton} })
void create_alliance_selector()
void competition_initialize()
void auton_check(std::optional< rd::Selector::routine_t > auton)
static void update_alliance_btn(lv_obj_t *btn, Color newColor)
static void alliance_btn_event_handler(lv_event_t *e)