Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 1 | [ |
| 2 | { |
| 3 | "name": "Motor Controller", |
| 4 | "description": "Demonstrate controlling a single motor with a Joystick.", |
| 5 | "tags": [ |
| 6 | "Robot and Motor", |
| 7 | "Actuators", |
| 8 | "Joystick", |
| 9 | "Complete List" |
| 10 | ], |
| 11 | "foldername": "MotorControl", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 12 | "gradlebase": "cpp", |
| 13 | "commandversion": 1 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 14 | }, |
| 15 | { |
| 16 | "name": "Motor Control With Encoder", |
| 17 | "description": "Demonstrate controlling a single motor with a Joystick and displaying the net movement of the motor using an encoder.", |
| 18 | "tags": [ |
| 19 | "Robot and Motor", |
| 20 | "Digital", |
| 21 | "Sensors", |
| 22 | "Actuators", |
| 23 | "Joystick", |
| 24 | "Complete List" |
| 25 | ], |
| 26 | "foldername": "MotorControlEncoder", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 27 | "gradlebase": "cpp", |
| 28 | "commandversion": 1 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 29 | }, |
| 30 | { |
| 31 | "name": "Relay", |
| 32 | "description": "Demonstrate controlling a Relay from Joystick buttons.", |
| 33 | "tags": [ |
| 34 | "Actuators", |
| 35 | "Joystick", |
| 36 | "Complete List" |
| 37 | ], |
| 38 | "foldername": "Relay", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 39 | "gradlebase": "cpp", |
| 40 | "commandversion": 1 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 41 | }, |
| 42 | { |
| 43 | "name": "PDP CAN Monitoring", |
| 44 | "description": "Demonstrate using CAN to monitor the voltage, current, and temperature in the Power Distribution Panel.", |
| 45 | "tags": [ |
| 46 | "Complete List", |
| 47 | "CAN", |
| 48 | "Sensors" |
| 49 | ], |
| 50 | "foldername": "CANPDP", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 51 | "gradlebase": "cpp", |
| 52 | "commandversion": 1 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 53 | }, |
| 54 | { |
| 55 | "name": "Solenoids", |
| 56 | "description": "Demonstrate controlling a single and double solenoid from Joystick buttons.", |
| 57 | "tags": [ |
| 58 | "Actuators", |
| 59 | "Joystick", |
| 60 | "Pneumatics", |
| 61 | "Complete List" |
| 62 | ], |
| 63 | "foldername": "Solenoid", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 64 | "gradlebase": "cpp", |
| 65 | "commandversion": 1 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 66 | }, |
| 67 | { |
| 68 | "name": "Encoder", |
| 69 | "description": "Demonstrate displaying the value of a quadrature encoder on the SmartDashboard.", |
| 70 | "tags": [ |
| 71 | "Complete List", |
| 72 | "Digital", |
| 73 | "Sensors" |
| 74 | ], |
| 75 | "foldername": "Encoder", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 76 | "gradlebase": "cpp", |
| 77 | "commandversion": 1 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 78 | }, |
| 79 | { |
| 80 | "name": "Arcade Drive", |
| 81 | "description": "An example program which demonstrates the use of Arcade Drive with the DifferentialDrive class", |
| 82 | "tags": [ |
| 83 | "Getting Started with C++", |
| 84 | "Robot and Motor", |
| 85 | "Joystick", |
| 86 | "Complete List" |
| 87 | ], |
| 88 | "foldername": "ArcadeDrive", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 89 | "gradlebase": "cpp", |
| 90 | "commandversion": 1 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 91 | }, |
| 92 | { |
| 93 | "name": "Mecanum Drive", |
| 94 | "description": "An example program which demonstrates the use of Mecanum Drive with the MecanumDrive class", |
| 95 | "tags": [ |
| 96 | "Getting Started with C++", |
| 97 | "Robot and Motor", |
| 98 | "Joystick", |
| 99 | "Complete List" |
| 100 | ], |
| 101 | "foldername": "MecanumDrive", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 102 | "gradlebase": "cpp", |
| 103 | "commandversion": 1 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 104 | }, |
| 105 | { |
| 106 | "name": "Ultrasonic", |
| 107 | "description": "Demonstrate maintaining a set distance using an ultrasonic sensor.", |
| 108 | "tags": [ |
| 109 | "Robot and Motor", |
| 110 | "Complete List", |
| 111 | "Sensors", |
| 112 | "Analog" |
| 113 | ], |
| 114 | "foldername": "Ultrasonic", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 115 | "gradlebase": "cpp", |
| 116 | "commandversion": 1 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 117 | }, |
| 118 | { |
| 119 | "name": "UltrasonicPID", |
| 120 | "description": "Demonstrate maintaining a set distance using an ultrasonic sensor and PID control.", |
| 121 | "tags": [ |
| 122 | "Robot and Motor", |
| 123 | "Complete List", |
| 124 | "Sensors", |
| 125 | "Analog" |
| 126 | ], |
| 127 | "foldername": "UltrasonicPID", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 128 | "gradlebase": "cpp", |
| 129 | "commandversion": 1 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 130 | }, |
| 131 | { |
| 132 | "name": "Gyro", |
| 133 | "description": "An example program showing how to drive straight with using a gyro sensor.", |
| 134 | "tags": [ |
| 135 | "Robot and Motor", |
| 136 | "Complete List", |
| 137 | "Sensors", |
| 138 | "Analog", |
| 139 | "Joystick" |
| 140 | ], |
| 141 | "foldername": "Gyro", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 142 | "gradlebase": "cpp", |
| 143 | "commandversion": 1 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 144 | }, |
| 145 | { |
| 146 | "name": "Gyro Mecanum", |
| 147 | "description": "An example program showing how to perform mecanum drive with field oriented controls.", |
| 148 | "tags": [ |
| 149 | "Robot and Motor", |
| 150 | "Complete List", |
| 151 | "Sensors", |
| 152 | "Analog", |
| 153 | "Joysitck" |
| 154 | ], |
| 155 | "foldername": "GyroMecanum", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 156 | "gradlebase": "cpp", |
| 157 | "commandversion": 1 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 158 | }, |
| 159 | { |
| 160 | "name": "HID Rumble", |
| 161 | "description": "An example program showing how to make human interface devices rumble.", |
| 162 | "tags": [ |
| 163 | "Joystick" |
| 164 | ], |
| 165 | "foldername": "HidRumble", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 166 | "gradlebase": "cpp", |
| 167 | "commandversion": 1 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 168 | }, |
| 169 | { |
| 170 | "name": "PotentiometerPID", |
| 171 | "description": "An example to demonstrate the use of a potentiometer and PID control to reach elevator position setpoints.", |
| 172 | "tags": [ |
| 173 | "Joystick", |
| 174 | "Actuators", |
| 175 | "Complete List", |
| 176 | "Sensors", |
| 177 | "Analog" |
| 178 | ], |
| 179 | "foldername": "PotentiometerPID", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 180 | "gradlebase": "cpp", |
| 181 | "commandversion": 1 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 182 | }, |
| 183 | { |
James Kuszmaul | 4f3ad3c | 2019-12-01 16:35:21 -0800 | [diff] [blame] | 184 | "name": "Elevator with trapezoid profiled PID", |
| 185 | "description": "An example to demonstrate the use of an encoder and trapezoid profiled PID control to reach elevator position setpoints.", |
| 186 | "tags": [ |
| 187 | "Digital", |
| 188 | "Sensors", |
| 189 | "Actuators", |
| 190 | "Joystick" |
| 191 | ], |
| 192 | "foldername": "ElevatorTrapezoidProfile", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 193 | "gradlebase": "cpp", |
| 194 | "commandversion": 1 |
James Kuszmaul | 4f3ad3c | 2019-12-01 16:35:21 -0800 | [diff] [blame] | 195 | }, |
| 196 | { |
| 197 | "name": "Elevator with profiled PID controller", |
| 198 | "description": "An example to demonstrate the use of an encoder and trapezoid profiled PID control to reach elevator position setpoints.", |
| 199 | "tags": [ |
| 200 | "Digital", |
| 201 | "Sensors", |
| 202 | "Actuators", |
| 203 | "Joystick" |
| 204 | ], |
| 205 | "foldername": "ElevatorProfiledPID", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 206 | "gradlebase": "cpp", |
| 207 | "commandversion": 1 |
James Kuszmaul | 4f3ad3c | 2019-12-01 16:35:21 -0800 | [diff] [blame] | 208 | }, |
| 209 | { |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 210 | "name": "Getting Started", |
| 211 | "description": "An example program which demonstrates the simplest autonomous and teleoperated routines.", |
| 212 | "tags": [ |
| 213 | "Getting Started with C++", |
| 214 | "Complete List" |
| 215 | ], |
| 216 | "foldername": "GettingStarted", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 217 | "gradlebase": "cpp", |
| 218 | "commandversion": 1 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 219 | }, |
| 220 | { |
| 221 | "name": "Simple Vision", |
| 222 | "description": "The minimal program to acquire images from an attached USB camera on the robot and send them to the dashboard.", |
| 223 | "tags": [ |
| 224 | "Vision", |
| 225 | "Complete List" |
| 226 | ], |
| 227 | "foldername": "QuickVision", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 228 | "gradlebase": "cpp", |
| 229 | "commandversion": 1 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 230 | }, |
| 231 | { |
| 232 | "name": "Intermediate Vision", |
| 233 | "description": "An example program that acquires images from an attached USB 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.", |
| 234 | "tags": [ |
| 235 | "Vision", |
| 236 | "Complete List" |
| 237 | ], |
| 238 | "foldername": "IntermediateVision", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 239 | "gradlebase": "cpp", |
| 240 | "commandversion": 1 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 241 | }, |
| 242 | { |
| 243 | "name": "Axis Camera Sample", |
| 244 | "description": "An example program that acquires 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. This demonstrates the use of the AxisCamera class.", |
| 245 | "tags": [ |
| 246 | "Vision", |
| 247 | "Complete List" |
| 248 | ], |
| 249 | "foldername": "AxisCameraSample", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 250 | "gradlebase": "cpp", |
| 251 | "commandversion": 1 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 252 | }, |
| 253 | { |
| 254 | "name": "GearsBot", |
James Kuszmaul | 4f3ad3c | 2019-12-01 16:35:21 -0800 | [diff] [blame] | 255 | "description": "A fully functional example CommandBased program for WPIs GearsBot robot, using the new command-based framework. This code can run on your computer if it supports simulation.", |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 256 | "tags": [ |
| 257 | "CommandBased Robot", |
| 258 | "Complete List" |
| 259 | ], |
| 260 | "foldername": "GearsBot", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 261 | "gradlebase": "cpp", |
| 262 | "commandversion": 2 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 263 | }, |
| 264 | { |
| 265 | "name": "PacGoat", |
| 266 | "description": "A fully functional example CommandBased program for FRC Team 190's 2014 robot. This code can run on your computer if it supports simulation.", |
| 267 | "tags": [ |
| 268 | "CommandBased Robot", |
| 269 | "Complete List" |
| 270 | ], |
| 271 | "foldername": "PacGoat", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 272 | "gradlebase": "cpp", |
| 273 | "commandversion": 1 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 274 | }, |
| 275 | { |
| 276 | "name": "HAL", |
| 277 | "description": "A program created using the HAL exclusively. This example is for advanced users", |
| 278 | "tags": [ |
| 279 | "HAL" |
| 280 | ], |
| 281 | "foldername": "HAL", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 282 | "gradlebase": "c", |
| 283 | "commandversion": 1 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 284 | }, |
| 285 | { |
| 286 | "name": "ShuffleBoard", |
| 287 | "description": "An example program that uses ShuffleBoard with its Widgets and Tabs.", |
| 288 | "tags": [ |
| 289 | "ShuffleBoard" |
| 290 | ], |
| 291 | "foldername": "ShuffleBoard", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 292 | "gradlebase": "cpp", |
| 293 | "commandversion": 1 |
James Kuszmaul | 4f3ad3c | 2019-12-01 16:35:21 -0800 | [diff] [blame] | 294 | }, |
| 295 | { |
| 296 | "name": "'Traditional' Hatchbot", |
| 297 | "description": "A fully-functional command-based hatchbot for the 2019 game using the new experimental command API. Written in the 'traditional' style, i.e. commands are given their own classes.", |
| 298 | "tags": [ |
| 299 | "Complete robot", |
| 300 | "Command-based" |
| 301 | ], |
| 302 | "foldername": "HatchbotTraditional", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 303 | "gradlebase": "cpp", |
| 304 | "commandversion": 2 |
James Kuszmaul | 4f3ad3c | 2019-12-01 16:35:21 -0800 | [diff] [blame] | 305 | }, |
| 306 | { |
| 307 | "name": "'Inlined' Hatchbot", |
| 308 | "description": "A fully-functional command-based hatchbot for the 2019 game using the new experimental command API. Written in the 'inlined' style, i.e. many commands are defined inline with lambdas.", |
| 309 | "tags": [ |
| 310 | "Complete robot", |
| 311 | "Command-based", |
| 312 | "Lambdas" |
| 313 | ], |
| 314 | "foldername": "HatchbotInlined", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 315 | "gradlebase": "cpp", |
| 316 | "commandversion": 2 |
James Kuszmaul | 4f3ad3c | 2019-12-01 16:35:21 -0800 | [diff] [blame] | 317 | }, |
| 318 | { |
| 319 | "name": "Select Command Example", |
| 320 | "description": "An example showing how to use the SelectCommand class from the experimental command framework rewrite.", |
| 321 | "tags": [ |
| 322 | "Command-based" |
| 323 | ], |
| 324 | "foldername": "SelectCommand", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 325 | "gradlebase": "cpp", |
| 326 | "commandversion": 2 |
James Kuszmaul | 4f3ad3c | 2019-12-01 16:35:21 -0800 | [diff] [blame] | 327 | }, |
| 328 | { |
| 329 | "name": "Scheduler Event Logging", |
| 330 | "description": "An example showing how to use Shuffleboard to log Command events from the CommandScheduler in the experimental command framework rewrite", |
| 331 | "tags": [ |
| 332 | "Command-based", |
| 333 | "Shuffleboard" |
| 334 | ], |
| 335 | "foldername": "SchedulerEventLogging", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 336 | "gradlebase": "cpp", |
| 337 | "commandversion": 2 |
James Kuszmaul | 4f3ad3c | 2019-12-01 16:35:21 -0800 | [diff] [blame] | 338 | }, |
| 339 | { |
| 340 | "name": "Frisbeebot", |
| 341 | "description": "An example robot project for a simple frisbee shooter for the 2013 FRC game, Ultimate Ascent, demonstrating use of PID functionality in the command framework", |
| 342 | "tags": [ |
| 343 | "Command-based", |
| 344 | "PID" |
| 345 | ], |
| 346 | "foldername": "Frisbeebot", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 347 | "gradlebase": "cpp", |
| 348 | "commandversion": 2 |
James Kuszmaul | 4f3ad3c | 2019-12-01 16:35:21 -0800 | [diff] [blame] | 349 | }, |
| 350 | { |
| 351 | "name": "Gyro Drive Commands", |
| 352 | "description": "An example command-based robot project demonstrating simple PID functionality utilizing a gyroscope to keep a robot driving straight and to turn to specified angles.", |
| 353 | "tags": [ |
| 354 | "Command-based", |
| 355 | "PID", |
| 356 | "Gyro" |
| 357 | ], |
| 358 | "foldername": "GyroDriveCommands", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 359 | "gradlebase": "cpp", |
| 360 | "commandversion": 2 |
James Kuszmaul | 4f3ad3c | 2019-12-01 16:35:21 -0800 | [diff] [blame] | 361 | }, |
| 362 | { |
| 363 | "name": "SwerveBot", |
| 364 | "description": "An example program for a swerve drive that uses swerve drive kinematics and odometry.", |
| 365 | "tags": [ |
| 366 | "SwerveBot" |
| 367 | ], |
| 368 | "foldername": "SwerveBot", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 369 | "gradlebase": "cpp", |
| 370 | "commandversion": 2 |
James Kuszmaul | 4f3ad3c | 2019-12-01 16:35:21 -0800 | [diff] [blame] | 371 | }, |
| 372 | { |
| 373 | "name": "MecanumBot", |
| 374 | "description": "An example program for a mecanum drive that uses mecanum drive kinematics and odometry.", |
| 375 | "tags": [ |
| 376 | "MecanumBot" |
| 377 | ], |
| 378 | "foldername": "MecanumBot", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 379 | "gradlebase": "cpp", |
| 380 | "commandversion": 2 |
James Kuszmaul | 4f3ad3c | 2019-12-01 16:35:21 -0800 | [diff] [blame] | 381 | }, |
| 382 | { |
| 383 | "name": "DifferentialDriveBot", |
| 384 | "description": "An example program for a differential drive that uses differential drive kinematics and odometry.", |
| 385 | "tags": [ |
| 386 | "DifferentialDriveBot" |
| 387 | ], |
| 388 | "foldername": "DifferentialDriveBot", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 389 | "gradlebase": "cpp", |
| 390 | "commandversion": 2 |
James Kuszmaul | 4f3ad3c | 2019-12-01 16:35:21 -0800 | [diff] [blame] | 391 | }, |
| 392 | { |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 393 | "name": "RamseteCommand", |
James Kuszmaul | 4f3ad3c | 2019-12-01 16:35:21 -0800 | [diff] [blame] | 394 | "description": "An example command-based robot demonstrating the use of a RamseteCommand to follow a pregenerated trajectory.", |
| 395 | "tags": [ |
| 396 | "RamseteCommand", |
| 397 | "PID", |
| 398 | "Ramsete", |
| 399 | "Trajectory", |
| 400 | "Path following" |
| 401 | ], |
| 402 | "foldername": "RamseteCommand", |
James Kuszmaul | 4b81d30 | 2019-12-14 20:53:14 -0800 | [diff] [blame^] | 403 | "gradlebase": "cpp", |
| 404 | "commandversion": 2 |
| 405 | }, |
| 406 | { |
| 407 | "name": "Arcade Drive Xbox Controller", |
| 408 | "description": "An example program which demonstrates the use of Arcade Drive with the DifferentialDrive class and an Xbox Controller.", |
| 409 | "tags": [ |
| 410 | "Getting Started with C++", |
| 411 | "Robot and Motor", |
| 412 | "XboxController", |
| 413 | "Complete List" |
| 414 | ], |
| 415 | "foldername": "ArcadeDriveXboxController", |
| 416 | "gradlebase": "cpp", |
| 417 | "commandversion": 1 |
| 418 | }, |
| 419 | { |
| 420 | "name": "Tank Drive Xbox Controller", |
| 421 | "description": "An example program which demonstrates the use of Tank Drive with the DifferentialDrive class and an Xbox Controller.", |
| 422 | "tags": [ |
| 423 | "Getting Started with C++", |
| 424 | "Robot and Motor", |
| 425 | "XboxController", |
| 426 | "Complete List" |
| 427 | ], |
| 428 | "foldername": "TankDriveXboxController", |
| 429 | "gradlebase": "cpp", |
| 430 | "commandversion": 1 |
| 431 | }, |
| 432 | { |
| 433 | "name": "Duty Cycle Encoder", |
| 434 | "description": "Demonstrates the use of the Duty Cycle Encoder class", |
| 435 | "tags": [ |
| 436 | "Getting Started with C++" |
| 437 | ], |
| 438 | "foldername": "DutyCycleEncoder", |
| 439 | "gradlebase": "cpp", |
| 440 | "commandversion": 2 |
| 441 | }, |
| 442 | { |
| 443 | "name": "Duty Cycle Input", |
| 444 | "description": "Demonstrates the use of the Duty Cycle class", |
| 445 | "tags": [ |
| 446 | "Getting Started with C++" |
| 447 | ], |
| 448 | "foldername": "DutyCycleInput", |
| 449 | "gradlebase": "cpp", |
| 450 | "commandversion": 2 |
| 451 | }, |
| 452 | { |
| 453 | "name": "Addressable LED", |
| 454 | "description": "Demonstrates the use of the Addressable LED class", |
| 455 | "tags": [ |
| 456 | "Getting Started with C++" |
| 457 | ], |
| 458 | "foldername": "AddressableLED", |
| 459 | "gradlebase": "cpp", |
| 460 | "commandversion": 2 |
| 461 | }, |
| 462 | { |
| 463 | "name": "DMA", |
| 464 | "description": "Demonstrates the use of the DMA class", |
| 465 | "tags": [ |
| 466 | "Advanced C++" |
| 467 | ], |
| 468 | "foldername": "DMA", |
| 469 | "gradlebase": "cpp", |
| 470 | "commandversion": 2 |
| 471 | }, |
| 472 | { |
| 473 | "name": "MecanumControllerCommand", |
| 474 | "description": "An example command-based robot demonstrating the use of a MecanumControllerCommand to follow a pregenerated trajectory.", |
| 475 | "tags": [ |
| 476 | "MecanumControllerCommand", |
| 477 | "Mecanum", |
| 478 | "PID", |
| 479 | "Trajectory", |
| 480 | "Path following" |
| 481 | ], |
| 482 | "foldername": "MecanumControllerCommand", |
| 483 | "gradlebase": "cpp", |
| 484 | "commandversion": 2 |
| 485 | }, |
| 486 | { |
| 487 | "name": "SwerveControllerCommand", |
| 488 | "description": "An example command-based robot demonstrating the use of a SwerveControllerCommand to follow a pregenerated trajectory.", |
| 489 | "tags": [ |
| 490 | "SwerveControllerCommand", |
| 491 | "Swerve", |
| 492 | "PID", |
| 493 | "Trajectory", |
| 494 | "Path following" |
| 495 | ], |
| 496 | "foldername": "SwerveControllerCommand", |
| 497 | "gradlebase": "cpp", |
| 498 | "commandversion": 2 |
| 499 | }, |
| 500 | { |
| 501 | "name": "ArmBot", |
| 502 | "description": "An example command-based robot demonstrating the use of a ProfiledPIDSubsystem to control an arm.", |
| 503 | "tags": [ |
| 504 | "ArmBot", |
| 505 | "PID", |
| 506 | "Motion Profile" |
| 507 | ], |
| 508 | "foldername": "ArmBot", |
| 509 | "gradlebase": "cpp", |
| 510 | "commandversion": 2 |
| 511 | }, |
| 512 | { |
| 513 | "name": "ArmBotOffboard", |
| 514 | "description": "An example command-based robot demonstrating the use of a TrapezoidProfileSubsystem to control an arm with an offboard PID.", |
| 515 | "tags": [ |
| 516 | "ArmBotOffboard", |
| 517 | "PID", |
| 518 | "Motion Profile" |
| 519 | ], |
| 520 | "foldername": "ArmBotOffboard", |
| 521 | "gradlebase": "cpp", |
| 522 | "commandversion": 2 |
| 523 | }, |
| 524 | { |
| 525 | "name": "DriveDistanceOffboard", |
| 526 | "description": "An example command-based robot demonstrating the use of a TrapezoidProfileCommand to drive a robot a set distance with offboard PID on the drive.", |
| 527 | "tags": [ |
| 528 | "DriveDistance", |
| 529 | "PID", |
| 530 | "Motion Profile" |
| 531 | ], |
| 532 | "foldername": "DriveDistanceOffboard", |
| 533 | "gradlebase": "cpp", |
| 534 | "commandversion": 2 |
Brian Silverman | 41cdd3e | 2019-01-19 19:48:58 -0800 | [diff] [blame] | 535 | } |
| 536 | ] |