Rehabilitation Exoskeletons
Lower-limb gait rehab, upper-limb reach-grasp, and full-body robotic orthoses. SDK outputs discrete command events over digital I/O, serial, or UDP.
See compatibility
BCI signal decoding SDK
Synaptiq converts surface EEG into accurate device commands for rehabilitation exoskeletons — handling electrode drift and inter-session non-stationarity that makes raw BCI data unusable in clinical workflows.
The core problem
Electrode impedance rises across a two-hour therapy session. Gel dries, cap shifts, scalp conductance changes. The spatial filters your decoder trained on Monday morning are stale by Friday afternoon — and a static classifier has no way to compensate.
Inter-session non-stationarity is the fundamental obstacle to clinical BCI deployment. EEG covariance structure shifts between sessions by more than any within-session calibration can cover. Device manufacturers know it. Clinicians feel it. No one has solved it cleanly for a production SDK.
Synaptiq solves it with Euclidean alignment and online Riemannian covariance updating — re-centering each session's feature distribution before classification, so session 5 performs like session 1.
Session accuracy — with vs. without alignment
Signal processing pipeline
Hardware compatibility
Lower-limb gait rehab, upper-limb reach-grasp, and full-body robotic orthoses. SDK outputs discrete command events over digital I/O, serial, or UDP.
See compatibility8-channel to 32-channel dry and gel electrode caps at 250–1000Hz. BrainVision, Lab Streaming Layer (LSL), and BDF/GDF format support.
See compatibilityOffline batch decoding for research protocols. Python SDK integrates with MNE-Python pipelines. REST API for cloud batch analysis.
View SDKClinical validation
Development follows the IEC 62304 software lifecycle process. Designed for FDA 510(k) regulatory pathway as a software accessory to Class II rehabilitation devices.
View methodology and validation detailsStart integrating
Python and C++ SDKs with a REST API for cloud batch decoding. Three lines to decode your first motor-imagery event.
Request SDK Accessimport synaptiq
# Initialize and load session calibration
session = synaptiq.Session(device="lsl", channels=16)
session.calibrate(duration_s=120)
# Start real-time motor-imagery decode
def on_command(cmd):
print(f"Command: {cmd.label} [{cmd.confidence:.2f}]")
session.decode_stream(callback=on_command)