Fang-Robotics-MCB
Fang Robotics Team Codebase
Loading...
Searching...
No Matches
robot_mecanum_logic.hpp
Go to the documentation of this file.
1#ifndef FANG_ROBOTICS_MCB_CONTROL_CHASSIS_HOLONOMIC_MECANUM_LOGIC_ROBOT_MECANUM_LOGIC_HPP
2#define FANG_ROBOTICS_MCB_CONTROL_CHASSIS_HOLONOMIC_MECANUM_LOGIC_ROBOT_MECANUM_LOGIC_HPP
6
7namespace fang::chassis
8{
10 {
11 public:
12
28
29 RobotMecanumLogic(const Meters& horizontalWheelDistance,
30 const Meters& verticalWheelDistance,
31 const Meters& wheelRadius);
41 void setMotion(const Velocity2D& translation, const RPM& rotation);
42 void setTranslation(const Velocity2D& translation);
43 void setRotation(const RPM& rotation);
44 const Velocity2D& getTranslation() const;
45 RPM getRotation() const;
46
50 QuadRPM getWheelSpeeds() const;
51
52 private:
53 RPM getFrontRightWheelSpeed() const;
54 RPM getFrontLeftWheelSpeed() const;
55 RPM getRearLeftWheelSpeed() const;
56 RPM getRearRightWheelSpeed() const;
57
58 Velocity2D translation_{MetersPerSecond{0.0}, MetersPerSecond{0.0}};
59 RadiansPerSecond rotation_{0};
60 const MetersPerRadians kWheelRadius_; //Required for the math to work, "how many meters for each radius?"
61 const Meters kHorizontalWheelDistance_;
62
63 //https://research.ijcaonline.org/volume113/number3/pxc3901586.pdf
64 //These are the constants used within the euqation
65 const Meters kHalfHorizontalWheelDistance_{kHorizontalWheelDistance_ / 2.0};
66 const Meters kVerticalWheelDistance_;
67 const Meters kHalfVerticalWheelDistance_{kVerticalWheelDistance_ / 2.0};
68 //l_x + l_y
69 const MetersPerRadians kWheelDistanceConstant_{(kHalfVerticalWheelDistance_ + kHalfHorizontalWheelDistance_) / Radians{1}}; //The chassis is a larger "wheel"
70 };
71}
72#endif
Definition quad_drive_data.hpp:12
Definition robot_mecanum_logic.hpp:10
void setTranslation(const Velocity2D &translation)
Definition robot_mecanum_logic.cpp:32
RPM getRotation() const
Definition robot_mecanum_logic.cpp:44
void setRotation(const RPM &rotation)
Definition robot_mecanum_logic.cpp:36
const Velocity2D & getTranslation() const
Definition robot_mecanum_logic.cpp:40
void setMotion(const Velocity2D &translation, const RPM &rotation)
Definition robot_mecanum_logic.cpp:27
QuadRPM getWheelSpeeds() const
Definition robot_mecanum_logic.cpp:48
Definition pwm_info.hpp:4
Definition basic_downscaler.cpp:4
Definition robot_mecanum_logic.hpp:14
const Meters & wheelRadius
Definition robot_mecanum_logic.hpp:17
const Meters & verticalWheelDistance
Definition robot_mecanum_logic.hpp:16
const Meters & horizontalWheelDistance
Definition robot_mecanum_logic.hpp:15
units::angle::radian_t Radians
Definition units_alias.hpp:16
units::velocity::meters_per_second_t MetersPerSecond
Definition units_alias.hpp:27
units::angular_velocity::radians_per_second_t RadiansPerSecond
Definition units_alias.hpp:32
units::angular_velocity::revolutions_per_minute_t RPM
Definition units_alias.hpp:30
units::length::meter_t Meters
Definition units_alias.hpp:7
units::unit_t< RawMetersPerRadians > MetersPerRadians
Definition units_alias.hpp:57