RIT VEXU Core API
Loading...
Searching...
No Matches
mecanum_drive.h
1#pragma once
2
3#include "../core/include/utils/controls/pid.h"
4#include "vex.h"
5
6#ifndef PI
7#define PI 3.141592654
8#endif
9
15
16public:
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(vex::motor &left_front, vex::motor &right_front, vex::motor &left_rear, vex::motor &right_rear,
40 vex::rotation *lateral_wheel = NULL, vex::inertial *imu = NULL, mecanumdrive_config_t *config = NULL);
41
50 void drive_raw(double direction_deg, double magnitude, double rotation);
51
62 void drive(double left_y, double left_x, double right_x, int power = 2);
63
76 bool auto_drive(double inches, double direction, double speed, bool gyro_correction = true);
77
88 bool auto_turn(double degrees, double speed, bool ignore_imu = false);
89
90private:
91 vex::motor &left_front, &right_front, &left_rear, &right_rear;
92
94 vex::rotation *lateral_wheel;
95 vex::inertial *imu;
96
97 PID *drive_pid = NULL;
98 PID *drive_gyro_pid = NULL;
99 PID *turn_pid = NULL;
100
101 bool init = true;
102};
Definition mecanum_drive.h:14
void drive_raw(double direction_deg, double magnitude, double rotation)
Definition mecanum_drive.cpp:33
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:8
bool auto_drive(double inches, double direction, double speed, bool gyro_correction=true)
Definition mecanum_drive.cpp:95
void drive(double left_y, double left_x, double right_x, int power=2)
Definition mecanum_drive.cpp:66
bool auto_turn(double degrees, double speed, bool ignore_imu=false)
Definition mecanum_drive.cpp:200
Definition pid.h:23
Definition mecanum_drive.h:20
Definition pid.h:43