WPILibC++  unspecified
MecanumDrive.h
1 /*----------------------------------------------------------------------------*/
2 /* Copyright (c) 2008-2017 FIRST. All Rights Reserved. */
3 /* Open Source Software - may be modified and shared by FRC teams. The code */
4 /* must be accompanied by the FIRST BSD license file in the root directory of */
5 /* the project. */
6 /*----------------------------------------------------------------------------*/
7 
8 #pragma once
9 
10 #include <memory>
11 
12 #include <llvm/raw_ostream.h>
13 
14 #include "Drive/RobotDriveBase.h"
15 
16 namespace frc {
17 
18 class SpeedController;
19 
40 class MecanumDrive : public RobotDriveBase {
41  public:
42  MecanumDrive(SpeedController& frontLeftMotor, SpeedController& rearLeftMotor,
43  SpeedController& frontRightMotor,
44  SpeedController& rearRightMotor);
45  virtual ~MecanumDrive() = default;
46 
47  MecanumDrive(const MecanumDrive&) = delete;
48  MecanumDrive& operator=(const MecanumDrive&) = delete;
49 
50  void DriveCartesian(double x, double y, double rotation,
51  double gyroAngle = 0.0);
52  void DrivePolar(double magnitude, double angle, double rotation);
53 
54  void StopMotor() override;
55  void GetDescription(llvm::raw_ostream& desc) const override;
56 
57  private:
58  SpeedController& m_frontLeftMotor;
59  SpeedController& m_rearLeftMotor;
60  SpeedController& m_frontRightMotor;
61  SpeedController& m_rearRightMotor;
62 
63  bool reported = false;
64 };
65 
66 } // namespace frc
Interface for speed controlling devices.
Definition: SpeedController.h:17
Definition: Timer.cpp:18
void DriveCartesian(double x, double y, double rotation, double gyroAngle=0.0)
Drive method for Mecanum platform.
Definition: MecanumDrive.cpp:48
void DrivePolar(double magnitude, double angle, double rotation)
Drive method for Mecanum platform.
Definition: MecanumDrive.cpp:93
A class for driving Mecanum drive platforms.
Definition: MecanumDrive.h:40
MecanumDrive(SpeedController &frontLeftMotor, SpeedController &rearLeftMotor, SpeedController &frontRightMotor, SpeedController &rearRightMotor)
Construct a MecanumDrive.
Definition: MecanumDrive.cpp:27
This class implements an extremely fast bulk output stream that can only output to a stream...
Definition: raw_ostream.h:33
Common base class for drive platforms.
Definition: RobotDriveBase.h:26