mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-20 00:51:42 +00:00
50 lines
1.5 KiB
C++
50 lines
1.5 KiB
C++
|
|
#include "WPILib.h"
|
||
|
|
|
||
|
|
/**
|
||
|
|
* This is a demo program showing how to use Mecanum control with the RobotDrive class.
|
||
|
|
*/
|
||
|
|
class Robot: public SampleRobot
|
||
|
|
{
|
||
|
|
|
||
|
|
// Channels for the wheels
|
||
|
|
const static int frontLeftChannel = 2;
|
||
|
|
const static int rearLeftChannel = 3;
|
||
|
|
const static int frontRightChannel = 1;
|
||
|
|
const static int rearRightChannel = 0;
|
||
|
|
|
||
|
|
const static int joystickChannel = 0;
|
||
|
|
|
||
|
|
RobotDrive robotDrive; // robot drive system
|
||
|
|
Joystick stick; // only joystick
|
||
|
|
|
||
|
|
public:
|
||
|
|
Robot() :
|
||
|
|
robotDrive(frontLeftChannel, rearLeftChannel,
|
||
|
|
frontRightChannel, rearRightChannel), // these must be initialized in the same order
|
||
|
|
stick(joystickChannel) // as they are declared above.
|
||
|
|
{
|
||
|
|
robotDrive.SetExpiration(0.1);
|
||
|
|
robotDrive.SetInvertedMotor(RobotDrive::kFrontLeftMotor, true); // invert the left side motors
|
||
|
|
robotDrive.SetInvertedMotor(RobotDrive::kRearLeftMotor, true); // you may need to change or remove this to match your robot
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Runs the motors with Mecanum drive.
|
||
|
|
*/
|
||
|
|
void OperatorControl()
|
||
|
|
{
|
||
|
|
robotDrive.SetSafetyEnabled(false);
|
||
|
|
while (IsOperatorControl())
|
||
|
|
{
|
||
|
|
// Use the joystick X axis for lateral movement, Y axis for forward movement, and Z axis for rotation.
|
||
|
|
// This sample does not use field-oriented drive, so the gyro input is set to zero.
|
||
|
|
robotDrive.MecanumDrive_Cartesian(stick.GetX(), stick.GetY(), stick.GetZ());
|
||
|
|
|
||
|
|
Wait(0.005); // wait 5ms to avoid hogging CPU cycles
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
};
|
||
|
|
|
||
|
|
START_ROBOT_CLASS(Robot);
|