Fang-Robotics-MCB
Fang Robotics Team Codebase
Loading...
Searching...
No Matches
chassis_config.hpp
Go to the documentation of this file.
1#ifndef FANG_ROBOTICS_MCB_CHASSIS_CONFIG_PIERCE_HPP
2#define FANG_ROBOTICS_MCB_CHASSIS_CONFIG_PIERCE_HPP
3
6
7namespace fang::robot
8{
9// Construct on first use idiom ahhhh
10using namespace units::literals;
11
12//pwm initialization
13static const auto kPwmTimer{tap::gpio::Pwm::TIMER1};
14static const Hertz kPwmFrequency{400};
15static const Volts kControllerInputVoltage{24};
16
17//All motors are assume to move counterclockwise when given a positive signal
18static bool kLeftMotorInversion{false};
19static bool kRightMotorInversion{true};
20
21static double kUltraMk2GearRatio{14.0};
22
23static double kMotorRampSpeed{750}; //RepeatUltraMk2 RPM per Second
24
25
26static const chassis::PierceMecanumDrive::Motor::Config kFrontLeftMotorConfig
27{
28 .controllerInputVoltage = kControllerInputVoltage,
29 .pwmData = {tap::gpio::Pwm::C1, kPwmFrequency},
30 .inverted = kLeftMotorInversion,
31 .gearRatio = kUltraMk2GearRatio,
32 .rampSpeed = kMotorRampSpeed
33};
34
35static const chassis::PierceMecanumDrive::Motor::Config kFrontRightMotorConfig
36{
37 .controllerInputVoltage = kControllerInputVoltage,
38 .pwmData = {tap::gpio::Pwm::C2, kPwmFrequency},
39 .inverted = kRightMotorInversion,
40 .gearRatio = kUltraMk2GearRatio,
41 .rampSpeed = kMotorRampSpeed
42};
43
44static const chassis::PierceMecanumDrive::Motor::Config kRearLeftMotorConfig
45{
46 .controllerInputVoltage = kControllerInputVoltage,
47 .pwmData = {tap::gpio::Pwm::C3, kPwmFrequency},
48 .inverted = kLeftMotorInversion,
49 .gearRatio = kUltraMk2GearRatio,
50 .rampSpeed = kMotorRampSpeed
51};
52
53static const chassis::PierceMecanumDrive::Motor::Config kRearRightMotorConfig
54{
55 .controllerInputVoltage = kControllerInputVoltage,
56 .pwmData = {tap::gpio::Pwm::C4, kPwmFrequency},
57 .inverted = kRightMotorInversion,
58 .gearRatio = kUltraMk2GearRatio,
59 .rampSpeed = kMotorRampSpeed
60};
61
62static const chassis::PierceMecanumDrive::MotorConfigs kMotorConfigs
63{
64 .frontLeft = kFrontLeftMotorConfig,
65 .frontRight = kFrontRightMotorConfig,
66 .rearLeft = kRearLeftMotorConfig,
67 .rearRight = kRearRightMotorConfig,
68};
69
70static const chassis::PierceMecanumDrive::PowerLimiter::Config kChassisPowerLimiterConfig
71{
73 .energyBufferLimitThreshold = 5_J,
74 .energyBufferCritThreshold = 30_J
75};
76
77static const chassis::FieldMecanumLogic::Config kFieldMecanumLogicConfig
78{
79 150_mm, //Wheel Radius
80 15_in, //Vertical Wheel Distance
81 13.5_in //Horizontal Wheel Distance
82};
83
84static const chassis::PierceMecanumDrive::Config kChassisConfig
85{
86 .motorConfigs = kMotorConfigs,
87 .powerLimiterConfig = kChassisPowerLimiterConfig,
88 .fieldMecanumConfig = kFieldMecanumLogicConfig,
89 .chassisPwmFrequency = kPwmFrequency,
90 .pwmTimer = kPwmTimer,
91};
92}
93#endif
RobotMecanumLogic::Config Config
Definition field_mecanum_logic.hpp:14
QuadCollection< Motor::Config > MotorConfigs
Definition pierce_mecanum_drive.hpp:13
@ TIMER1
Definition pwm.hpp:73
@ C2
Definition pwm.hpp:61
@ C3
Definition pwm.hpp:62
@ C1
Definition pwm.hpp:60
@ C4
Definition pwm.hpp:63
Definition base_robot.cpp:4
MotorConfigs motorConfigs
Definition pierce_mecanum_drive.hpp:17
Volts controllerInputVoltage
Definition repeat_ultra_mk2.hpp:47
Joules startingEnergyBuffer
Definition power_limiter.hpp:20
units::voltage::volt_t Volts
Definition units_alias.hpp:41
units::frequency::hertz_t Hertz
Definition units_alias.hpp:24