Fang-Robotics-MCB
Fang Robotics Team Codebase
Loading...
Searching...
No Matches
field_mecanum_logic.hpp
Go to the documentation of this file.
1#ifndef FANG_ROBOTICS_MCB_CONTROL_CHASSIS_HOLONOMIC_MECANUM_LOGIC_FIELD_MECANUM_LOGIC_HPP
2#define FANG_ROBOTICS_MCB_CONTROL_CHASSIS_HOLONOMIC_MECANUM_LOGIC_FIELD_MECANUM_LOGIC_HPP
6
7using namespace units::literals;
8
9namespace fang::chassis
10{
12 {
13 public:
15
25
26 FieldMecanumLogic(const Meters& horizontalWheelDistance,
27 const Meters& verticalWheelDistance,
28 const Meters& wheelRadius);
38 void setMotion(const Velocity2D& translation, const RPM& rotation);
39 void setTotalMotion(const Velocity2D& translation, const RPM& rotation, const Radians& robotAngle);
45 void setRobotAngle(const Radians& robotAngle);
46 void setTranslation(const Velocity2D& translation);
47 void setRotation(const RPM& rotation);
48 const Radians&getRobotAngle() const;
49 const Velocity2D& getTranslation() const;
50 RPM getRotation() const;
51 QuadRPM getWheelSpeeds() const;
52 private:
53 RPM getFrontRightWheelSpeed() const;
54 RPM getFrontLeftWheelSpeed() const;
55 RPM getRearLeftWheelSpeed() const;
56 RPM getRearRightWheelSpeed() const;
57 //This does not update the translation when the robot angle is changed.
58 //It is useful in certain cases to speed stuff up.
59 void rawSetRobotAngle(const Radians& rotation);
60 Velocity2D fieldToRobotTranslation(const Velocity2D& translation) const;
61 Velocity2D robotToFieldTranslation(const Velocity2D& translation) const;
62
63 Radians robotAngle_{0.0};
64 RobotMecanumLogic robotMecanumLogic_;
65 Velocity2D fieldTranslation_{0_mps, 0_mps};
66 };
67}
68#endif
Definition field_mecanum_logic.hpp:12
const Radians & getRobotAngle() const
Definition field_mecanum_logic.cpp:53
void setTotalMotion(const Velocity2D &translation, const RPM &rotation, const Radians &robotAngle)
Definition field_mecanum_logic.cpp:26
void setMotion(const Velocity2D &translation, const RPM &rotation)
Definition field_mecanum_logic.cpp:20
void setRobotAngle(const Radians &robotAngle)
Definition field_mecanum_logic.cpp:34
void setTranslation(const Velocity2D &translation)
Definition field_mecanum_logic.cpp:42
void setRotation(const RPM &rotation)
Definition field_mecanum_logic.cpp:48
QuadRPM getWheelSpeeds() const
Definition field_mecanum_logic.cpp:69
const Velocity2D & getTranslation() const
Definition field_mecanum_logic.cpp:58
RPM getRotation() const
Definition field_mecanum_logic.cpp:64
Definition quad_drive_data.hpp:12
Definition robot_mecanum_logic.hpp:10
Definition pwm_info.hpp:4
Definition basic_downscaler.cpp:4
Definition robot_mecanum_logic.hpp:14
units::angle::radian_t Radians
Definition units_alias.hpp:16
units::angular_velocity::revolutions_per_minute_t RPM
Definition units_alias.hpp:30
units::length::meter_t Meters
Definition units_alias.hpp:7