RIT VEXU Core API
Toggle main menu visibility
Loading...
Searching...
No Matches
mecanum_drive.h
1
#pragma once
2
3
#include "core/utils/controls/pid.h"
4
#include "vex.h"
5
6
#ifndef PI
7
#define PI 3.141592654
8
#endif
9
14
class
MecanumDrive
{
15
16
public
:
20
struct
mecanumdrive_config_t
{
21
// PID configurations for autonomous driving
22
PID::pid_config_t
drive_pid_conf;
23
PID::pid_config_t
drive_gyro_pid_conf;
24
PID::pid_config_t
turn_pid_conf;
25
26
// Diameter of the mecanum wheels
27
double
drive_wheel_diam;
28
29
// Diameter of the perpendicular undriven encoder wheel
30
double
lateral_wheel_diam;
31
32
// Width between the center of the left and right wheels
33
double
wheelbase_width;
34
};
35
39
MecanumDrive
(
40
vex::motor &left_front, vex::motor &right_front, vex::motor &left_rear, vex::motor &right_rear,
41
vex::rotation *lateral_wheel = NULL, vex::inertial *imu = NULL,
mecanumdrive_config_t
*config = NULL
42
);
43
52
void
drive_raw
(
double
direction_deg,
double
magnitude,
double
rotation);
53
64
void
drive
(
double
left_y,
double
left_x,
double
right_x,
int
power = 2);
65
78
bool
auto_drive
(
double
inches,
double
direction,
double
speed,
bool
gyro_correction =
true
);
79
90
bool
auto_turn
(
double
degrees,
double
speed,
bool
ignore_imu =
false
);
91
92
private
:
93
vex::motor &left_front, &right_front, &left_rear, &right_rear;
94
95
mecanumdrive_config_t
*config;
96
vex::rotation *lateral_wheel;
97
vex::inertial *imu;
98
99
PID
*drive_pid = NULL;
100
PID
*drive_gyro_pid = NULL;
101
PID
*turn_pid = NULL;
102
103
bool
init =
true
;
104
};
MecanumDrive::drive_raw
void drive_raw(double direction_deg, double magnitude, double rotation)
Definition
mecanum_drive.cpp:33
MecanumDrive::MecanumDrive
MecanumDrive(vex::motor &left_front, vex::motor &right_front, vex::motor &left_rear, vex::motor &right_rear, vex::rotation *lateral_wheel=NULL, vex::inertial *imu=NULL, mecanumdrive_config_t *config=NULL)
Definition
mecanum_drive.cpp:7
MecanumDrive::auto_drive
bool auto_drive(double inches, double direction, double speed, bool gyro_correction=true)
Definition
mecanum_drive.cpp:95
MecanumDrive::drive
void drive(double left_y, double left_x, double right_x, int power=2)
Definition
mecanum_drive.cpp:66
MecanumDrive::auto_turn
bool auto_turn(double degrees, double speed, bool ignore_imu=false)
Definition
mecanum_drive.cpp:203
PID
Definition
pid.h:23
MecanumDrive::mecanumdrive_config_t
Definition
mecanum_drive.h:20
PID::pid_config_t
Definition
pid.h:43
include
core
subsystems
mecanum_drive.h
Generated by
1.17.0