11package pioneer
22
33import com.qualcomm.robotcore.hardware.HardwareMap
4+ import pioneer.general.AllianceColor
45import pioneer.hardware.BatteryMonitor
56import pioneer.hardware.Camera
67import pioneer.hardware.Flywheel
78import pioneer.hardware.HardwareComponent
9+ import pioneer.hardware.Intake
810import pioneer.hardware.LaunchServos
11+ import pioneer.hardware.Launcher
912import pioneer.hardware.MecanumBase
13+ import pioneer.hardware.Spindexer
14+ import pioneer.hardware.Turret
1015import pioneer.localization.localizers.Pinpoint
1116import pioneer.pathing.follower.Follower
17+ import pioneer.vision.AprilTag
1218
1319enum class BotType {
1420 MECANUM_BOT ,
1521 GOBILDA_STARTER_BOT ,
22+ COMP_BOT ,
1623 CUSTOM ,
1724}
1825
@@ -30,23 +37,35 @@ class Bot private constructor(
3037 hardwareComponents.values.forEach { it.init () }
3138 }
3239
40+ var allianceColor = AllianceColor .RED
41+
3342 // Property-style access for known components
3443 val mecanumBase get() = get<MecanumBase >()
3544 val pinpoint get() = get<Pinpoint >()
3645 val launchServos get() = get<LaunchServos >()
3746 val flywheel get() = get<Flywheel >()
47+ val turret get() = get<Turret >()
48+ val intake get() = get<Intake >()
3849 val camera get() = get<Camera >()
3950 val batteryMonitor get() = get<BatteryMonitor >()
51+ val spindexer get() = get<Spindexer >()
52+ val launcher get() = get<Launcher >()
4053
4154 // Follower is lazily initialized (only if accessed)
4255 // and will error if localizer or mecanumBase is missing
4356 val follower: Follower by lazy {
4457 Follower (
45- localizer = get< Pinpoint >() !! ,
46- mecanumBase = get< MecanumBase >() !! ,
58+ localizer = pinpoint !! ,
59+ mecanumBase = mecanumBase !! ,
4760 )
4861 }
4962
63+ fun updateAll (dt : Double ) {
64+ hardwareComponents.values.forEach { it.update() }
65+ pinpoint?.update(dt)
66+ // TODO: Add other update methods (ie. localizer, follower)
67+ }
68+
5069 // Companion for builder and fromType
5170 companion object {
5271 fun builder () = Builder ()
@@ -68,7 +87,19 @@ class Bot private constructor(
6887 .add(Pinpoint (hardwareMap))
6988 .add(LaunchServos (hardwareMap))
7089 .add(Flywheel (hardwareMap))
71- .add(Camera (hardwareMap, processors = arrayOf(Camera .createAprilTagProcessor())))
90+ .add(Camera (hardwareMap, processors = arrayOf(AprilTag ().processor)))
91+ .add(BatteryMonitor (hardwareMap))
92+ .build()
93+ BotType .COMP_BOT ->
94+ builder()
95+ .add(MecanumBase (hardwareMap))
96+ .add(Pinpoint (hardwareMap))
97+ .add(Flywheel (hardwareMap))
98+ .add(Intake (hardwareMap))
99+ .add(Turret (hardwareMap))
100+ .add(Spindexer (hardwareMap))
101+ .add(Launcher (hardwareMap))
102+ .add(Camera (hardwareMap, processors = arrayOf(AprilTag ().processor)))
72103 .add(BatteryMonitor (hardwareMap))
73104 .build()
74105 BotType .CUSTOM -> throw IllegalArgumentException (" Use Bot.builder() to create a custom bot" )
0 commit comments