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.
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.
- 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
- 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.
- Configurable min/max/default constraints
- Coming soon: Save/Load reporting
- View user-generated .csv timeseries log files present on RIO
- Download & Delete operations
- View current logging status (actively creating new log, idle, etc.)
- View gradle & git generated info at build time
- Helps uniquely identify the software version running on the RIO
NT4 - coming soon!
On top of NT4, two main abstractions are implemented:
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:
- Sent to NT4
- 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.
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.