Skip to content

Source code for web-based roboRIO software development process

Notifications You must be signed in to change notification settings

RobotCasserole1736/CasseroleWebserver2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Casserole Webserver 2.0

Webserver 2.0 builds on previous implementations of website and websocket data transport software components designed to facilitate easy robot development workflows.

See the spec for more info.

This is a work in process.

Front-End

HTML5/JS, served from the roboRIO. No tools to install. Cross-platform (including tablets & mobile devices). Interfaces automatically scale to available view area.

No web development skills required. Visual appearance & configuration done from Java user code.

Dashboard

Super cool dashboard demo

  • Driver-Focused - At-A-Glance robot state notification
  • ISO-like iconography
  • Animation to keep visualization smooth even at slow data rates.
  • Webcam Display, including fullscreen
  • Autonomous chooser

Stripcharts

Super cool stripcharts demo

  • Multi-Chart time-axis synchronized zoom & pan.
  • Flexible Capture/display lists
  • Saves current configuration to local storage for easy recall on page reload
  • Same-units plotted on same-y-axis
  • Load data from file or view live from RIO.

Calibration

Super cool calibrations demo

  • Configurable min/max/default constraints
  • Coming soon: Save/Load reporting

Data Logs

Super cool log files demo

  • View user-generated .csv timeseries log files present on RIO
  • Download & Delete operations
  • View current logging status (actively creating new log, idle, etc.)

Build Info

Super cool build info demo

  • View gradle & git generated info at build time
  • Helps uniquely identify the software version running on the RIO

Back-End

Base Layer

NT4 - coming soon!

User Abstractions

On top of NT4, two main abstractions are implemented:

Signal

A Signal is a numeric (boolean, integer, floating point) value with an assigned name and unit.

It is tied to a single class-member variable in software. An @Signal annotation is the primary way to accomplish this.

A signal gathers timestamped values at runtime, which can be consumed in multiple ways.

Currently, the timestamped values are:

  1. Sent to NT4
  2. If in autonomous or teleop, sent to onboard .csv file logging infrastructure.

Currently, signal values are assumed to be generated on the roboRIO and consumed by one or more dashboard-like client interfaces.

Calibration

A Calibration is a floating-point value with an assigned name, unit, and default value. Optionally, it may also specify a minimum and maximum value.

All items are published to NT4 by the RIO.

The RIO owns the calibration's configuration and current value. Client programs may modify the current value via NT4.

The Calibration is tied to a specific object in java code, with a .get() method to get the current value.

Coming Soon:

  • User code may choose when to consume a new calibration value (EX: prohibit changing PID values while not in disabled).
    • Whether the calibration value update has been consumed or not will be reported in the UI.
  • Annotation-based calibration support.

About

Source code for web-based roboRIO software development process

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published