Refactor y2020.json into per-node files
It was getting unwieldy
Change-Id: I34ead56597363aac88668401a424f2383d29d309
diff --git a/y2020/BUILD b/y2020/BUILD
index 5b7560d..8beb799 100644
--- a/y2020/BUILD
+++ b/y2020/BUILD
@@ -138,21 +138,62 @@
name = "config",
src = "y2020.json",
flatbuffers = [
- ":setpoint_fbs",
"//aos/network:message_bridge_client_fbs",
"//aos/network:message_bridge_server_fbs",
"//aos/network:timestamp_fbs",
- "//y2019/control_loops/drivetrain:target_selector_fbs",
- "//y2020/control_loops/superstructure:superstructure_goal_fbs",
- "//y2020/control_loops/superstructure:superstructure_output_fbs",
- "//y2020/control_loops/superstructure:superstructure_position_fbs",
- "//y2020/control_loops/superstructure:superstructure_status_fbs",
"//y2020/vision/sift:sift_fbs",
"//y2020/vision/sift:sift_training_fbs",
"//y2020/vision:vision_fbs",
],
visibility = ["//visibility:public"],
deps = [
+ ":config_pi1",
+ ":config_pi2",
+ ":config_pi3",
+ ":config_roborio",
+ ],
+)
+
+[
+ aos_config(
+ name = "config_" + pi,
+ src = "y2020_" + pi + ".json",
+ flatbuffers = [
+ "//aos/network:message_bridge_client_fbs",
+ "//aos/network:message_bridge_server_fbs",
+ "//aos/network:timestamp_fbs",
+ "//y2020/vision/sift:sift_fbs",
+ "//y2020/vision/sift:sift_training_fbs",
+ "//y2020/vision:vision_fbs",
+ ],
+ visibility = ["//visibility:public"],
+ deps = [
+ "//aos/events:config",
+ ],
+ )
+ for pi in [
+ "pi1",
+ "pi2",
+ "pi3",
+ ]
+]
+
+aos_config(
+ name = "config_roborio",
+ src = "y2020_roborio.json",
+ flatbuffers = [
+ ":setpoint_fbs",
+ "//aos/network:message_bridge_client_fbs",
+ "//aos/network:message_bridge_server_fbs",
+ "//aos/network:timestamp_fbs",
+ "//y2020/control_loops/superstructure:superstructure_goal_fbs",
+ "//y2019/control_loops/drivetrain:target_selector_fbs",
+ "//y2020/control_loops/superstructure:superstructure_output_fbs",
+ "//y2020/control_loops/superstructure:superstructure_position_fbs",
+ "//y2020/control_loops/superstructure:superstructure_status_fbs",
+ ],
+ deps = [
+ "//aos/events:config",
"//aos/robot_state:config",
"//frc971/autonomous:config",
"//frc971/control_loops/drivetrain:config",
@@ -171,11 +212,11 @@
srcs = ["web_proxy.sh"],
data = [
":config.json",
- "//y2020/www:field_main_bundle",
"//aos/network:web_proxy_main",
+ "//y2020/www:camera_main_bundle",
+ "//y2020/www:field_main_bundle",
"//y2020/www:files",
"//y2020/www:flatbuffers",
- "//y2020/www:camera_main_bundle",
],
)
diff --git a/y2020/y2020.json b/y2020/y2020.json
index 285a23d..a0a465a 100644
--- a/y2020/y2020.json
+++ b/y2020/y2020.json
@@ -1,580 +1,9 @@
{
"channel_storage_duration": 5000000000,
- "channels":
- [
- {
- "name": "/aos/roborio",
- "type": "aos.JoystickState",
- "source_node": "roborio",
- "frequency": 75
- },
- {
- "name": "/aos/roborio",
- "type": "aos.RobotState",
- "source_node": "roborio",
- "frequency": 200,
- "destination_nodes": [
- {
- "name": "pi1",
- "priority": 2,
- "timestamp_logger": "LOCAL_LOGGER",
- "time_to_live": 10000000
- },
- {
- "name": "pi2",
- "priority": 2,
- "timestamp_logger": "LOCAL_LOGGER",
- "time_to_live": 10000000
- },
- {
- "name": "pi3",
- "priority": 2,
- "timestamp_logger": "LOCAL_LOGGER",
- "time_to_live": 10000000
- }
- ]
- },
- {
- "name": "/aos/roborio",
- "type": "aos.timing.Report",
- "source_node": "roborio",
- "frequency": 50,
- "num_senders": 20,
- "max_size": 2048
- },
- {
- "name": "/aos/roborio",
- "type": "aos.logging.LogMessageFbs",
- "source_node": "roborio",
- "frequency": 400,
- "num_senders": 20
- },
- {
- "name": "/aos/roborio",
- "type": "aos.message_bridge.ServerStatistics",
- "source_node": "roborio",
- "frequency": 2,
- "num_senders": 2
- },
- {
- "name": "/aos/roborio",
- "type": "aos.message_bridge.ClientStatistics",
- "source_node": "roborio",
- "frequency": 10,
- "num_senders": 2
- },
- {
- "name": "/aos/roborio",
- "type": "aos.message_bridge.Timestamp",
- "source_node": "roborio",
- "frequency": 10,
- "num_senders": 2,
- "max_size": 200,
- "destination_nodes": [
- {
- "name": "pi1",
- "priority": 1,
- "time_to_live": 5000000
- },
- {
- "name": "pi2",
- "priority": 1,
- "time_to_live": 5000000
- },
- {
- "name": "pi3",
- "priority": 1,
- "time_to_live": 5000000
- }
- ]
- },
- {
- "name": "/aos/pi1",
- "type": "aos.timing.Report",
- "source_node": "pi1",
- "frequency": 50,
- "num_senders": 20,
- "max_size": 2048
- },
- {
- "name": "/aos/pi1",
- "type": "aos.logging.LogMessageFbs",
- "source_node": "pi1",
- "frequency": 200,
- "num_senders": 20
- },
- {
- "name": "/aos/pi1",
- "type": "aos.message_bridge.ServerStatistics",
- "source_node": "pi1",
- "frequency": 2,
- "num_senders": 2
- },
- {
- "name": "/aos/pi1",
- "type": "aos.message_bridge.ClientStatistics",
- "source_node": "pi1",
- "frequency": 10,
- "num_senders": 2
- },
- {
- "name": "/aos/pi1",
- "type": "aos.message_bridge.Timestamp",
- "source_node": "pi1",
- "frequency": 10,
- "num_senders": 2,
- "max_size": 200,
- "destination_nodes": [
- {
- "name": "roborio",
- "priority": 1,
- "time_to_live": 5000000
- }
- ]
- },
- {
- "name": "/aos/pi2",
- "type": "aos.timing.Report",
- "source_node": "pi2",
- "frequency": 50,
- "num_senders": 20,
- "max_size": 2048
- },
- {
- "name": "/aos/pi2",
- "type": "aos.logging.LogMessageFbs",
- "source_node": "pi2",
- "frequency": 200,
- "num_senders": 20
- },
- {
- "name": "/aos/pi2",
- "type": "aos.message_bridge.ServerStatistics",
- "source_node": "pi2",
- "frequency": 2,
- "num_senders": 2
- },
- {
- "name": "/aos/pi2",
- "type": "aos.message_bridge.ClientStatistics",
- "source_node": "pi2",
- "frequency": 10,
- "num_senders": 2
- },
- {
- "name": "/aos/pi2",
- "type": "aos.message_bridge.Timestamp",
- "source_node": "pi2",
- "frequency": 10,
- "num_senders": 2,
- "max_size": 200,
- "destination_nodes": [
- {
- "name": "roborio",
- "priority": 1,
- "time_to_live": 5000000
- }
- ]
- },
- {
- "name": "/aos/pi3",
- "type": "aos.timing.Report",
- "source_node": "pi3",
- "frequency": 50,
- "num_senders": 20,
- "max_size": 2048
- },
- {
- "name": "/aos/pi3",
- "type": "aos.logging.LogMessageFbs",
- "source_node": "pi3",
- "frequency": 200,
- "num_senders": 20
- },
- {
- "name": "/aos/pi3",
- "type": "aos.message_bridge.ServerStatistics",
- "source_node": "pi3",
- "frequency": 2,
- "num_senders": 2
- },
- {
- "name": "/aos/pi3",
- "type": "aos.message_bridge.ClientStatistics",
- "source_node": "pi3",
- "frequency": 10,
- "num_senders": 2
- },
- {
- "name": "/aos/pi3",
- "type": "aos.message_bridge.Timestamp",
- "source_node": "pi3",
- "frequency": 10,
- "num_senders": 2,
- "max_size": 200,
- "destination_nodes": [
- {
- "name": "roborio",
- "priority": 1,
- "time_to_live": 5000000
- }
- ]
- },
- {
- "name": "/superstructure",
- "type": "y2020.control_loops.superstructure.Goal",
- "source_node": "roborio",
- "frequency": 200
- },
- {
- "name": "/superstructure",
- "type": "y2020.control_loops.superstructure.Status",
- "source_node": "roborio",
- "frequency": 200,
- "num_senders": 2
- },
- {
- "name": "/superstructure",
- "type": "y2020.control_loops.superstructure.Output",
- "source_node": "roborio",
- "frequency": 200,
- "num_senders": 2
- },
- {
- "name": "/superstructure",
- "type": "y2020.control_loops.superstructure.Position",
- "source_node": "roborio",
- "frequency": 200,
- "num_senders": 2
- },
- {
- "name": "/superstructure",
- "type": "y2020.joysticks.Setpoint",
- "source_node": "roborio",
- "num_senders": 2
- },
- {
- "name": "/drivetrain",
- "type": "frc971.IMUValues",
- "source_node": "roborio",
- "frequency": 2000,
- "num_senders": 2
- },
- {
- "name": "/drivetrain",
- "type": "frc971.sensors.GyroReading",
- "source_node": "roborio",
- "frequency": 200,
- "num_senders": 2
- },
- {
- "name": "/drivetrain",
- "type": "frc971.sensors.Uid",
- "source_node": "roborio",
- "frequency": 200,
- "num_senders": 2
- },
- {
- "name": "/drivetrain",
- "type": "frc971.control_loops.drivetrain.Goal",
- "source_node": "roborio",
- "frequency": 200
- },
- {
- "name": "/drivetrain",
- "type": "frc971.control_loops.drivetrain.Position",
- "source_node": "roborio",
- "frequency": 200,
- "num_senders": 2
- },
- {
- "name": "/drivetrain",
- "type": "frc971.control_loops.drivetrain.Status",
- "source_node": "roborio",
- "frequency": 200,
- "max_size": 2000,
- "num_senders": 2,
- "destination_nodes": [
- {
- "name": "pi1",
- "priority": 5,
- "time_to_live": 5000000
- },
- {
- "name": "pi2",
- "priority": 5,
- "time_to_live": 5000000
- },
- {
- "name": "pi3",
- "priority": 5,
- "time_to_live": 5000000
- }
- ]
- },
- {
- "name": "/drivetrain",
- "type": "frc971.control_loops.drivetrain.Output",
- "source_node": "roborio",
- "frequency": 200,
- "num_senders": 2
- },
- {
- "name": "/drivetrain",
- "type": "frc971.control_loops.drivetrain.LocalizerControl",
- "source_node": "roborio",
- "frequency": 200
- },
- {
- "name": "/drivetrain",
- "type": "y2019.control_loops.drivetrain.TargetSelectorHint",
- "source_node": "roborio"
- },
- {
- "name": "/pi1/camera",
- "type": "frc971.vision.CameraImage",
- "source_node": "pi1",
- "frequency": 25,
- "max_size": 620000,
- "num_senders": 18
- },
- {
- "name": "/pi1/camera",
- "type": "frc971.vision.sift.ImageMatchResult",
- "source_node": "pi1",
- "logger": "LOCAL_AND_REMOTE_LOGGER",
- "logger_node": "roborio",
- "frequency": 25,
- "max_size": 10000,
- "destination_nodes": [
- {
- "name": "roborio",
- "priority": 1,
- "time_to_live": 5000000
- }
- ]
- },
- {
- "name": "/pi1/camera/detailed",
- "type": "frc971.vision.sift.ImageMatchResult",
- "source_node": "pi1",
- "frequency": 25,
- "max_size": 1000000
- },
- {
- "name": "/pi1/camera",
- "type": "frc971.vision.sift.TrainingData",
- "source_node": "pi1",
- "frequency": 2,
- "max_size": 2000000
- },
- {
- "name": "/pi2/camera",
- "type": "frc971.vision.CameraImage",
- "source_node": "pi2",
- "frequency": 25,
- "max_size": 620000,
- "num_senders": 18
- },
- {
- "name": "/pi2/camera",
- "type": "frc971.vision.sift.ImageMatchResult",
- "source_node": "pi2",
- "logger": "LOCAL_AND_REMOTE_LOGGER",
- "logger_node": "roborio",
- "frequency": 25,
- "max_size": 300000,
- "destination_nodes": [
- {
- "name": "roborio",
- "priority": 1,
- "time_to_live": 5000000
- }
- ]
- },
- {
- "name": "/pi2/camera/detailed",
- "type": "frc971.vision.sift.ImageMatchResult",
- "source_node": "pi2",
- "frequency": 25,
- "max_size": 1000000
- },
- {
- "name": "/pi2/camera",
- "type": "frc971.vision.sift.TrainingData",
- "source_node": "pi2",
- "frequency": 2,
- "max_size": 2000000
- },
- {
- "name": "/pi3/camera",
- "type": "frc971.vision.CameraImage",
- "source_node": "pi3",
- "frequency": 25,
- "max_size": 620000,
- "num_senders": 18
- },
- {
- "name": "/pi3/camera",
- "type": "frc971.vision.sift.ImageMatchResult",
- "source_node": "pi3",
- "logger": "LOCAL_AND_REMOTE_LOGGER",
- "logger_node": "roborio",
- "frequency": 25,
- "max_size": 10000,
- "destination_nodes": [
- {
- "name": "roborio",
- "priority": 1,
- "time_to_live": 5000000
- }
- ]
- },
- {
- "name": "/pi3/camera/detailed",
- "type": "frc971.vision.sift.ImageMatchResult",
- "source_node": "pi3",
- "frequency": 25,
- "max_size": 1000000
- },
- {
- "name": "/pi3/camera",
- "type": "frc971.vision.sift.TrainingData",
- "source_node": "pi3",
- "frequency": 2,
- "max_size": 2000000
- },
- {
- "name": "/autonomous",
- "type": "aos.common.actions.Status",
- "source_node": "roborio"
- },
- {
- "name": "/autonomous",
- "type": "frc971.autonomous.Goal",
- "source_node": "roborio"
- },
- {
- "name": "/autonomous",
- "type": "frc971.autonomous.AutonomousMode",
- "source_node": "roborio",
- "frequency": 200
- },
- {
- "name": "/aos/roborio",
- "type": "frc971.PDPValues",
- "source_node": "roborio",
- "frequency": 50
- },
- {
- "name": "/aos/roborio",
- "type": "frc971.wpilib.PneumaticsToLog",
- "source_node": "roborio",
- "frequency": 50
- }
- ],
- "applications": [
- {
- "name": "drivetrain"
- },
- {
- "name": "camera_reader"
- }
- ],
"maps": [
{
"match": {
"name": "/aos",
- "source_node": "roborio"
- },
- "rename": {
- "name": "/aos/roborio"
- }
- },
- {
- "match": {
- "name": "/aos",
- "source_node": "pi1"
- },
- "rename": {
- "name": "/aos/pi1"
- }
- },
- {
- "match": {
- "name": "/camera",
- "source_node": "pi1"
- },
- "rename": {
- "name": "/pi1/camera"
- }
- },
- {
- "match": {
- "name": "/camera/detailed",
- "source_node": "pi1"
- },
- "rename": {
- "name": "/pi1/camera/detailed"
- }
- },
- {
- "match": {
- "name": "/aos",
- "source_node": "pi2"
- },
- "rename": {
- "name": "/aos/pi2"
- }
- },
- {
- "match": {
- "name": "/camera",
- "source_node": "pi2"
- },
- "rename": {
- "name": "/pi2/camera"
- }
- },
- {
- "match": {
- "name": "/camera/detailed",
- "source_node": "pi2"
- },
- "rename": {
- "name": "/pi2/camera/detailed"
- }
- },
- {
- "match": {
- "name": "/aos",
- "source_node": "pi3"
- },
- "rename": {
- "name": "/aos/pi3"
- }
- },
- {
- "match": {
- "name": "/camera",
- "source_node": "pi3"
- },
- "rename": {
- "name": "/pi3/camera"
- }
- },
- {
- "match": {
- "name": "/camera/detailed",
- "source_node": "pi3"
- },
- "rename": {
- "name": "/pi3/camera/detailed"
- }
- },
- {
- "match": {
- "name": "/aos",
"type": "aos.RobotState"
},
"rename": {
@@ -582,50 +11,10 @@
}
}
],
- "nodes": [
- {
- "name": "roborio",
- "hostname": "roborio",
- "hostnames": [
- "roboRIO-971-FRC",
- "roboRIO-7971-FRC",
- "roboRIO-8971-FRC",
- "roboRIO-9971-FRC"
- ],
- "port": 9971
- },
- {
- "name": "pi1",
- "hostname": "pi1",
- "hostnames": [
- "pi-971-1",
- "pi-7971-1",
- "pi-8971-1",
- "pi-9971-1"
- ],
- "port": 9971
- },
- {
- "name": "pi2",
- "hostname": "pi2",
- "hostnames": [
- "pi-971-2",
- "pi-7971-2",
- "pi-8971-2",
- "pi-9971-2"
- ],
- "port": 9971
- },
- {
- "name": "pi3",
- "hostname": "pi3",
- "hostnames": [
- "pi-971-3",
- "pi-7971-3",
- "pi-8971-3",
- "pi-9971-3"
- ],
- "port": 9971
- }
+ "imports": [
+ "y2020_roborio.json",
+ "y2020_pi1.json",
+ "y2020_pi2.json",
+ "y2020_pi3.json"
]
}
diff --git a/y2020/y2020_pi1.json b/y2020/y2020_pi1.json
new file mode 100644
index 0000000..f14996c
--- /dev/null
+++ b/y2020/y2020_pi1.json
@@ -0,0 +1,132 @@
+{
+ "channels":
+ [
+ {
+ "name": "/aos/pi1",
+ "type": "aos.timing.Report",
+ "source_node": "pi1",
+ "frequency": 50,
+ "num_senders": 20,
+ "max_size": 2048
+ },
+ {
+ "name": "/aos/pi1",
+ "type": "aos.logging.LogMessageFbs",
+ "source_node": "pi1",
+ "frequency": 200,
+ "num_senders": 20
+ },
+ {
+ "name": "/aos/pi1",
+ "type": "aos.message_bridge.ServerStatistics",
+ "source_node": "pi1",
+ "frequency": 2,
+ "num_senders": 2
+ },
+ {
+ "name": "/aos/pi1",
+ "type": "aos.message_bridge.ClientStatistics",
+ "source_node": "pi1",
+ "frequency": 10,
+ "num_senders": 2
+ },
+ {
+ "name": "/aos/pi1",
+ "type": "aos.message_bridge.Timestamp",
+ "source_node": "pi1",
+ "frequency": 10,
+ "num_senders": 2,
+ "max_size": 200,
+ "destination_nodes": [
+ {
+ "name": "roborio",
+ "priority": 1,
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/pi1/camera",
+ "type": "frc971.vision.CameraImage",
+ "source_node": "pi1",
+ "frequency": 25,
+ "max_size": 620000,
+ "num_senders": 18
+ },
+ {
+ "name": "/pi1/camera",
+ "type": "frc971.vision.sift.ImageMatchResult",
+ "source_node": "pi1",
+ "logger": "LOCAL_AND_REMOTE_LOGGER",
+ "logger_node": "roborio",
+ "frequency": 25,
+ "max_size": 10000,
+ "destination_nodes": [
+ {
+ "name": "roborio",
+ "priority": 1,
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/pi1/camera/detailed",
+ "type": "frc971.vision.sift.ImageMatchResult",
+ "source_node": "pi1",
+ "frequency": 25,
+ "max_size": 1000000
+ },
+ {
+ "name": "/pi1/camera",
+ "type": "frc971.vision.sift.TrainingData",
+ "source_node": "pi1",
+ "frequency": 2,
+ "max_size": 2000000
+ }
+ ],
+ "maps": [
+ {
+ "match": {
+ "name": "/aos",
+ "source_node": "pi1"
+ },
+ "rename": {
+ "name": "/aos/pi1"
+ }
+ },
+ {
+ "match": {
+ "name": "/camera",
+ "source_node": "pi1"
+ },
+ "rename": {
+ "name": "/pi1/camera"
+ }
+ },
+ {
+ "match": {
+ "name": "/camera/detailed",
+ "source_node": "pi1"
+ },
+ "rename": {
+ "name": "/pi1/camera/detailed"
+ }
+ }
+ ],
+ "nodes": [
+ {
+ "name": "pi1",
+ "hostname": "pi1",
+ "hostnames": [
+ "pi-971-1",
+ "pi-7971-1",
+ "pi-8971-1",
+ "pi-9971-1"
+ ],
+ "port": 9971
+ },
+ {
+ "name": "roborio"
+ }
+ ]
+}
diff --git a/y2020/y2020_pi2.json b/y2020/y2020_pi2.json
new file mode 100644
index 0000000..19b6586
--- /dev/null
+++ b/y2020/y2020_pi2.json
@@ -0,0 +1,132 @@
+{
+ "channels":
+ [
+ {
+ "name": "/aos/pi2",
+ "type": "aos.timing.Report",
+ "source_node": "pi2",
+ "frequency": 50,
+ "num_senders": 20,
+ "max_size": 2048
+ },
+ {
+ "name": "/aos/pi2",
+ "type": "aos.logging.LogMessageFbs",
+ "source_node": "pi2",
+ "frequency": 200,
+ "num_senders": 20
+ },
+ {
+ "name": "/aos/pi2",
+ "type": "aos.message_bridge.ServerStatistics",
+ "source_node": "pi2",
+ "frequency": 2,
+ "num_senders": 2
+ },
+ {
+ "name": "/aos/pi2",
+ "type": "aos.message_bridge.ClientStatistics",
+ "source_node": "pi2",
+ "frequency": 10,
+ "num_senders": 2
+ },
+ {
+ "name": "/aos/pi2",
+ "type": "aos.message_bridge.Timestamp",
+ "source_node": "pi2",
+ "frequency": 10,
+ "num_senders": 2,
+ "max_size": 200,
+ "destination_nodes": [
+ {
+ "name": "roborio",
+ "priority": 1,
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/pi2/camera",
+ "type": "frc971.vision.CameraImage",
+ "source_node": "pi2",
+ "frequency": 25,
+ "max_size": 620000,
+ "num_senders": 18
+ },
+ {
+ "name": "/pi2/camera",
+ "type": "frc971.vision.sift.ImageMatchResult",
+ "source_node": "pi2",
+ "logger": "LOCAL_AND_REMOTE_LOGGER",
+ "logger_node": "roborio",
+ "frequency": 25,
+ "max_size": 300000,
+ "destination_nodes": [
+ {
+ "name": "roborio",
+ "priority": 1,
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/pi2/camera/detailed",
+ "type": "frc971.vision.sift.ImageMatchResult",
+ "source_node": "pi2",
+ "frequency": 25,
+ "max_size": 1000000
+ },
+ {
+ "name": "/pi2/camera",
+ "type": "frc971.vision.sift.TrainingData",
+ "source_node": "pi2",
+ "frequency": 2,
+ "max_size": 2000000
+ }
+ ],
+ "maps": [
+ {
+ "match": {
+ "name": "/aos",
+ "source_node": "pi2"
+ },
+ "rename": {
+ "name": "/aos/pi2"
+ }
+ },
+ {
+ "match": {
+ "name": "/camera",
+ "source_node": "pi2"
+ },
+ "rename": {
+ "name": "/pi2/camera"
+ }
+ },
+ {
+ "match": {
+ "name": "/camera/detailed",
+ "source_node": "pi2"
+ },
+ "rename": {
+ "name": "/pi2/camera/detailed"
+ }
+ }
+ ],
+ "nodes": [
+ {
+ "name": "pi2",
+ "hostname": "pi2",
+ "hostnames": [
+ "pi-971-2",
+ "pi-7971-2",
+ "pi-8971-2",
+ "pi-9971-2"
+ ],
+ "port": 9971
+ },
+ {
+ "name": "roborio"
+ }
+ ]
+}
diff --git a/y2020/y2020_pi3.json b/y2020/y2020_pi3.json
new file mode 100644
index 0000000..727e41d
--- /dev/null
+++ b/y2020/y2020_pi3.json
@@ -0,0 +1,132 @@
+{
+ "channels":
+ [
+ {
+ "name": "/aos/pi3",
+ "type": "aos.timing.Report",
+ "source_node": "pi3",
+ "frequency": 50,
+ "num_senders": 20,
+ "max_size": 2048
+ },
+ {
+ "name": "/aos/pi3",
+ "type": "aos.logging.LogMessageFbs",
+ "source_node": "pi3",
+ "frequency": 200,
+ "num_senders": 20
+ },
+ {
+ "name": "/aos/pi3",
+ "type": "aos.message_bridge.ServerStatistics",
+ "source_node": "pi3",
+ "frequency": 2,
+ "num_senders": 2
+ },
+ {
+ "name": "/aos/pi3",
+ "type": "aos.message_bridge.ClientStatistics",
+ "source_node": "pi3",
+ "frequency": 10,
+ "num_senders": 2
+ },
+ {
+ "name": "/aos/pi3",
+ "type": "aos.message_bridge.Timestamp",
+ "source_node": "pi3",
+ "frequency": 10,
+ "num_senders": 2,
+ "max_size": 200,
+ "destination_nodes": [
+ {
+ "name": "roborio",
+ "priority": 1,
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/pi3/camera",
+ "type": "frc971.vision.CameraImage",
+ "source_node": "pi3",
+ "frequency": 25,
+ "max_size": 620000,
+ "num_senders": 18
+ },
+ {
+ "name": "/pi3/camera",
+ "type": "frc971.vision.sift.ImageMatchResult",
+ "source_node": "pi3",
+ "logger": "LOCAL_AND_REMOTE_LOGGER",
+ "logger_node": "roborio",
+ "frequency": 25,
+ "max_size": 10000,
+ "destination_nodes": [
+ {
+ "name": "roborio",
+ "priority": 1,
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/pi3/camera/detailed",
+ "type": "frc971.vision.sift.ImageMatchResult",
+ "source_node": "pi3",
+ "frequency": 25,
+ "max_size": 1000000
+ },
+ {
+ "name": "/pi3/camera",
+ "type": "frc971.vision.sift.TrainingData",
+ "source_node": "pi3",
+ "frequency": 2,
+ "max_size": 2000000
+ }
+ ],
+ "maps": [
+ {
+ "match": {
+ "name": "/aos",
+ "source_node": "pi3"
+ },
+ "rename": {
+ "name": "/aos/pi3"
+ }
+ },
+ {
+ "match": {
+ "name": "/camera",
+ "source_node": "pi3"
+ },
+ "rename": {
+ "name": "/pi3/camera"
+ }
+ },
+ {
+ "match": {
+ "name": "/camera/detailed",
+ "source_node": "pi3"
+ },
+ "rename": {
+ "name": "/pi3/camera/detailed"
+ }
+ }
+ ],
+ "nodes": [
+ {
+ "name": "pi3",
+ "hostname": "pi3",
+ "hostnames": [
+ "pi-971-3",
+ "pi-7971-3",
+ "pi-8971-3",
+ "pi-9971-3"
+ ],
+ "port": 9971
+ },
+ {
+ "name": "roborio"
+ }
+ ]
+}
diff --git a/y2020/y2020_roborio.json b/y2020/y2020_roborio.json
new file mode 100644
index 0000000..86d9b7e
--- /dev/null
+++ b/y2020/y2020_roborio.json
@@ -0,0 +1,270 @@
+{
+ "channels":
+ [
+ {
+ "name": "/aos/roborio",
+ "type": "aos.JoystickState",
+ "source_node": "roborio",
+ "frequency": 75
+ },
+ {
+ "name": "/aos/roborio",
+ "type": "aos.RobotState",
+ "source_node": "roborio",
+ "frequency": 200,
+ "destination_nodes": [
+ {
+ "name": "pi1",
+ "priority": 2,
+ "timestamp_logger": "LOCAL_LOGGER",
+ "time_to_live": 10000000
+ },
+ {
+ "name": "pi2",
+ "priority": 2,
+ "timestamp_logger": "LOCAL_LOGGER",
+ "time_to_live": 10000000
+ },
+ {
+ "name": "pi3",
+ "priority": 2,
+ "timestamp_logger": "LOCAL_LOGGER",
+ "time_to_live": 10000000
+ }
+ ]
+ },
+ {
+ "name": "/aos/roborio",
+ "type": "aos.timing.Report",
+ "source_node": "roborio",
+ "frequency": 50,
+ "num_senders": 20,
+ "max_size": 2048
+ },
+ {
+ "name": "/aos/roborio",
+ "type": "aos.logging.LogMessageFbs",
+ "source_node": "roborio",
+ "frequency": 400,
+ "num_senders": 20
+ },
+ {
+ "name": "/aos/roborio",
+ "type": "aos.message_bridge.ServerStatistics",
+ "source_node": "roborio",
+ "frequency": 2,
+ "num_senders": 2
+ },
+ {
+ "name": "/aos/roborio",
+ "type": "aos.message_bridge.ClientStatistics",
+ "source_node": "roborio",
+ "frequency": 10,
+ "num_senders": 2
+ },
+ {
+ "name": "/aos/roborio",
+ "type": "aos.message_bridge.Timestamp",
+ "source_node": "roborio",
+ "frequency": 10,
+ "num_senders": 2,
+ "max_size": 200,
+ "destination_nodes": [
+ {
+ "name": "pi1",
+ "priority": 1,
+ "time_to_live": 5000000
+ },
+ {
+ "name": "pi2",
+ "priority": 1,
+ "time_to_live": 5000000
+ },
+ {
+ "name": "pi3",
+ "priority": 1,
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/superstructure",
+ "type": "y2020.control_loops.superstructure.Goal",
+ "source_node": "roborio",
+ "frequency": 200
+ },
+ {
+ "name": "/superstructure",
+ "type": "y2020.control_loops.superstructure.Status",
+ "source_node": "roborio",
+ "frequency": 200,
+ "num_senders": 2
+ },
+ {
+ "name": "/superstructure",
+ "type": "y2020.control_loops.superstructure.Output",
+ "source_node": "roborio",
+ "frequency": 200,
+ "num_senders": 2
+ },
+ {
+ "name": "/superstructure",
+ "type": "y2020.control_loops.superstructure.Position",
+ "source_node": "roborio",
+ "frequency": 200,
+ "num_senders": 2
+ },
+ {
+ "name": "/superstructure",
+ "type": "y2020.joysticks.Setpoint",
+ "source_node": "roborio",
+ "num_senders": 2
+ },
+ {
+ "name": "/drivetrain",
+ "type": "frc971.IMUValues",
+ "source_node": "roborio",
+ "frequency": 2000,
+ "num_senders": 2
+ },
+ {
+ "name": "/drivetrain",
+ "type": "frc971.sensors.GyroReading",
+ "source_node": "roborio",
+ "frequency": 200,
+ "num_senders": 2
+ },
+ {
+ "name": "/drivetrain",
+ "type": "frc971.sensors.Uid",
+ "source_node": "roborio",
+ "frequency": 200,
+ "num_senders": 2
+ },
+ {
+ "name": "/drivetrain",
+ "type": "frc971.control_loops.drivetrain.Goal",
+ "source_node": "roborio",
+ "frequency": 200
+ },
+ {
+ "name": "/drivetrain",
+ "type": "frc971.control_loops.drivetrain.Position",
+ "source_node": "roborio",
+ "frequency": 200,
+ "num_senders": 2
+ },
+ {
+ "name": "/drivetrain",
+ "type": "frc971.control_loops.drivetrain.Status",
+ "source_node": "roborio",
+ "frequency": 200,
+ "max_size": 2000,
+ "num_senders": 2,
+ "destination_nodes": [
+ {
+ "name": "pi1",
+ "priority": 5,
+ "time_to_live": 5000000
+ },
+ {
+ "name": "pi2",
+ "priority": 5,
+ "time_to_live": 5000000
+ },
+ {
+ "name": "pi3",
+ "priority": 5,
+ "time_to_live": 5000000
+ }
+ ]
+ },
+ {
+ "name": "/drivetrain",
+ "type": "frc971.control_loops.drivetrain.Output",
+ "source_node": "roborio",
+ "frequency": 200,
+ "num_senders": 2
+ },
+ {
+ "name": "/drivetrain",
+ "type": "frc971.control_loops.drivetrain.LocalizerControl",
+ "source_node": "roborio",
+ "frequency": 200
+ },
+ {
+ "name": "/drivetrain",
+ "type": "y2019.control_loops.drivetrain.TargetSelectorHint",
+ "source_node": "roborio"
+ },
+ {
+ "name": "/autonomous",
+ "type": "aos.common.actions.Status",
+ "source_node": "roborio"
+ },
+ {
+ "name": "/autonomous",
+ "type": "frc971.autonomous.Goal",
+ "source_node": "roborio"
+ },
+ {
+ "name": "/autonomous",
+ "type": "frc971.autonomous.AutonomousMode",
+ "source_node": "roborio",
+ "frequency": 200
+ },
+ {
+ "name": "/aos/roborio",
+ "type": "frc971.PDPValues",
+ "source_node": "roborio",
+ "frequency": 50
+ },
+ {
+ "name": "/aos/roborio",
+ "type": "frc971.wpilib.PneumaticsToLog",
+ "source_node": "roborio",
+ "frequency": 50
+ }
+ ],
+ "applications": [
+ {
+ "name": "drivetrain"
+ },
+ {
+ "name": "camera_reader"
+ }
+ ],
+ "maps": [
+ {
+ "match": {
+ "name": "/aos",
+ "source_node": "roborio"
+ },
+ "rename": {
+ "name": "/aos/roborio"
+ }
+ }
+ ],
+ "nodes": [
+ {
+ "name": "roborio",
+ "hostname": "roborio",
+ "hostnames": [
+ "roboRIO-971-FRC",
+ "roboRIO-7971-FRC",
+ "roboRIO-8971-FRC",
+ "roboRIO-9971-FRC"
+ ],
+ "port": 9971
+ },
+ {
+ "name": "pi1"
+ },
+ {
+ "name": "pi2"
+ },
+ {
+ "name": "pi3"
+ }
+ ]
+}