RIT VEXU Core API
Loading...
Searching...
No Matches
tank_drive.h
1#pragma once
2
3#include "core/robot_specs.h"
4#include "core/subsystems/odometry/odometry_tank.h"
5#include "core/competition/command_structure/auto_command.h"
6#include "core/math/controls/feedback_base.h"
7#include "core/math/controls/pid.h"
8
14class TankDrive {
15 public:
16 enum class BrakeType {
17 None,
18 ZeroVelocity,
19 Smart,
20 TurnOnly,
21 };
22
32 vex::motor_group& left_motors, vex::motor_group& right_motors, robot_specs_t& config,
33 OdometryBase* odom = NULL
34 );
35
36 AutoCommand* DriveToPointCmd(
37 Translation2d pt, vex::directionType dir = vex::forward, double max_speed = 1.0,
38 double end_speed = 0.0
39 );
40 AutoCommand* DriveToPointCmd(
41 Feedback& fb, Translation2d pt, vex::directionType dir = vex::forward,
42 double max_speed = 1.0, double end_speed = 0.0
43 );
44
45 AutoCommand* DriveToPointCmd(
46 double x, double y, vex::directionType dir = vex::forward, double max_speed = 1.0,
47 double end_speed = 0.0
48 );
49
50 AutoCommand* DriveForwardCmd(
51 double dist, vex::directionType dir = vex::forward, double max_speed = 1.0,
52 double end_speed = 0.0
53 );
54 AutoCommand* DriveForwardCmd(
55 Feedback& fb, double dist, vex::directionType dir = vex::forward,
56 double max_speed = 1.0, double end_speed = 0.0
57 );
58
59 AutoCommand* TurnToHeadingCmd(double heading, double max_speed = 1.0, double end_speed = 0.0);
60 AutoCommand* TurnToHeadingCmd(
61 Feedback& fb, double heading, double max_speed = 1.0, double end_speed = 0.0
62 );
63
64 AutoCommand* TurnToPointCmd(
65 double x, double y, vex::directionType dir = vex::directionType::fwd,
66 double max_speed = 1.0, double end_speed = 0.0
67 );
68 AutoCommand* TurnToPointCmd(
69 Translation2d point, vex::directionType dir = vex::directionType::fwd,
70 double max_speed = 1.0, double end_speed = 0.0
71 );
72
73 AutoCommand* TurnDegreesCmd(double degrees, double max_speed = 1.0, double start_speed = 0.0);
74 AutoCommand* TurnDegreesCmd(
75 Feedback& fb, double degrees, double max_speed = 1.0, double end_speed = 0.0
76 );
77
78 Condition *DriveStalledCondition(double stall_time);
79 AutoCommand *DriveTankCmd(double left, double right);
80
82 void stop();
83
86
97 void drive_tank(double left, double right, int power = 1, BrakeType bt = BrakeType::None);
103 void drive_tank_raw(double left, double right);
104
116 void drive_arcade(
117 double forward_back, double left_right, int power = 1, BrakeType bt = BrakeType::None
118 );
119
135 bool drive_forward(
136 double inches, vex::directionType dir, Feedback& feedback, double max_speed = 1,
137 double end_speed = 0
138 );
139
152 bool drive_forward(
153 double inches, vex::directionType dir, double max_speed = 1, double end_speed = 0
154 );
155
169 bool turn_degrees(
170 double degrees, Feedback& feedback, double max_speed = 1, double end_speed = 0
171 );
172
186 bool turn_degrees(double degrees, double max_speed = 1, double end_speed = 0);
187
202 bool drive_to_point(
203 double x, double y, vex::directionType dir, Feedback& feedback, double max_speed = 1,
204 double end_speed = 0
205 );
206
221 bool drive_to_point(
222 double x, double y, vex::directionType dir, double max_speed = 1, double end_speed = 0
223 );
224
236 bool turn_to_heading(
237 double heading_deg, Feedback& feedback, double max_speed = 1, double end_speed = 0
238 );
249 bool turn_to_heading(double heading_deg, double max_speed = 1, double end_speed = 0);
250
252 void reset_auto();
253
264 static double modify_inputs(double input, int power = 2);
265
266 private:
267 vex::motor_group& left_motors;
268 vex::motor_group& right_motors;
269
270 OdometryBase* odometry;
272
273 Feedback* correction_pid;
275 Feedback* drive_default_feedback = NULL;
276 Feedback* turn_default_feedback = NULL;
277
278 robot_specs_t& config;
280
281 bool func_initialized =
282 false;
284};
Definition auto_command.h:25
Definition feedback_base.h:10
Definition odometry_base.h:27
Definition pose2d.h:21
bool turn_to_heading(double heading_deg, Feedback &feedback, double max_speed=1, double end_speed=0)
Definition tank_drive.cpp:547
void drive_tank_raw(double left, double right)
Definition tank_drive.cpp:137
bool drive_forward(double inches, vex::directionType dir, Feedback &feedback, double max_speed=1, double end_speed=0)
Definition tank_drive.cpp:231
bool turn_degrees(double degrees, Feedback &feedback, double max_speed=1, double end_speed=0)
Definition tank_drive.cpp:312
BrakeType
Definition tank_drive.h:16
@ None
just send 0 volts to the motors
Definition tank_drive.h:17
void drive_tank(double left, double right, int power=1, BrakeType bt=BrakeType::None)
Definition tank_drive.cpp:150
void reset_auto()
Reset the initialization for autonomous drive functions.
Definition tank_drive.cpp:126
TankDrive(vex::motor_group &left_motors, vex::motor_group &right_motors, robot_specs_t &config, OdometryBase *odom=NULL)
Definition tank_drive.cpp:7
static double modify_inputs(double input, int power=2)
Definition tank_drive.cpp:618
Pose2d get_position()
Returns the Robot position as a Pose2d.
Definition tank_drive.cpp:135
void drive_arcade(double forward_back, double left_right, int power=1, BrakeType bt=BrakeType::None)
Definition tank_drive.cpp:208
bool drive_to_point(double x, double y, vex::directionType dir, Feedback &feedback, double max_speed=1, double end_speed=0)
Definition tank_drive.cpp:374
void stop()
Stops rotation of all the motors using their "brake mode".
Definition tank_drive.cpp:129
Definition robot_specs.h:10