LightLib
PROS library for VEX V5: EKF/MCL localization, RAMSETE path following, high-level chassis API
Loading...
Searching...
No Matches
light::HDrive Class Reference

Tank drive with a single center-mounted strafe wheel (H-drive layout). More...

#include <holo_drive.hpp>

Public Member Functions

 HDrive (std::vector< int > left_ports, std::vector< int > right_ports, int center_port, int imu_port, double wheel_diameter, double gear_ratio=1.0)
 Construct an H-drive.
 
Opcontrol
void opcontrol (int throttle, int strafe, int turn)
 Drive from joystick inputs.
 
Autonomous moves
void drive (double inches, int max_speed=100, int timeout_ms=3000)
 Drive forward inches (negative = reverse).
 
void strafe (double inches, int max_speed=100, int timeout_ms=3000)
 Strafe right inches (negative = left).
 
void turn_to (double heading_deg, int max_speed=80, int timeout_ms=2000)
 Turn to absolute heading 0–360°.
 
void turn_relative (double degrees, int max_speed=80, int timeout_ms=2000)
 Turn degrees CW (positive) or CCW (negative).
 
PID constants
void set_drive_pid (double kP, double kI=0, double kD=0)
 
void set_strafe_pid (double kP, double kI=0, double kD=0)
 
void set_turn_pid (double kP, double kI=0, double kD=0)
 
void set_heading_pid (double kP, double kI=0, double kD=0)
 
Misc
void calibrate (bool wait=true)
 
void reset_sensors ()
 
void set_brake_mode (pros::motor_brake_mode_e_t mode)
 
double get_heading () const
 

Detailed Description

Tank drive with a single center-mounted strafe wheel (H-drive layout).

Left and right groups may contain any number of motors.

Warning
Before running any autonomous method you MUST call set_*_pid() for each axis. Call calibrate() once inside initialize() if no other code calibrates the IMU.

Definition at line 256 of file holo_drive.hpp.

Constructor & Destructor Documentation

◆ HDrive()

light::HDrive::HDrive ( std::vector< int >  left_ports,
std::vector< int >  right_ports,
int  center_port,
int  imu_port,
double  wheel_diameter,
double  gear_ratio = 1.0 
)

Construct an H-drive.

Parameters
left_portsleft side motor ports (negative = reversed)
right_portsright side motor ports (negative = reversed)
center_portcenter strafe motor port
imu_portinertial sensor port
wheel_diameterwheel diameter in inches
gear_ratiooutput_rpm / motor_rpm (1.0 = direct drive)

Member Function Documentation

◆ calibrate()

void light::HDrive::calibrate ( bool  wait = true)

◆ drive()

void light::HDrive::drive ( double  inches,
int  max_speed = 100,
int  timeout_ms = 3000 
)

Drive forward inches (negative = reverse).

◆ get_heading()

double light::HDrive::get_heading ( ) const

◆ opcontrol()

void light::HDrive::opcontrol ( int  throttle,
int  strafe,
int  turn 
)

Drive from joystick inputs.

Parameters
throttleforward / back
strafecenter wheel left / right
turnCW / CCW

◆ reset_sensors()

void light::HDrive::reset_sensors ( )

◆ set_brake_mode()

void light::HDrive::set_brake_mode ( pros::motor_brake_mode_e_t  mode)

◆ set_drive_pid()

void light::HDrive::set_drive_pid ( double  kP,
double  kI = 0,
double  kD = 0 
)

◆ set_heading_pid()

void light::HDrive::set_heading_pid ( double  kP,
double  kI = 0,
double  kD = 0 
)

◆ set_strafe_pid()

void light::HDrive::set_strafe_pid ( double  kP,
double  kI = 0,
double  kD = 0 
)

◆ set_turn_pid()

void light::HDrive::set_turn_pid ( double  kP,
double  kI = 0,
double  kD = 0 
)

◆ strafe()

void light::HDrive::strafe ( double  inches,
int  max_speed = 100,
int  timeout_ms = 3000 
)

Strafe right inches (negative = left).

◆ turn_relative()

void light::HDrive::turn_relative ( double  degrees,
int  max_speed = 80,
int  timeout_ms = 2000 
)

Turn degrees CW (positive) or CCW (negative).

◆ turn_to()

void light::HDrive::turn_to ( double  heading_deg,
int  max_speed = 80,
int  timeout_ms = 2000 
)

Turn to absolute heading 0–360°.


The documentation for this class was generated from the following file: