diff --git a/wpilibcExamples/examples.xml b/wpilibcExamples/examples.xml
deleted file mode 100644
index 198cf378a0..0000000000
--- a/wpilibcExamples/examples.xml
+++ /dev/null
@@ -1,482 +0,0 @@
-
-
-
-
- Getting Started with C++
- Examples for getting started with FRC C++
-
-
- CommandBased Robot
- Examples for CommandBased robot programs.
-
-
- Actuators
- Example programs that demonstrate the use of various actuators
-
-
- Analog
- Examples programs that show different uses of analog inputs,
- outputs and various analog sensors
-
-
- CAN
- Example programs that demonstrate the use of the CAN components in the control
- system
-
-
- Complete List
- Complete list of all sample programs across all categories
-
-
- Digital
- Example programs that demonstrate the sensors that use the digital I/O ports
-
-
- I2C
- Example programs that demonstrate the use of I2C and various sensors that use
- it
-
-
- Joystick
- Example programs that demonstate different uses of joysticks for robot
- driving
-
-
- Pneumatics
- Example programs that demonstrate the use of the compressor and solenoids
-
-
- Robot and Motor
- Example programs that demonstrate driving a robot and motors including safety,
- servos, etc.
-
-
- SPI
- Example programs that demonstrate the use of the SPI bus and sensors that
- connect to it
-
-
- Safety
- Example programs that demonstate the motor safety classes and how to use them
- with your programs
-
-
- Sensors
- Example programs that demonstrate the use of the various commonly used sensors
- on FRC robots
-
-
- Vision
- Example programs that demonstrate the use of a camera for image acquisition and
- processing
-
-
- Motor Controller
- Demonstrate controlling a single motor with a Joystick.
-
- Robot and Motor
- Actuators
- Joystick
- Complete List
-
-
- src
-
-
-
-
-
-
- Motor Control With Encoder
- Demonstrate controlling a single motor with a Joystick and displaying the net
- movement of the motor using an encoder.
-
- Robot and Motor
- Digital
- Sensors
- Actuators
- Joystick
- Complete List
-
-
- src
-
-
-
-
-
-
- Relay
- Demonstrate controlling a Relay from Joystick buttons.
-
- Actuators
- Joystick
- Complete List
-
-
- src
-
-
-
-
-
-
- PDP CAN Monitoring
- Demonstrate using CAN to monitor the voltage, current, and temperature in the
- Power Distribution Panel.
-
- Complete List
- CAN
- Sensors
-
-
- src
-
-
-
-
-
-
- Solenoids
- Demonstrate controlling a single and double solenoid from Joystick buttons.
-
- Actuators
- Joystick
- Pneumatics
- Complete List
-
-
- src
-
-
-
-
-
-
- Encoder
- Demonstrate displaying the value of a quadrature encoder on the
- SmartDashboard.
-
- Complete List
- Digital
- Sensors
-
-
- src
-
-
-
-
-
-
- Arcade Drive
- An example program which demonstrates the use of Arcade Drive with the DifferentialDrive class
-
- Getting Started with C++
- Robot and Motor
- Joystick
- Complete List
-
-
- src
-
-
-
-
-
-
- Mecanum Drive
- An example program which demonstrates the use of Mecanum Drive with the MecanumDrive class
-
- Getting Started with C++
- Robot and Motor
- Joystick
- Complete List
-
-
- src
-
-
-
-
-
-
- Ultrasonic
- Demonstrate maintaining a set distance using an ultrasonic sensor.
-
- Robot and Motor
- Complete List
- Sensors
- Analog
-
-
- src
-
-
-
-
-
-
- UltrasonicPID
- Demonstrate maintaining a set distance using an ultrasonic sensor and PID
- control.
-
- Robot and Motor
- Complete List
- Sensors
- Analog
-
-
- src
-
-
-
-
-
-
- Gyro
- An example program showing how to drive straight with using a gyro sensor.
-
- Robot and Motor
- Complete List
- Sensors
- Analog
- Joystick
-
-
- src
-
-
-
-
-
-
- Gyro Mecanum
- An example program showing how to perform mecanum drive with field oriented
- controls.
-
- Robot and Motor
- Complete List
- Sensors
- Analog
- Joysitck
-
-
- src
-
-
-
-
-
-
- PotentiometerPID
- An example to demonstrate the use of a potentiometer and PID control to reach
- elevator position setpoints.
-
- Joystick
- Actuators
- Complete List
- Sensors
- Analog
-
-
- src
-
-
-
-
-
-
- Getting Started
- An example program which demonstrates the simplest autonomous and
- teleoperated routines.
-
- Getting Started with C++
- Complete List
-
-
- src
-
-
-
-
-
-
- Simple Vision
- The minimal program to acquire images from an attached USB camera on the robot
- and send them to the dashboard.
-
- Vision
- Complete List
-
-
- src
-
-
-
-
-
-
- Intermediate Vision
- 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.
-
- Vision
- Complete List
-
-
- src
-
-
-
-
-
-
- Axis Camera Sample
- 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.
-
- Vision
- Complete List
-
-
- src
-
-
-
-
-
-
- GearsBot
- A fully functional example CommandBased program for
- WPIs GearsBot robot. This code can run on your computer if it
- supports simulation.
-
- CommandBased Robot
- Complete List
-
- /usr/share/frcsim/worlds/GearsBotDemo.world
-
- src
- src/Commands
- src/Subsystems
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PacGoat
- A fully functional example CommandBased program for FRC Team 190's 2014
- robot. This code can run on your computer if it supports simulation.
-
- CommandBased Robot
- Complete List
-
- /usr/share/frcsim/worlds/PacGoat2014.world
-
- src
- src/Commands
- src/Subsystems
- src/Triggers
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/wpilibcExamples/publish.gradle b/wpilibcExamples/publish.gradle
index d932b16382..1903ed1aa0 100644
--- a/wpilibcExamples/publish.gradle
+++ b/wpilibcExamples/publish.gradle
@@ -1,74 +1,70 @@
-apply plugin: 'maven-publish'
-apply plugin: 'edu.wpi.first.wpilib.versioning.WPILibVersioningPlugin'
-
-if (!hasProperty('releaseType')) {
- WPILibVersion {
- releaseType = 'dev'
- }
-}
-
-def pubVersion
-if (project.hasProperty("publishVersion")) {
- pubVersion = project.publishVersion
-} else {
- pubVersion = WPILibVersion.version
-}
-
-def baseExamplesArtifactId = 'examples'
-def baseTemplatesArtifactId = 'templates'
-def artifactGroupId = 'edu.wpi.first.wpilibc'
-
-def outputsFolder = file("$project.buildDir/outputs")
-
-task cppExamplesZip(type: Zip) {
- destinationDir = outputsFolder
- baseName = 'wpilibc-examples'
-
- from(licenseFile) {
- into '/'
- }
-
- from('src/main/cpp/examples') {
- into 'examples'
- }
-
- from('examples.xml') {
- into 'examples'
- }
-}
-
-task cppTemplatesZip(type: Zip) {
- destinationDir = outputsFolder
- baseName = 'wpilibc-templates'
-
- from(licenseFile) {
- into '/'
- }
-
- from('src/main/cpp/templates') {
- into 'templates'
- }
-}
-
-build.dependsOn cppTemplatesZip
-build.dependsOn cppExamplesZip
-
-publishing {
- publications {
- examples(MavenPublication) {
- artifact cppExamplesZip
-
- artifactId = baseExamplesArtifactId
- groupId artifactGroupId
- version pubVersion
- }
-
- templates(MavenPublication) {
- artifact cppTemplatesZip
-
- artifactId = baseTemplatesArtifactId
- groupId artifactGroupId
- version pubVersion
- }
- }
-}
+apply plugin: 'maven-publish'
+apply plugin: 'edu.wpi.first.wpilib.versioning.WPILibVersioningPlugin'
+
+if (!hasProperty('releaseType')) {
+ WPILibVersion {
+ releaseType = 'dev'
+ }
+}
+
+def pubVersion
+if (project.hasProperty("publishVersion")) {
+ pubVersion = project.publishVersion
+} else {
+ pubVersion = WPILibVersion.version
+}
+
+def baseExamplesArtifactId = 'examples'
+def baseTemplatesArtifactId = 'templates'
+def artifactGroupId = 'edu.wpi.first.wpilibc'
+
+def outputsFolder = file("$project.buildDir/outputs")
+
+task cppExamplesZip(type: Zip) {
+ destinationDir = outputsFolder
+ baseName = 'wpilibc-examples'
+
+ from(licenseFile) {
+ into '/'
+ }
+
+ from('src/main/cpp/examples') {
+ into 'examples'
+ }
+}
+
+task cppTemplatesZip(type: Zip) {
+ destinationDir = outputsFolder
+ baseName = 'wpilibc-templates'
+
+ from(licenseFile) {
+ into '/'
+ }
+
+ from('src/main/cpp/templates') {
+ into 'templates'
+ }
+}
+
+build.dependsOn cppTemplatesZip
+build.dependsOn cppExamplesZip
+
+publishing {
+ publications {
+ examples(MavenPublication) {
+ artifact cppExamplesZip
+
+ artifactId = baseExamplesArtifactId
+ groupId artifactGroupId
+ version pubVersion
+ }
+
+ templates(MavenPublication) {
+ artifact cppTemplatesZip
+
+ artifactId = baseTemplatesArtifactId
+ groupId artifactGroupId
+ version pubVersion
+ }
+ }
+}
diff --git a/wpilibcExamples/src/main/cpp/examples/examples.json b/wpilibcExamples/src/main/cpp/examples/examples.json
new file mode 100644
index 0000000000..d1560639c5
--- /dev/null
+++ b/wpilibcExamples/src/main/cpp/examples/examples.json
@@ -0,0 +1,182 @@
+[
+ {
+ "name": "Motor Controller",
+ "description": "Demonstrate controlling a single motor with a Joystick.",
+ "tags": [
+ "Robot and Motor",
+ "Actuators",
+ "Joystick",
+ "Complete List"
+ ]
+ },
+ {
+ "name": "Motor Control With Encoder",
+ "description": "Demonstrate controlling a single motor with a Joystick and displaying the net movement of the motor using an encoder.",
+ "tags": [
+ "Robot and Motor",
+ "Digital",
+ "Sensors",
+ "Actuators",
+ "Joystick",
+ "Complete List"
+ ]
+ },
+ {
+ "name": "Relay",
+ "description": "Demonstrate controlling a Relay from Joystick buttons.",
+ "tags": [
+ "Actuators",
+ "Joystick",
+ "Complete List"
+ ]
+ },
+ {
+ "name": "PDP CAN Monitoring",
+ "description": "Demonstrate using CAN to monitor the voltage, current, and temperature in the Power Distribution Panel.",
+ "tags": [
+ "Complete List",
+ "CAN",
+ "Sensors"
+ ]
+ },
+ {
+ "name": "Solenoids",
+ "description": "Demonstrate controlling a single and double solenoid from Joystick buttons.",
+ "tags": [
+ "Actuators",
+ "Joystick",
+ "Pneumatics",
+ "Complete List"
+ ]
+ },
+ {
+ "name": "Encoder",
+ "description": "Demonstrate displaying the value of a quadrature encoder on the SmartDashboard.",
+ "tags": [
+ "Complete List",
+ "Digital",
+ "Sensors"
+ ]
+ },
+ {
+ "name": "Arcade Drive",
+ "description": "An example program which demonstrates the use of Arcade Drive with the DifferentialDrive class",
+ "tags": [
+ "Getting Started with C++",
+ "Robot and Motor",
+ "Joystick",
+ "Complete List"
+ ]
+ },
+ {
+ "name": "Mecanum Drive",
+ "description": "An example program which demonstrates the use of Mecanum Drive with the MecanumDrive class",
+ "tags": [
+ "Getting Started with C++",
+ "Robot and Motor",
+ "Joystick",
+ "Complete List"
+ ]
+ },
+ {
+ "name": "Ultrasonic",
+ "description": "Demonstrate maintaining a set distance using an ultrasonic sensor.",
+ "tags": [
+ "Robot and Motor",
+ "Complete List",
+ "Sensors",
+ "Analog"
+ ]
+ },
+ {
+ "name": "UltrasonicPID",
+ "description": "Demonstrate maintaining a set distance using an ultrasonic sensor and PID control.",
+ "tags": [
+ "Robot and Motor",
+ "Complete List",
+ "Sensors",
+ "Analog"
+ ]
+ },
+ {
+ "name": "Gyro",
+ "description": "An example program showing how to drive straight with using a gyro sensor.",
+ "tags": [
+ "Robot and Motor",
+ "Complete List",
+ "Sensors",
+ "Analog",
+ "Joystick"
+ ]
+ },
+ {
+ "name": "Gyro Mecanum",
+ "description": "An example program showing how to perform mecanum drive with field oriented controls.",
+ "tags": [
+ "Robot and Motor",
+ "Complete List",
+ "Sensors",
+ "Analog",
+ "Joysitck"
+ ]
+ },
+ {
+ "name": "PotentiometerPID",
+ "description": "An example to demonstrate the use of a potentiometer and PID control to reach elevator position setpoints.",
+ "tags": [
+ "Joystick",
+ "Actuators",
+ "Complete List",
+ "Sensors",
+ "Analog"
+ ]
+ },
+ {
+ "name": "Getting Started",
+ "description": "An example program which demonstrates the simplest autonomous and teleoperated routines.",
+ "tags": [
+ "Getting Started with C++",
+ "Complete List"
+ ]
+ },
+ {
+ "name": "Simple Vision",
+ "description": "The minimal program to acquire images from an attached USB camera on the robot and send them to the dashboard.",
+ "tags": [
+ "Vision",
+ "Complete List"
+ ]
+ },
+ {
+ "name": "Intermediate Vision",
+ "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.",
+ "tags": [
+ "Vision",
+ "Complete List"
+ ]
+ },
+ {
+ "name": "Axis Camera Sample",
+ "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.",
+ "tags": [
+ "Vision",
+ "Complete List"
+ ]
+ },
+ {
+ "name": "GearsBot",
+ "description": "A fully functional example CommandBased program for WPIs GearsBot robot. This code can run on your computer if it supports simulation.",
+ "tags": [
+ "CommandBased Robot",
+ "Complete List"
+ ]
+ },
+ {
+ "name": "PacGoat",
+ "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.",
+ "tags": [
+ "CommandBased Robot",
+ "Complete List"
+ ]
+ }
+]
diff --git a/wpilibcExamples/src/main/cpp/templates/templates.json b/wpilibcExamples/src/main/cpp/templates/templates.json
new file mode 100644
index 0000000000..e231663ce3
--- /dev/null
+++ b/wpilibcExamples/src/main/cpp/templates/templates.json
@@ -0,0 +1,34 @@
+[
+ {
+ "name": "Iterative Robot",
+ "description": "Iterative style",
+ "tags": [
+ "Iterative"
+ ],
+ "foldername": "iterative"
+ },
+ {
+ "name": "Timed Robot",
+ "description": "Timed style",
+ "tags": [
+ "Timed"
+ ],
+ "foldername": "timed"
+ },
+ {
+ "name": "Command Robot",
+ "description": "Command style",
+ "tags": [
+ "Command"
+ ],
+ "foldername": "command"
+ },
+ {
+ "name": "Sample Robot",
+ "description": "Sample style",
+ "tags": [
+ "Sample"
+ ],
+ "foldername": "sample"
+ }
+]
diff --git a/wpilibjExamples/examples.xml b/wpilibjExamples/examples.xml
deleted file mode 100755
index d8988adf1b..0000000000
--- a/wpilibjExamples/examples.xml
+++ /dev/null
@@ -1,340 +0,0 @@
-
-
-
-
-
- Getting Started with Java
- Examples for getting started with FRC Java
-
-
- Actuators
- Example programs that demonstrate the use of various actuators
-
-
- Analog
- Examples programs that show different uses of analog inputs,
- outputs and various analog sensors
-
-
- CAN
- Example programs that demonstrate the use of the CAN components in the control
- system
-
-
- Digital
- Example programs that demonstrate the sensors that use the digital I/O ports
-
-
- I2C
- Example programs that demonstrate the use of I2C and various sensors that use
- it
-
-
- Joystick
- Example programs that demonstate different uses of joysticks for robot
- driving
-
-
- NetworkTables
- Examples of how to use NetworkTables to accomplish a
- variety of tasks such as sending and receiving values to both
- dashboards and co-processors.
-
-
- Pneumatics
- Example programs that demonstrate the use of the compressor and solenoids
-
-
- Robot and Motor
- Example programs that demonstrate driving a robot and motors including safety,
- servos, etc.
-
-
- Safety
- Example programs that demonstate the motor safety classes and how to use them
- with your programs
-
-
- Sensors
- Example programs that demonstrate the use of the various commonly used sensors
- on FRC robots
-
-
- SPI
- Example programs that demonstrate the use of the SPI bus and sensors that
- connect to it
-
-
- Vision
- Example programs that demonstrate the use of cameras and image processing
-
-
- Complete Robot
- Complete Robot example programs
-
-
-
-
- Getting Started
- An example program which demonstrates the simplest autonomous and
- teleoperated routines.
-
- Getting Started with Java
-
-
- src/$package-dir
-
-
-
-
-
-
- Tank Drive
- Demonstrate the use of the RobotDrive class doing teleop driving with tank
- steering
-
- Actuators
- Joystick
- Robot and Motor
- Safety
-
-
- src/$package-dir
-
-
-
-
-
-
- Mecanum Drive
- Demonstrate the use of the RobotDrive class doing teleop driving with Mecanum
- steering
-
- Actuators
- Joystick
- Robot and Motor
- Safety
-
-
- src/$package-dir
-
-
-
-
-
-
- Ultrasonic
- Demonstrate maintaining a set distance using an ultrasonic sensor.
-
- Sensors
- Robot and Motor
- Analog
-
-
- src/$package-dir
-
-
-
-
-
-
- Ultrasonic PID
- Demonstrate maintaining a set distance using an ultrasonic sensor and PID
- Control.
-
- Sensors
- Robot and Motor
- Analog
-
-
- src/$package-dir
-
-
-
-
-
-
- Potentiometer PID
- An example to demonstrate the use of a potentiometer and PID control to reach
- elevator position setpoints.
-
- Sensors
- Actuators
- Analog
- Joystick
-
-
- src/$package-dir
-
-
-
-
-
-
- Gyro
- An example program showing how to drive straight with using a gyro sensor.
-
- Sensors
- Robot and Motor
- Analog
- Joystick
-
-
- src/$package-dir
-
-
-
-
-
-
- Gyro Mecanum
- An example program showing how to perform mecanum drive with field oriented
- controls.
-
- Sensors
- Robot and Motor
- Analog
- Joystick
-
-
- src/$package-dir
-
-
-
-
-
-
- Motor Controller
- Demonstrate controlling a single motor with a joystick
-
- Actuators
- Joystick
- Robot and Motor
-
-
- src/$package-dir
-
-
-
-
-
-
- GearsBot
- A fully functional example CommandBased program for WPIs GearsBot robot. This
- code can run on your computer if it supports simulation.
-
- Complete Robot
-
- /usr/share/frcsim/worlds/GearsBotDemo.world
-
- src/$package-dir
- src/$package-dir/commands
- src/$package-dir/subsystems
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PacGoat
- A fully functional example CommandBased program for FRC Team 190's 2014
- robot. This code can run on your computer if it supports simulation.
-
- Complete Robot
-
- /usr/share/frcsim/worlds/PacGoat2014.world
-
- src/$package-dir
- src/$package-dir/commands
- src/$package-dir/subsystems
- src/$package-dir/triggers
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Simple Vision
- Demonstrate the use of the CameraServer class to stream from a USB Webcam
- without processing the images.
-
- Vision
- Complete List
-
-
- src/$package-dir
-
-
-
-
-
-
- Intermediate Vision
- Demonstrate the use of the NIVision class to capture image from a Webcam,
- process them, and then send them to the dashboard.
-
- Vision
- Complete List
-
-
- src/$package-dir
-
-
-
-
-
-
- Axis Camera Sample
- 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.
-
- Vision
-
-
- src/$package-dir
-
-
-
-
-
-
diff --git a/wpilibjExamples/publish.gradle b/wpilibjExamples/publish.gradle
index 3cded5c68c..b827926743 100644
--- a/wpilibjExamples/publish.gradle
+++ b/wpilibjExamples/publish.gradle
@@ -31,10 +31,6 @@ task javaExamplesZip(type: Zip) {
from('src/main/java/edu/wpi/first/wpilibj/examples') {
into 'examples'
}
-
- from('examples.xml') {
- into 'examples'
- }
}
task javaTemplatesZip(type: Zip) {
diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/examples.json b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/examples.json
new file mode 100644
index 0000000000..84cc0d55d8
--- /dev/null
+++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/examples.json
@@ -0,0 +1,137 @@
+[
+ {
+ "name": "Getting Started",
+ "description": "An example program which demonstrates the simplest autonomous and teleoperated routines.",
+ "tags": [
+ "Getting Started with Java"
+ ],
+ "foldername": "gettingstarted"
+ },
+ {
+ "name": "Tank Drive",
+ "description": "Demonstrate the use of the RobotDrive class doing teleop driving with tank steering",
+ "tags": [
+ "Actuators",
+ "Joystick",
+ "Robot and Motor",
+ "Safety"
+ ],
+ "foldername": "tankdrive"
+ },
+ {
+ "name": "Mecanum Drive",
+ "description": "Demonstrate the use of the RobotDrive class doing teleop driving with Mecanum steering",
+ "tags": [
+ "Actuators",
+ "Joystick",
+ "Robot and Motor",
+ "Safety"
+ ],
+ "foldername": "mecanumdrive"
+ },
+ {
+ "name": "Ultrasonic",
+ "description": "Demonstrate maintaining a set distance using an ultrasonic sensor.",
+ "tags": [
+ "Sensors",
+ "Robot and Motor",
+ "Analog"
+ ],
+ "foldername": "ultrasonic"
+ },
+ {
+ "name": "Ultrasonic PID",
+ "description": "Demonstrate maintaining a set distance using an ultrasonic sensor and PID Control.",
+ "tags": [
+ "Sensors",
+ "Robot and Motor",
+ "Analog"
+ ],
+ "foldername": "ultrasonicpid"
+ },
+ {
+ "name": "Potentiometer PID",
+ "description": "An example to demonstrate the use of a potentiometer and PID control to reach elevator position setpoints.",
+ "tags": [
+ "Sensors",
+ "Actuators",
+ "Analog",
+ "Joystick"
+ ],
+ "foldername": "potentiometerpid"
+ },
+ {
+ "name": "Gyro",
+ "description": "An example program showing how to drive straight with using a gyro sensor.",
+ "tags": [
+ "Sensors",
+ "Robot and Motor",
+ "Analog",
+ "Joystick"
+ ],
+ "foldername": "gyro"
+ },
+ {
+ "name": "Gyro Mecanum",
+ "description": "An example program showing how to perform mecanum drive with field oriented controls.",
+ "tags": [
+ "Sensors",
+ "Robot and Motor",
+ "Analog",
+ "Joystick"
+ ],
+ "foldername": "gyromecanum"
+ },
+ {
+ "name": "Motor Controller",
+ "description": "Demonstrate controlling a single motor with a joystick",
+ "tags": [
+ "Actuators",
+ "Joystick",
+ "Robot and Motor"
+ ],
+ "foldername": "motorcontrol"
+ },
+ {
+ "name": "GearsBot",
+ "description": "A fully functional example CommandBased program for WPIs GearsBot robot. This code can run on your computer if it supports simulation.",
+ "tags": [
+ "Complete Robot"
+ ],
+ "foldername": "gearsbot"
+ },
+ {
+ "name": "PacGoat",
+ "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.",
+ "tags": [
+ "Complete Robot"
+ ],
+ "foldername": "pacgoat"
+ },
+ {
+ "name": "Simple Vision",
+ "description": "Demonstrate the use of the CameraServer class to stream from a USB Webcam without processing the images.",
+ "tags": [
+ "Vision",
+ "Complete List"
+ ],
+ "foldername": "simplevision"
+ },
+ {
+ "name": "Intermediate Vision",
+ "description": "Demonstrate the use of the NIVision class to capture image from a Webcam, process them, and then send them to the dashboard.",
+ "tags": [
+ "Vision",
+ "Complete List"
+ ],
+ "foldername": "intermediatevision"
+ },
+ {
+ "name": "Axis Camera Sample",
+ "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.",
+ "tags": [
+ "Vision"
+ ],
+ "foldername": "axiscamera"
+ }
+]
diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/templates/templates.json b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/templates/templates.json
new file mode 100644
index 0000000000..ab49ca29f3
--- /dev/null
+++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/templates/templates.json
@@ -0,0 +1,34 @@
+[
+ {
+ "name": "Iterative Robot",
+ "description": "Iterative style",
+ "tags": [
+ "Iterative"
+ ],
+ "foldername": "iterative"
+ },
+ {
+ "name": "Timed Robot",
+ "description": "Timed style",
+ "tags": [
+ "Timed"
+ ],
+ "foldername": "timed"
+ },
+ {
+ "name": "Command Robot",
+ "description": "Command style",
+ "tags": [
+ "Command"
+ ],
+ "foldername": "commandbased"
+ },
+ {
+ "name": "Sample Robot",
+ "description": "Sample style",
+ "tags": [
+ "Sample"
+ ],
+ "foldername": "sample"
+ }
+]