1516X High Stakes 2.0
Codebase for 1516X High Stakes season
Loading...
Searching...
No Matches
globals.cpp
Go to the documentation of this file.
1#include "globals.h"
2#include "pros/abstract_motor.hpp"
3#include "pros/adi.hpp"
4#include "pros/misc.hpp"
5#include "pros/motors.hpp"
6#include "pros/optical.hpp"
7#include "pros/vision.h"
8
9/*
10 * Although the following constants belong in their own seperate
11 * files(auton.cpp, drivetriain.cpp), they're put here in order to maintain a
12 * common location for all of the constants used by the program to belong in.
13 * NOTE: This is the location where these variables are put into memory, but
14 * they can be otherwise modified throughout the program.
15 */
16
17// Defines the objects that are used by the program for each of the individual
18// subsystems.
19
20namespace Robot {
21namespace Globals {
22
23pros::Controller controller(pros::E_CONTROLLER_MASTER);
24pros::Controller partner(pros::E_CONTROLLER_PARTNER);
25
26pros::Motor RightFront(16, pros::v5::MotorGears::blue, pros::v5::MotorUnits::degrees);
27pros::Motor LeftFront(-13, pros::v5::MotorGears::blue, pros::v5::MotorUnits::degrees);
28pros::Motor LeftBack(-11, pros::v5::MotorGears::blue, pros::v5::MotorUnits::degrees);
29pros::Motor RightBack(14, pros::v5::MotorGears::blue, pros::v5::MotorUnits::degrees);
30pros::Motor LeftMid(12, pros::v5::MotorGears::blue, pros::v5::MotorUnits::degrees);
31pros::Motor RightMid(-15, pros::v5::MotorGears::blue, pros::v5::MotorUnits::degrees);
32pros::Motor IntakeMotor(-4, pros::v5::MotorGears::blue, pros::v5::MotorUnits::degrees);
33pros::Motor HookMotor(3, pros::v5::MotorGears::green, pros::v5::MotorUnits::degrees);
34pros::Motor LadyBrownMotor(-10, pros::v5::MotorGears::green, pros::v5::MotorUnits::degrees);
35
36pros::adi::Pneumatics LatchControl('A', false);
37pros::adi::Pneumatics SweeperControl('B', false);
38pros::adi::Pneumatics IntakeLift('D', false);
39
40pros::adi::DigitalIn HookSwitch('C');
41
42
43pros::Distance distance_sensor(6);
44pros::Rotation lateral_sensor(-19);
45pros::Rotation horizontal_sensor(-20);
46
47pros::Rotation LadyBrownRotation(9);
48pros::Rotation HookRotation(2);
49
50
51pros::Imu inertial_sensor(17);
52
53// Vision sensor configuration
54pros::Optical colorSensor(5);
55
56pros::vision_signature_s_t RED_SIG =
57 pros::c::vision_signature_from_utility(1, -4653, -3619, -4136, 9831, 11725, 10778, 2.5, 0);
58
59pros::vision_signature_s_t BLUE_SIG =
60 pros::c::vision_signature_from_utility(2, 9187, 12161, 10674, -375, 1327, 476, 2.5, 0);
61pros::vision_signature_s_t BLUE_DARK_SIG =
62 pros::c::vision_signature_from_utility(3, -4793, -4173, -4483, 1069, 2765, 1917, 3, 0);
63
64// Pros motor groups - most used by lemlib
65pros::MotorGroup drive_left({LeftFront.get_port(), LeftMid.get_port(), LeftBack.get_port()});
66pros::MotorGroup drive_right({RightFront.get_port(), RightMid.get_port(), RightBack.get_port()});
67pros::MotorGroup drive_({LeftFront.get_port(), RightFront.get_port(), LeftMid.get_port(), RightMid.get_port(),
68 LeftBack.get_port(), RightBack.get_port()});
69
70// Lemlib objects - Used by lemlib drive and odometry functions
71lemlib::TrackingWheel horizontal_tracking_wheel(&horizontal_sensor, 2, 0.25);
72lemlib::TrackingWheel vertical_tracking_wheel(&lateral_sensor, 2, -0.625);
73
74// Describes the lemlib objects that are used to control the autonomous
75// functions of the robot.
76lemlib::Drivetrain drivetrain{
77 &drive_left, // left drivetrain motors
78 &drive_right, // right drivetrain motors
79 10.8, // track width
80 lemlib::Omniwheel::OLD_325,
81 450, // drivetrain rpm is 450
82 2 // horizontal drift is 2
83};
84
85lemlib::OdomSensors sensors{
86 &vertical_tracking_wheel, // vertical tracking wheel 1
87 nullptr, // vertical tracking wheel 2
88 &horizontal_tracking_wheel, // horizontal tracking wheel 1
89 nullptr, // we don't have a second tracking wheel, so we set it to nullptr
90 &inertial_sensor // inertial sensor
91};
92
93// forward/backward PID
94// lateral PID controller
95lemlib::ControllerSettings lateral_controller(6.4, // proportional gain (kP)
96 0, // integral gain (kI)
97 35, // derivative gain (kD)
98 3, // anti windup
99 0.5, // small error range, in inches
100 100, // small error range timeout, in milliseconds
101 2, // large error range, in inches
102 500, // large error range timeout, in milliseconds
103 115 // maximum acceleration (slew)
104);
105
106// 0, // anti windup
107// 0.5, // small error range, in inches
108// 100, // small error range timeout, in milliseconds
109// 3, // large error range, in inches
110// 500, // large error range timeout, in milliseconds
111// 20
112
113// angular PID controller 2.2 17 Last test: kp 13 kd 75, kp was just before full oscilation, kd was just before jittering
114lemlib::ControllerSettings angular_controller(3.27, // proportional gain (kP)
115 0, // integral gain (kI)
116 27.5, // derivative gain (kD)
117 3, // anti windup
118 2, // small error range, in degrees
119 90, // small error range timeout, in milliseconds
120 3, // large error range, in degrees
121 500, // large error range timeout, in milliseconds
122 0 // maximum acceleration (slew)
123);
124
125// 2, // small error range, in degrees
126// 80, // small error range timeout, in milliseconds
127// 3, // large error range, in degrees
128// 500, // large error range timeout, in milliseconds
129// 0
130
131lemlib::ExpoDriveCurve throttle_curve(1, // joystick deadband out of 127
132 35, // minimum output where drivetrain will move out of 127
133 1.002 // expo curve gain
134);
135
136// input curve for steer input during driver control
137lemlib::ExpoDriveCurve steer_curve(1, // joystick deadband out of 127
138 16, // minimum output where drivetrain will move out of 127
139 1.0084 // expo curve gain
140);
141
142lemlib::ExpoDriveCurve arcade_turn_curve(1, // joystick deadband out of 127
143 8, // minimum output where drivetrain will move out of 127
144 1.016 // expo curve gain
145);
146
148
149} // namespace Globals
150
151} // namespace Robot
pros::Rotation HookRotation(2)
pros::MotorGroup drive_({LeftFront.get_port(), RightFront.get_port(), LeftMid.get_port(), RightMid.get_port(), LeftBack.get_port(), RightBack.get_port()})
lemlib::OdomSensors sensors
Definition globals.cpp:85
pros::adi::Pneumatics LatchControl('A', false)
pros::Distance distance_sensor(6)
lemlib::ExpoDriveCurve steer_curve(1, 16, 1.0084)
pros::Optical colorSensor(5)
pros::Motor RightMid(-15, pros::v5::MotorGears::blue, pros::v5::MotorUnits::degrees)
pros::MotorGroup drive_right({RightFront.get_port(), RightMid.get_port(), RightBack.get_port()})
pros::Imu inertial_sensor(17)
pros::Motor IntakeMotor(-4, pros::v5::MotorGears::blue, pros::v5::MotorUnits::degrees)
lemlib::ControllerSettings lateral_controller(6.4, 0, 35, 3, 0.5, 100, 2, 500, 115)
lemlib::ExpoDriveCurve throttle_curve(1, 35, 1.002)
pros::adi::Pneumatics SweeperControl('B', false)
pros::vision_signature_s_t BLUE_DARK_SIG
Definition globals.cpp:61
lemlib::TrackingWheel horizontal_tracking_wheel & horizontal_sensor
Definition globals.cpp:71
pros::Motor LadyBrownMotor(-10, pros::v5::MotorGears::green, pros::v5::MotorUnits::degrees)
pros::Motor RightFront(16, pros::v5::MotorGears::blue, pros::v5::MotorUnits::degrees)
lemlib::ExpoDriveCurve arcade_turn_curve(1, 8, 1.016)
lemlib::Chassis chassis(drivetrain, lateral_controller, angular_controller, sensors, &throttle_curve, &steer_curve)
pros::Motor RightBack(14, pros::v5::MotorGears::blue, pros::v5::MotorUnits::degrees)
pros::Motor HookMotor(3, pros::v5::MotorGears::green, pros::v5::MotorUnits::degrees)
pros::Motor LeftBack(-11, pros::v5::MotorGears::blue, pros::v5::MotorUnits::degrees)
pros::adi::DigitalIn HookSwitch('C')
pros::adi::Pneumatics IntakeLift('D', false)
pros::Motor LeftFront(-13, pros::v5::MotorGears::blue, pros::v5::MotorUnits::degrees)
lemlib::TrackingWheel vertical_tracking_wheel & lateral_sensor
Definition globals.cpp:72
pros::Controller controller(pros::E_CONTROLLER_MASTER)
pros::Controller partner(pros::E_CONTROLLER_PARTNER)
pros::Rotation LadyBrownRotation(9)
pros::vision_signature_s_t BLUE_SIG
Definition globals.cpp:59
pros::vision_signature_s_t RED_SIG
Definition globals.cpp:56
lemlib::ControllerSettings angular_controller(3.27, 0, 27.5, 3, 2, 90, 3, 500, 0)
lemlib::Drivetrain drivetrain
Definition globals.cpp:76
pros::MotorGroup drive_left({LeftFront.get_port(), LeftMid.get_port(), LeftBack.get_port()})
pros::Motor LeftMid(12, pros::v5::MotorGears::blue, pros::v5::MotorUnits::degrees)
Definition auton.h:10