blob: 486e2ec62b15632e1782e626946b372090d7f442 [file] [log] [blame]
Brian Silverman8fce7482020-01-05 13:18:21 -08001[
2 {
James Kuszmaulcf324122023-01-14 14:07:17 -08003 "name": "Motor Control",
James Kuszmaulb13e13f2023-11-22 20:44:04 -08004 "description": "Control a single motor with a joystick, displaying the movement of the motor using an encoder.",
Brian Silverman8fce7482020-01-05 13:18:21 -08005 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -08006 "Basic Robot",
7 "Encoder",
8 "SmartDashboard",
9 "Joystick"
Brian Silverman8fce7482020-01-05 13:18:21 -080010 ],
James Kuszmaulcf324122023-01-14 14:07:17 -080011 "foldername": "MotorControl",
Brian Silverman8fce7482020-01-05 13:18:21 -080012 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -080013 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -080014 },
15 {
16 "name": "Relay",
James Kuszmaulb13e13f2023-11-22 20:44:04 -080017 "description": "Control a relay from joystick buttons.",
Brian Silverman8fce7482020-01-05 13:18:21 -080018 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -080019 "Hardware",
20 "Relay",
21 "Joystick"
Brian Silverman8fce7482020-01-05 13:18:21 -080022 ],
23 "foldername": "Relay",
24 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -080025 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -080026 },
27 {
28 "name": "PDP CAN Monitoring",
James Kuszmaulb13e13f2023-11-22 20:44:04 -080029 "description": "Monitor Power Distribution data such as voltage, current, temperature, etc.",
Brian Silverman8fce7482020-01-05 13:18:21 -080030 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -080031 "Hardware",
32 "PDP",
33 "SmartDashboard"
Brian Silverman8fce7482020-01-05 13:18:21 -080034 ],
35 "foldername": "CANPDP",
36 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -080037 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -080038 },
39 {
James Kuszmaulb13e13f2023-11-22 20:44:04 -080040 "name": "Mechanism2d",
41 "foldername": "Mechanism2d",
42 "gradlebase": "cpp",
43 "description": "Display mechanism states on a dashboard with Mechanism2d.",
44 "tags": [
45 "Basic Robot",
46 "Elevator",
47 "Arm",
48 "Analog",
49 "Joystick",
50 "SmartDashboard",
51 "Mechanism2d"
52 ],
Austin Schuh812d0d12021-11-04 20:16:48 -070053 "commandversion": 2
54 },
55 {
Brian Silverman8fce7482020-01-05 13:18:21 -080056 "name": "Solenoids",
James Kuszmaulb13e13f2023-11-22 20:44:04 -080057 "description": "Control a single and double solenoid from joystick buttons.",
Brian Silverman8fce7482020-01-05 13:18:21 -080058 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -080059 "Hardware",
Brian Silverman8fce7482020-01-05 13:18:21 -080060 "Joystick",
James Kuszmaulb13e13f2023-11-22 20:44:04 -080061 "Shuffleboard",
62 "Pneumatics"
Brian Silverman8fce7482020-01-05 13:18:21 -080063 ],
64 "foldername": "Solenoid",
65 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -080066 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -080067 },
68 {
69 "name": "Encoder",
James Kuszmaulb13e13f2023-11-22 20:44:04 -080070 "description": "View values from a quadrature encoder.",
Brian Silverman8fce7482020-01-05 13:18:21 -080071 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -080072 "Hardware",
73 "Encoder",
74 "SmartDashboard"
Brian Silverman8fce7482020-01-05 13:18:21 -080075 ],
76 "foldername": "Encoder",
77 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -080078 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -080079 },
80 {
James Kuszmaulcf324122023-01-14 14:07:17 -080081 "name": "EventLoop",
James Kuszmaulb13e13f2023-11-22 20:44:04 -080082 "description": "Manage a ball system using EventLoop and BooleanEvent.",
James Kuszmaulcf324122023-01-14 14:07:17 -080083 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -080084 "Basic Robot",
85 "Flywheel",
James Kuszmaulcf324122023-01-14 14:07:17 -080086 "EventLoop"
87 ],
88 "foldername": "EventLoop",
89 "gradlebase": "cpp",
90 "commandversion": 2
91 },
92 {
Brian Silverman8fce7482020-01-05 13:18:21 -080093 "name": "Arcade Drive",
James Kuszmaulb13e13f2023-11-22 20:44:04 -080094 "description": "Control a differential drivetrain with single-joystick arcade drive in teleop.",
Brian Silverman8fce7482020-01-05 13:18:21 -080095 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -080096 "Basic Robot",
97 "Differential Drive",
98 "Joystick"
Brian Silverman8fce7482020-01-05 13:18:21 -080099 ],
100 "foldername": "ArcadeDrive",
101 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800102 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -0800103 },
104 {
Austin Schuh812d0d12021-11-04 20:16:48 -0700105 "name": "Tank Drive",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800106 "description": "Control a differential drive with twin-joystick tank drive in teleop.",
Austin Schuh812d0d12021-11-04 20:16:48 -0700107 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800108 "Basic Robot",
109 "Differential Drive",
110 "Joystick"
Austin Schuh812d0d12021-11-04 20:16:48 -0700111 ],
112 "foldername": "TankDrive",
113 "gradlebase": "cpp",
114 "commandversion": 2
115 },
116 {
Brian Silverman8fce7482020-01-05 13:18:21 -0800117 "name": "Mecanum Drive",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800118 "description": "Control a mecanum drivetrain with a joystick in teleop.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800119 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800120 "Basic Robot",
121 "Mecanum Drive",
122 "Joystick"
Brian Silverman8fce7482020-01-05 13:18:21 -0800123 ],
124 "foldername": "MecanumDrive",
125 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800126 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -0800127 },
128 {
129 "name": "Ultrasonic",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800130 "description": "View values from a ping-response ultrasonic sensor.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800131 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800132 "Hardware",
133 "Ultrasonic",
134 "SmartDashboard",
135 "Shuffleboard"
Brian Silverman8fce7482020-01-05 13:18:21 -0800136 ],
137 "foldername": "Ultrasonic",
138 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800139 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -0800140 },
141 {
142 "name": "UltrasonicPID",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800143 "description": "Maintain a set distance from an obstacle with an ultrasonic sensor and PID control.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800144 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800145 "Basic Robot",
146 "Ultrasonic",
147 "PID",
148 "Differential Drive"
Brian Silverman8fce7482020-01-05 13:18:21 -0800149 ],
150 "foldername": "UltrasonicPID",
151 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800152 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -0800153 },
154 {
155 "name": "Gyro",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800156 "description": "Drive a differential drive straight with a gyro sensor.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800157 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800158 "Basic Robot",
159 "Differential Drive",
160 "PID",
161 "Gyro",
Brian Silverman8fce7482020-01-05 13:18:21 -0800162 "Analog",
163 "Joystick"
164 ],
165 "foldername": "Gyro",
166 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800167 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -0800168 },
169 {
170 "name": "Gyro Mecanum",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800171 "description": "Drive a mecanum drivetrain using field-oriented controls with a joystick.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800172 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800173 "Basic Robot",
174 "Mecanum Drive",
175 "Gyro",
Brian Silverman8fce7482020-01-05 13:18:21 -0800176 "Analog",
Austin Schuh1e69f942020-11-14 15:06:14 -0800177 "Joystick"
Brian Silverman8fce7482020-01-05 13:18:21 -0800178 ],
179 "foldername": "GyroMecanum",
180 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800181 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -0800182 },
183 {
184 "name": "HID Rumble",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800185 "description": "Make human interface devices (HID) rumble.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800186 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800187 "Hardware",
188 "XboxController"
Brian Silverman8fce7482020-01-05 13:18:21 -0800189 ],
190 "foldername": "HidRumble",
191 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800192 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -0800193 },
194 {
195 "name": "PotentiometerPID",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800196 "description": "Maintain elevator position setpoints with a potentiometer and PID control.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800197 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800198 "Basic Robot",
199 "Analog",
200 "Elevator",
201 "PID",
202 "Joystick"
Brian Silverman8fce7482020-01-05 13:18:21 -0800203 ],
204 "foldername": "PotentiometerPID",
205 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800206 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -0800207 },
208 {
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800209 "name": "Elevator with exponential profiled PID",
210 "description": "Reach elevator position setpoints with exponential profiles and smart motor controller PID.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800211 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800212 "Basic Robot",
213 "Elevator",
214 "Exponential Profile",
215 "Smart Motor Controller",
216 "Joystick"
217 ],
218 "foldername": "ElevatorExponentialProfile",
219 "gradlebase": "cpp",
220 "commandversion": 2
221 },
222 {
223 "name": "Elevator with trapezoid profiled PID",
224 "description": "Reach elevator position setpoints with trapezoid profiles and smart motor controller PID.",
225 "tags": [
226 "Basic Robot",
227 "Elevator",
228 "Trapezoid Profile",
229 "Smart Motor Controller",
Brian Silverman8fce7482020-01-05 13:18:21 -0800230 "Joystick"
231 ],
232 "foldername": "ElevatorTrapezoidProfile",
233 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800234 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -0800235 },
236 {
237 "name": "Elevator with profiled PID controller",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800238 "description": "Reach elevator position setpoints with an encoder and profiled PID control.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800239 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800240 "Basic Robot",
241 "Elevator",
242 "Profiled PID",
Brian Silverman8fce7482020-01-05 13:18:21 -0800243 "Joystick"
244 ],
245 "foldername": "ElevatorProfiledPID",
246 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800247 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -0800248 },
249 {
250 "name": "Getting Started",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800251 "description": "A differential-drive robot with split-stick Xbox arcade drive with a simple time-based autonomous.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800252 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800253 "Basic Robot"
Brian Silverman8fce7482020-01-05 13:18:21 -0800254 ],
255 "foldername": "GettingStarted",
256 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800257 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -0800258 },
259 {
260 "name": "Simple Vision",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800261 "description": "Use the CameraServer class to stream from a USB Webcam without processing the images.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800262 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800263 "Vision"
Brian Silverman8fce7482020-01-05 13:18:21 -0800264 ],
265 "foldername": "QuickVision",
266 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800267 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -0800268 },
269 {
270 "name": "Intermediate Vision",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800271 "description": "Acquire images from an attached USB camera and add some annotation to the image (as you might do for showing operators the result of some image recognition) and send it to the dashboard for display.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800272 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800273 "Vision"
Brian Silverman8fce7482020-01-05 13:18:21 -0800274 ],
275 "foldername": "IntermediateVision",
276 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800277 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -0800278 },
279 {
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800280 "name": "AprilTags Vision",
281 "description": "On-roboRIO detection of AprilTags using an attached USB camera.",
Austin Schuh75263e32022-02-22 18:05:32 -0800282 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800283 "Vision",
284 "AprilTags"
285 ],
286 "foldername": "AprilTagsVision",
287 "gradlebase": "cpp",
288 "commandversion": 2
289 },
290 {
291 "name": "I2C Communication",
292 "description": "Communicate with external devices (such as an Arduino) using the roboRIO's I2C port.",
293 "tags": [
294 "Hardware",
Austin Schuh75263e32022-02-22 18:05:32 -0800295 "I2C"
296 ],
297 "foldername": "I2CCommunication",
298 "gradlebase": "cpp",
299 "commandversion": 2
300 },
301 {
302 "name": "Digital Communication Sample",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800303 "description": "Communicates with external devices (such as an Arduino) using the roboRIO's DIO.",
Austin Schuh75263e32022-02-22 18:05:32 -0800304 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800305 "Hardware",
306 "Digital Output"
Austin Schuh75263e32022-02-22 18:05:32 -0800307 ],
308 "foldername": "DigitalCommunication",
309 "gradlebase": "cpp",
310 "commandversion": 2
311 },
Austin Schuh75263e32022-02-22 18:05:32 -0800312 {
Brian Silverman8fce7482020-01-05 13:18:21 -0800313 "name": "Axis Camera Sample",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800314 "description": "Acquire images from an Axis network camera and adds some annotation to the image (as you might do for showing operators the result of some image recognition), and sends it to the dashboard for display.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800315 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800316 "Vision"
Brian Silverman8fce7482020-01-05 13:18:21 -0800317 ],
318 "foldername": "AxisCameraSample",
319 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800320 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -0800321 },
322 {
323 "name": "GearsBot",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800324 "description": "A fully functional Command-Based program for WPI's GearsBot robot.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800325 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800326 "Complete Robot",
327 "Command-based",
328 "Differential Drive",
329 "Elevator",
330 "Arm",
331 "Analog",
332 "Digital Input",
333 "SmartDashboard",
334 "XboxController"
Brian Silverman8fce7482020-01-05 13:18:21 -0800335 ],
336 "foldername": "GearsBot",
337 "gradlebase": "cpp",
338 "commandversion": 2
339 },
340 {
Brian Silverman8fce7482020-01-05 13:18:21 -0800341 "name": "HAL",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800342 "description": "Use the low-level HAL C functions. This example is for advanced users.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800343 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800344 "Basic Robot",
Brian Silverman8fce7482020-01-05 13:18:21 -0800345 "HAL"
346 ],
347 "foldername": "HAL",
348 "gradlebase": "c",
Austin Schuh1e69f942020-11-14 15:06:14 -0800349 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -0800350 },
351 {
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800352 "name": "Shuffleboard",
353 "description": "Present various data via the Shuffleboard API.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800354 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800355 "Basic Robot",
356 "Differential Drive",
357 "Elevator",
358 "Analog",
359 "Encoder",
360 "Shuffleboard"
Brian Silverman8fce7482020-01-05 13:18:21 -0800361 ],
362 "foldername": "ShuffleBoard",
363 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800364 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -0800365 },
366 {
367 "name": "'Traditional' Hatchbot",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800368 "description": "A fully-functional command-based hatchbot for the 2019 game, written in the 'traditional' style, i.e. commands are given their own classes.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800369 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800370 "Complete Robot",
371 "Command-based",
372 "Differential Drive",
373 "Encoder",
374 "Shuffleboard",
375 "Sendable",
376 "DataLog",
377 "Pneumatics",
378 "XboxController"
Brian Silverman8fce7482020-01-05 13:18:21 -0800379 ],
380 "foldername": "HatchbotTraditional",
381 "gradlebase": "cpp",
382 "commandversion": 2
383 },
384 {
385 "name": "'Inlined' Hatchbot",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800386 "description": "A fully-functional command-based hatchbot for the 2019 game, written in the 'inlined' style, i.e. many commands are defined inline with lambdas.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800387 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800388 "Complete Robot",
Brian Silverman8fce7482020-01-05 13:18:21 -0800389 "Command-based",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800390 "Differential Drive",
391 "Encoder",
392 "Shuffleboard",
393 "Sendable",
394 "DataLog",
395 "Pneumatics",
396 "PS4Controller"
Brian Silverman8fce7482020-01-05 13:18:21 -0800397 ],
398 "foldername": "HatchbotInlined",
399 "gradlebase": "cpp",
400 "commandversion": 2
401 },
402 {
James Kuszmaulcf324122023-01-14 14:07:17 -0800403 "name": "Rapid React Command Bot",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800404 "description": "A fully-functional command-based fender bot for the 2022 game, written in the 'inlined' style, i.e. many commands are defined inline with lambdas.",
James Kuszmaulcf324122023-01-14 14:07:17 -0800405 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800406 "Complete Robot",
James Kuszmaulcf324122023-01-14 14:07:17 -0800407 "Command-based",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800408 "Differential Drive",
409 "Intake",
410 "Flywheel",
411 "Encoder",
412 "Pneumatics",
413 "Digital Input",
414 "PID",
415 "XboxController"
James Kuszmaulcf324122023-01-14 14:07:17 -0800416 ],
417 "foldername": "RapidReactCommandBot",
418 "gradlebase": "cpp",
419 "commandversion": 2
420 },
421 {
Brian Silverman8fce7482020-01-05 13:18:21 -0800422 "name": "Select Command Example",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800423 "description": "Use SelectCommand to select an autonomous routine.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800424 "tags": [
425 "Command-based"
426 ],
427 "foldername": "SelectCommand",
428 "gradlebase": "cpp",
429 "commandversion": 2
430 },
431 {
Brian Silverman8fce7482020-01-05 13:18:21 -0800432 "name": "Frisbeebot",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800433 "description": "A simple frisbee shooter for the 2013 game, demonstrating use of PIDSubsystem.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800434 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800435 "Complete Robot",
Brian Silverman8fce7482020-01-05 13:18:21 -0800436 "Command-based",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800437 "Differential Drive",
438 "Flywheel",
439 "Encoder",
440 "XboxController",
Brian Silverman8fce7482020-01-05 13:18:21 -0800441 "PID"
442 ],
443 "foldername": "Frisbeebot",
444 "gradlebase": "cpp",
445 "commandversion": 2
446 },
447 {
448 "name": "Gyro Drive Commands",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800449 "description": "Control a robot's angle with PID and a gyro, in command-based.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800450 "tags": [
451 "Command-based",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800452 "Differential Drive",
453 "Encoder",
454 "PS4Controller",
Brian Silverman8fce7482020-01-05 13:18:21 -0800455 "PID",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800456 "Profiled PID",
Brian Silverman8fce7482020-01-05 13:18:21 -0800457 "Gyro"
458 ],
459 "foldername": "GyroDriveCommands",
460 "gradlebase": "cpp",
461 "commandversion": 2
462 },
463 {
464 "name": "SwerveBot",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800465 "description": "Use kinematics and odometry with a swerve drive.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800466 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800467 "Swerve Drive",
468 "Odometry",
469 "XboxController",
470 "Gyro",
471 "Encoder"
Brian Silverman8fce7482020-01-05 13:18:21 -0800472 ],
473 "foldername": "SwerveBot",
474 "gradlebase": "cpp",
475 "commandversion": 2
476 },
477 {
478 "name": "MecanumBot",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800479 "description": "Use kinematics and odometry with a mecanum drive.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800480 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800481 "Mecanum Drive",
482 "Odometry",
483 "Encoder",
484 "Gyro",
485 "XboxController"
Brian Silverman8fce7482020-01-05 13:18:21 -0800486 ],
487 "foldername": "MecanumBot",
488 "gradlebase": "cpp",
489 "commandversion": 2
490 },
491 {
492 "name": "DifferentialDriveBot",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800493 "description": "Use kinematics and odometry with a differential drive.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800494 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800495 "Differential Drive",
496 "Odometry",
497 "Encoder",
498 "Gyro",
499 "XboxController"
Brian Silverman8fce7482020-01-05 13:18:21 -0800500 ],
501 "foldername": "DifferentialDriveBot",
502 "gradlebase": "cpp",
503 "commandversion": 2
504 },
505 {
506 "name": "RamseteCommand",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800507 "description": "Follow a pre-generated trajectory with a differential drive using RamseteCommand.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800508 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800509 "Differential Drive",
510 "Command-based",
Brian Silverman8fce7482020-01-05 13:18:21 -0800511 "Ramsete",
512 "Trajectory",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800513 "Path Following",
514 "Odometry",
515 "Encoder",
516 "Gyro",
517 "XboxController"
Brian Silverman8fce7482020-01-05 13:18:21 -0800518 ],
519 "foldername": "RamseteCommand",
520 "gradlebase": "cpp",
521 "commandversion": 2
522 },
523 {
524 "name": "Arcade Drive Xbox Controller",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800525 "description": "Control a differential drive with split-stick arcade drive in teleop.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800526 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800527 "Basic Robot",
528 "Differential Drive",
529 "XboxController"
Brian Silverman8fce7482020-01-05 13:18:21 -0800530 ],
531 "foldername": "ArcadeDriveXboxController",
532 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800533 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -0800534 },
535 {
536 "name": "Tank Drive Xbox Controller",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800537 "description": "Control a differential drive with Xbox tank drive in teleop.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800538 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800539 "Basic Robot",
540 "Differential Drive",
541 "XboxController"
Brian Silverman8fce7482020-01-05 13:18:21 -0800542 ],
543 "foldername": "TankDriveXboxController",
544 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800545 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -0800546 },
547 {
548 "name": "Duty Cycle Encoder",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800549 "description": "View values from a duty-cycle encoder.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800550 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800551 "Hardware",
552 "Duty Cycle",
553 "Encoder",
554 "SmartDashboard"
Brian Silverman8fce7482020-01-05 13:18:21 -0800555 ],
556 "foldername": "DutyCycleEncoder",
557 "gradlebase": "cpp",
558 "commandversion": 2
559 },
560 {
561 "name": "Duty Cycle Input",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800562 "description": "View duty-cycle input.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800563 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800564 "Hardware",
565 "Duty Cycle",
566 "SmartDashboard"
Brian Silverman8fce7482020-01-05 13:18:21 -0800567 ],
568 "foldername": "DutyCycleInput",
569 "gradlebase": "cpp",
570 "commandversion": 2
571 },
572 {
573 "name": "Addressable LED",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800574 "description": "Display a rainbow pattern on an addressable LED strip.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800575 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800576 "Hardware",
577 "Basic Robot",
578 "AddressableLEDs"
Brian Silverman8fce7482020-01-05 13:18:21 -0800579 ],
580 "foldername": "AddressableLED",
581 "gradlebase": "cpp",
582 "commandversion": 2
583 },
584 {
585 "name": "DMA",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800586 "description": "Read various sensors using DMA.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800587 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800588 "Hardware",
589 "DMA",
590 "SmartDashboard"
Brian Silverman8fce7482020-01-05 13:18:21 -0800591 ],
592 "foldername": "DMA",
593 "gradlebase": "cpp",
594 "commandversion": 2
595 },
596 {
597 "name": "MecanumControllerCommand",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800598 "description": "Follow a pre-generated trajectory with a mecanum drive using MecanumControllerCommand.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800599 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800600 "Command-based",
601 "Mecanum Drive",
602 "Gyro",
603 "Encoder",
604 "Odometry",
Brian Silverman8fce7482020-01-05 13:18:21 -0800605 "Trajectory",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800606 "Path Following",
607 "XboxController"
Brian Silverman8fce7482020-01-05 13:18:21 -0800608 ],
609 "foldername": "MecanumControllerCommand",
610 "gradlebase": "cpp",
611 "commandversion": 2
612 },
613 {
614 "name": "SwerveControllerCommand",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800615 "description": "Follow a pre-generated trajectory with a swerve drive using SwerveControllerCommand.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800616 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800617 "Command-based",
618 "Swerve Drive",
619 "Gyro",
620 "Encoder",
621 "Odometry",
Brian Silverman8fce7482020-01-05 13:18:21 -0800622 "Trajectory",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800623 "Path Following",
624 "XboxController"
Brian Silverman8fce7482020-01-05 13:18:21 -0800625 ],
626 "foldername": "SwerveControllerCommand",
627 "gradlebase": "cpp",
628 "commandversion": 2
629 },
630 {
631 "name": "ArmBot",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800632 "description": "Control an arm with ProfiledPIDSubsystem.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800633 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800634 "Command-based",
635 "Arm",
636 "Encoder",
637 "Profiled PID",
638 "XboxController",
639 "Differential Drive"
Brian Silverman8fce7482020-01-05 13:18:21 -0800640 ],
641 "foldername": "ArmBot",
642 "gradlebase": "cpp",
643 "commandversion": 2
644 },
645 {
646 "name": "ArmBotOffboard",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800647 "description": "Control an arm with TrapezoidProfileSubsystem and smart motor controller PID.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800648 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800649 "Command-based",
650 "Arm",
651 "Smart Motor Controller",
652 "Trapezoid Profile",
653 "XboxController",
654 "Differential Drive"
Brian Silverman8fce7482020-01-05 13:18:21 -0800655 ],
656 "foldername": "ArmBotOffboard",
657 "gradlebase": "cpp",
658 "commandversion": 2
659 },
660 {
661 "name": "DriveDistanceOffboard",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800662 "description": "Drive a differential drivetrain a set distance using TrapezoidProfileCommand and smart motor controller PID.",
Brian Silverman8fce7482020-01-05 13:18:21 -0800663 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800664 "Command-based",
665 "Differential Drive",
666 "Trapezoid Profile",
667 "Smart Motor Controller",
668 "XboxController"
Brian Silverman8fce7482020-01-05 13:18:21 -0800669 ],
670 "foldername": "DriveDistanceOffboard",
671 "gradlebase": "cpp",
672 "commandversion": 2
Austin Schuh1e69f942020-11-14 15:06:14 -0800673 },
674 {
675 "name": "RamseteController",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800676 "description": "Follow a pre-generated trajectory with a differential drive using RamseteController.",
Austin Schuh1e69f942020-11-14 15:06:14 -0800677 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800678 "Basic Robot",
679 "Differential Drive",
680 "Ramsete",
681 "PID",
682 "Odometry",
683 "Path Following",
684 "Trajectory",
685 "XboxController"
Austin Schuh1e69f942020-11-14 15:06:14 -0800686 ],
687 "foldername": "RamseteController",
688 "gradlebase": "cpp",
689 "commandversion": 2
690 },
691 {
Austin Schuh812d0d12021-11-04 20:16:48 -0700692 "name": "RomiReference",
693 "description": "An example command-based robot program that can be used with the Romi reference robot design.",
694 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800695 "Romi",
696 "Command-based",
697 "Differential Drive",
698 "Digital Input",
699 "Joystick"
Austin Schuh812d0d12021-11-04 20:16:48 -0700700 ],
701 "foldername": "RomiReference",
702 "gradlebase": "cppromi",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800703 "commandversion": 2,
704 "extravendordeps": [
705 "romi"
706 ]
707 },
708 {
709 "name": "XRP Reference",
710 "description": "An example command-based robot program that can be used with the XRP reference robot design.",
711 "tags": [
712 "XRP",
713 "Command-based",
714 "Differential Drive",
715 "Digital Input",
716 "Joystick"
717 ],
718 "foldername": "XRPReference",
719 "gradlebase": "cppxrp",
720 "commandversion": 2,
721 "extravendordeps": [
722 "xrp"
723 ]
Austin Schuh812d0d12021-11-04 20:16:48 -0700724 },
725 {
Austin Schuh1e69f942020-11-14 15:06:14 -0800726 "name": "StateSpaceFlywheel",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800727 "description": "Control a flywheel using a state-space model (based on values from CAD), with a Kalman Filter and LQR.",
Austin Schuh1e69f942020-11-14 15:06:14 -0800728 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800729 "Basic Robot",
Austin Schuh1e69f942020-11-14 15:06:14 -0800730 "Flywheel",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800731 "State-Space",
732 "LQR",
733 "Encoder",
Austin Schuh1e69f942020-11-14 15:06:14 -0800734 "Joystick"
735 ],
736 "foldername": "StateSpaceFlywheel",
737 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800738 "commandversion": 2
739 },
740 {
741 "name": "StateSpaceFlywheelSysId",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800742 "description": "Control a flywheel using a state-space model (based on values from SysId), with a Kalman Filter and LQR.",
Austin Schuh1e69f942020-11-14 15:06:14 -0800743 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800744 "Basic Robot",
Austin Schuh1e69f942020-11-14 15:06:14 -0800745 "Flywheel",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800746 "SysId",
747 "State-Space",
748 "LQR",
749 "Encoder",
Austin Schuh1e69f942020-11-14 15:06:14 -0800750 "Joystick"
751 ],
752 "foldername": "StateSpaceFlywheelSysId",
753 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800754 "commandversion": 2
755 },
756 {
757 "name": "StateSpaceElevator",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800758 "description": "Control an elevator using a state-space model (based on values from CAD), with a Kalman Filter and LQR.",
Austin Schuh1e69f942020-11-14 15:06:14 -0800759 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800760 "Basic Robot",
Austin Schuh1e69f942020-11-14 15:06:14 -0800761 "Elevator",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800762 "State-Space",
763 "LQR",
764 "Encoder",
Austin Schuh1e69f942020-11-14 15:06:14 -0800765 "Joystick"
766 ],
767 "foldername": "StateSpaceElevator",
768 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800769 "commandversion": 2
770 },
771 {
772 "name": "StateSpaceArm",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800773 "description": "Control an arm using a state-space model (based on values from CAD), with a Kalman Filter and LQR.",
Austin Schuh1e69f942020-11-14 15:06:14 -0800774 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800775 "Basic Robot",
Austin Schuh1e69f942020-11-14 15:06:14 -0800776 "Arm",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800777 "State-Space",
778 "LQR",
779 "Encoder",
Austin Schuh1e69f942020-11-14 15:06:14 -0800780 "Joystick"
781 ],
782 "foldername": "StateSpaceArm",
783 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800784 "commandversion": 2
785 },
786 {
787 "name": "ElevatorSimulation",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800788 "description": "Simulate an elevator.",
Austin Schuh1e69f942020-11-14 15:06:14 -0800789 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800790 "Basic Robot",
Austin Schuh1e69f942020-11-14 15:06:14 -0800791 "Elevator",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800792 "State-Space",
Austin Schuh1e69f942020-11-14 15:06:14 -0800793 "Simulation",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800794 "Mechanism2d",
795 "Profiled PID"
Austin Schuh1e69f942020-11-14 15:06:14 -0800796 ],
797 "foldername": "ElevatorSimulation",
798 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800799 "commandversion": 2
800 },
801 {
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800802 "name": "Elevator Exponential Profile Simulation",
803 "description": "Simulate an elevator.",
Austin Schuh812d0d12021-11-04 20:16:48 -0700804 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800805 "Basic Robot",
806 "Elevator",
807 "State-Space",
808 "Simulation",
809 "Mechanism2d",
810 "Profiled PID"
811 ],
812 "foldername": "ElevatorExponentialSimulation",
813 "gradlebase": "cpp",
814 "commandversion": 2
815 },
816 {
817 "name": "DifferentialDrivePoseEstimator",
818 "description": "Combine differential-drive odometry with vision data using DifferentialDrivePoseEstimator.",
819 "tags": [
820 "Differential Drive",
821 "State-Space",
822 "Pose Estimator",
Austin Schuh812d0d12021-11-04 20:16:48 -0700823 "Vision",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800824 "PID",
825 "XboxController"
Austin Schuh812d0d12021-11-04 20:16:48 -0700826 ],
827 "foldername": "DifferentialDrivePoseEstimator",
828 "gradlebase": "cpp",
Austin Schuh812d0d12021-11-04 20:16:48 -0700829 "commandversion": 2
830 },
831 {
832 "name": "MecanumDrivePoseEstimator",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800833 "description": "Combine mecanum-drive odometry with vision data using MecanumDrivePoseEstimator.",
Austin Schuh812d0d12021-11-04 20:16:48 -0700834 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800835 "Mecanum Drive",
836 "State-Space",
837 "Pose Estimator",
Austin Schuh812d0d12021-11-04 20:16:48 -0700838 "Vision",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800839 "PID",
840 "XboxController"
Austin Schuh812d0d12021-11-04 20:16:48 -0700841 ],
842 "foldername": "MecanumDrivePoseEstimator",
843 "gradlebase": "cpp",
Austin Schuh812d0d12021-11-04 20:16:48 -0700844 "commandversion": 2
845 },
846 {
Austin Schuh1e69f942020-11-14 15:06:14 -0800847 "name": "ArmSimulation",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800848 "description": "Simulate a single-jointed arm.",
Austin Schuh1e69f942020-11-14 15:06:14 -0800849 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800850 "Basic Robot",
Austin Schuh1e69f942020-11-14 15:06:14 -0800851 "Arm",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800852 "State-Space",
Austin Schuh1e69f942020-11-14 15:06:14 -0800853 "Simulation",
Austin Schuh75263e32022-02-22 18:05:32 -0800854 "Mechanism2d",
855 "Preferences"
Austin Schuh1e69f942020-11-14 15:06:14 -0800856 ],
857 "foldername": "ArmSimulation",
858 "gradlebase": "cpp",
James Kuszmaulcf324122023-01-14 14:07:17 -0800859 "commandversion": 2
860 },
861 {
862 "name": "UnitTesting",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800863 "description": "Test a robot project with basic unit tests in simulation.",
James Kuszmaulcf324122023-01-14 14:07:17 -0800864 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800865 "Intake",
866 "Pneumatics"
James Kuszmaulcf324122023-01-14 14:07:17 -0800867 ],
868 "foldername": "UnitTest",
869 "gradlebase": "cpp",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800870 "commandversion": 2,
871 "hasunittests": true
Austin Schuh1e69f942020-11-14 15:06:14 -0800872 },
873 {
Austin Schuh812d0d12021-11-04 20:16:48 -0700874 "name": "SimpleDifferentialDriveSimulation",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800875 "description": "Simulate a differential drivetrain and follow trajectories with RamseteController (non-command-based).",
Austin Schuh812d0d12021-11-04 20:16:48 -0700876 "tags": [
877 "Differential Drive",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800878 "State-Space",
879 "Ramsete",
880 "Path Following",
881 "Trajectory",
882 "Encoder",
883 "XboxController",
884 "Simulation"
Austin Schuh812d0d12021-11-04 20:16:48 -0700885 ],
886 "foldername": "SimpleDifferentialDriveSimulation",
887 "gradlebase": "cpp",
Austin Schuh812d0d12021-11-04 20:16:48 -0700888 "commandversion": 2
889 },
890 {
Austin Schuh1e69f942020-11-14 15:06:14 -0800891 "name": "StateSpaceDriveSimulation",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800892 "description": "Simulate a differential drivetrain and follow trajectories with RamseteCommand (command-based).",
Austin Schuh1e69f942020-11-14 15:06:14 -0800893 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800894 "Command-based",
Austin Schuh1e69f942020-11-14 15:06:14 -0800895 "Differential Drive",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800896 "State-Space",
897 "XboxController",
898 "Simulation"
Austin Schuh1e69f942020-11-14 15:06:14 -0800899 ],
900 "foldername": "StateSpaceDifferentialDriveSimulation",
901 "gradlebase": "cpp",
Austin Schuh1e69f942020-11-14 15:06:14 -0800902 "commandversion": 2
Austin Schuh812d0d12021-11-04 20:16:48 -0700903 },
904 {
905 "name": "SwerveDrivePoseEstimator",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800906 "description": "Combine swerve-drive odometry with vision data using SwerveDrivePoseEstimator.",
Austin Schuh812d0d12021-11-04 20:16:48 -0700907 "tags": [
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800908 "Swerve Drive",
909 "State-Space",
910 "Pose Estimator",
Austin Schuh812d0d12021-11-04 20:16:48 -0700911 "Vision",
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800912 "PID",
913 "XboxController"
Austin Schuh812d0d12021-11-04 20:16:48 -0700914 ],
915 "foldername": "SwerveDrivePoseEstimator",
916 "gradlebase": "cpp",
Austin Schuh812d0d12021-11-04 20:16:48 -0700917 "commandversion": 2
James Kuszmaulb13e13f2023-11-22 20:44:04 -0800918 },
919 {
920 "name": "Flywheel BangBangController",
921 "description": "A sample program to demonstrate the use of a BangBangController with a flywheel to control RPM",
922 "tags": [
923 "Flywheel",
924 "Simulation",
925 "Joystick"
926 ],
927 "foldername": "FlywheelBangBangController",
928 "gradlebase": "cpp",
929 "commandversion": 2
Maxwell Henderson80bec322024-01-09 15:48:44 -0800930 },
931 {
932 "name": "SysIdRoutine",
933 "description": "A sample command-based robot demonstrating use of the SysIdRoutine command factory",
934 "tags": [
935 "SysId",
936 "Command-based",
937 "DataLog"
938 ],
939 "foldername": "SysId",
940 "gradlebase": "cpp",
941 "commandversion": 2
Brian Silverman8fce7482020-01-05 13:18:21 -0800942 }
943]