Fang-Robotics-MCB
Fang Robotics Team Codebase
Loading...
Searching...
No Matches
pierce_mecanum_drive.hpp
Go to the documentation of this file.
1#pragma once
2
6
7namespace fang::chassis
8{
10 {
11 public:
14
23
25 (
27 const Config& config
28 ):
30 {
31 drivers,
32 std::make_unique<PowerLimiter>(drivers.refSerial, config.powerLimiterConfig),
33 std::make_unique<trap::communication::sensors::Imu>(drivers.bmi088),
34 {config.motorConfigs, config.fieldMecanumConfig}
35 },
36 pwm_{drivers.pwm},
37 chassisPwmFrequency_{config.chassisPwmFrequency},
38 pwmTimer_{config.pwmTimer}
39 {}
40
41 void setUpPwm()
42 {
43 //Taproot stores the frequency in an integral form. The frequency
44 //is recast to Hertz in case it is stored in a different unit before
45 //it stripped of dimensional analysis
46 const static auto kConvertedFreq {static_cast<uint32_t>(Hertz{chassisPwmFrequency_})};
47 pwm_.setTimerFrequency(pwmTimer_, kConvertedFreq);
48 }
49
50 void initialize() override
51 {
53 setUpPwm();
54 }
55 //Minor additions can be kept in a header
56 private:
57 tap::gpio::Pwm& pwm_;
58 const Hertz chassisPwmFrequency_;
59 const tap::gpio::Pwm::Timer pwmTimer_;
60 };
61}
Definition drivers.hpp:31
virtual void initialize() override=0
Definition pierce_mecanum_drive.hpp:10
void initialize() override
Definition pierce_mecanum_drive.hpp:50
void setUpPwm()
Definition pierce_mecanum_drive.hpp:41
PierceMecanumDrive(Drivers &drivers, const Config &config)
Definition pierce_mecanum_drive.hpp:25
Definition quad_drive_data.hpp:12
Definition ultra_mk2_mecanum_drive.hpp:15
communication::serial::RefSerial refSerial
Definition drivers.hpp:131
gpio::Pwm pwm
Definition drivers.hpp:130
communication::sensors::imu::bmi088::Bmi088 bmi088
Definition drivers.hpp:140
Drivers * drivers
Definition subsystem.hpp:138
Definition pwm.hpp:43
Timer
Definition pwm.hpp:72
mockable void setTimerFrequency(Timer timer, uint32_t frequency)
Definition pwm.cpp:158
Definition power_limiter.hpp:10
Definition pwm_info.hpp:4
Definition basic_downscaler.cpp:4
Definition pierce_mecanum_drive.hpp:16
FieldMecanumLogic::Config fieldMecanumConfig
Definition pierce_mecanum_drive.hpp:19
MotorConfigs motorConfigs
Definition pierce_mecanum_drive.hpp:17
Hertz chassisPwmFrequency
Definition pierce_mecanum_drive.hpp:20
PowerLimiter::Config powerLimiterConfig
Definition pierce_mecanum_drive.hpp:18
tap::gpio::Pwm::Timer pwmTimer
Definition pierce_mecanum_drive.hpp:21
Definition robot_mecanum_logic.hpp:14
Definition power_limiter.hpp:19
units::frequency::hertz_t Hertz
Definition units_alias.hpp:24