Fang-Robotics-MCB
Fang Robotics Team Codebase
Loading...
Searching...
No Matches
pierce_auto_test.hpp
Go to the documentation of this file.
1#pragma once
2#include "driver/drivers.hpp"
3//Subsystems
7
10
11#include "robot/base_robot.hpp"
12// Auto tests
15
16namespace fang::robot
17{
23 {
24 public:
33
39
41 :
42 BaseRobot{makeRobot(drivers, config)},
43 drivers_{drivers}
44 {
45 }
46
47 void update()
48 {
49 proxyTurretInputUpdater_.update();
50 }
51
52 private:
53 Drivers& drivers_;
54 turret::ProxyTurretInput proxyTurretInput_{{1.0, 1.0}}; // Don't scale
55 turret::BasicProxyTurretInputUpdater proxyTurretInputUpdater_{proxyTurretInput_, drivers_.jankyFloatHandler};
56 BaseRobot makeRobot(Drivers& drivers, const Config& config)
57 {
58 auto gimbal{std::make_unique<turret::PierceFieldGimbal>(drivers, config.subsystemConfig.gimbalConfig)};
59 auto feeder{std::make_unique<turret::M2006SimpleFeeder>(drivers, config.subsystemConfig.feederConfig)};
60 auto booster{std::make_unique<turret::PierceAmmoBooster>(drivers, config.subsystemConfig.boosterConfig)};
61 auto mecanumDrive{std::make_unique<chassis::PierceMecanumDrive>(drivers, config.subsystemConfig.chassisConfig)};
62 auto commandPack
63 {
64 std::make_unique<command::PierceAutoTestCommandPack>
65 (
66 drivers,
67 proxyTurretInput_,
68 *booster,
69 *feeder,
70 *gimbal,
71 *mecanumDrive,
72 config.commandPackConfig
73 )
74 };
75 // If I could get the makeUniqueVector thing to work, this might be more worthwhile...
76 Subsystems subsystems{};
77 subsystems.push_back(std::move(booster));
78 subsystems.push_back(std::move(feeder));
79 subsystems.push_back(std::move(gimbal));
80 subsystems.push_back(std::move(mecanumDrive));
81
82 CommandPacks commandPacks{};
83 commandPacks.push_back(std::move(commandPack));
84 return BaseRobot{drivers.commandScheduler, std::move(subsystems), std::move(commandPacks)};
85 }
86 };
87}
Definition drivers.hpp:31
communication::JankyFloatHandler jankyFloatHandler
Definition drivers.hpp:36
Definition base_robot.hpp:20
BaseRobot(tap::control::CommandScheduler &commandScheduler, Subsystems &&subsystems, CommandPacks &&commandPacks)
Definition base_robot.cpp:6
std::vector< std::unique_ptr< tap::control::Subsystem > > Subsystems
Definition base_robot.hpp:24
std::vector< std::unique_ptr< command::CommandPack > > CommandPacks
Definition base_robot.hpp:25
Definition pierce_auto_test.hpp:23
void update()
Not virtual so that it can be passed around in maker functions.
Definition pierce_auto_test.hpp:47
PierceAutoTest(Drivers &drivers, const Config &config)
Definition pierce_auto_test.hpp:40
void update()
Definition basic_proxy_turret_input_updater.cpp:14
Definition proxy_turret_input.hpp:14
control::CommandScheduler commandScheduler
Definition drivers.hpp:141
Definition remote_map_state.hpp:56
Definition pwm_info.hpp:4
Definition base_robot.cpp:4
fang::Drivers & drivers
Definition robot_singleton.cpp:45
Definition pierce_mecanum_drive.hpp:16
Definition pierce_auto_test_command_pack.hpp:72
Definition pierce_auto_test.hpp:35
SubsystemConfig subsystemConfig
Definition pierce_auto_test.hpp:36
command::PierceAutoTestCommandPack::Config commandPackConfig
Definition pierce_auto_test.hpp:37
Definition pierce_auto_test.hpp:27
turret::PierceAmmoBooster::Config boosterConfig
Definition pierce_auto_test.hpp:31
turret::PierceFieldGimbal::Config gimbalConfig
Definition pierce_auto_test.hpp:29
fang::turret::M2006SimpleFeeder::Config feederConfig
Definition pierce_auto_test.hpp:30
chassis::PierceMecanumDrive::Config chassisConfig
Definition pierce_auto_test.hpp:28
Definition m2006_simple_feeder.hpp:17
Definition pierce_ammo_booster.hpp:17
Definition pierce_field_gimbal.hpp:18