| Crates.io | feagi-sensorimotor |
| lib.rs | feagi-sensorimotor |
| version | 0.0.1-beta.4 |
| created_at | 2025-12-23 17:54:00.759972+00 |
| updated_at | 2026-01-25 21:49:27.533254+00 |
| description | Sensorimotor System - Data processing, caching, and neuron voxel encoding for FEAGI agents (sensory input and motor output) |
| homepage | https://feagi.org |
| repository | https://github.com/feagi/feagi-core |
| max_upload_size | |
| id | 2002042 |
| size | 662,924 |
Peripheral Nervous System (PNS) - Data processing, caching, and neuron voxel encoding for FEAGI agents
feagi-sensorimotor provides the foundational components for building FEAGI connector agents. This crate includes data processing pipelines, caching mechanisms, and neuron voxel encoding/decoding for various data types. It serves as the "Peripheral Nervous System" layer, handling sensory input processing and motor output encoding.
Add this to your Cargo.toml:
[dependencies]
feagi-sensorimotor = "2.0.0"
feagi-structures = "0.0.1-beta.1"
feagi-serialization = "0.0.1-beta.1"
use feagi_sensorimotor::data_pipeline::PipelineStage;
// Create a pipeline for image processing
let pipeline = vec![
PipelineStage::ImageSegmentor { segments: 4 },
PipelineStage::QuickDiff { threshold: 10 },
];
// Process data through the pipeline
for stage in &pipeline {
data = stage.process(data)?;
}
use feagi_sensorimotor::neuron_voxel_coding::xyzp::encoders::Percentage1DLinear;
use feagi_sensorimotor::data_types::percentages::Percentage;
// Encode a percentage value as neuron voxels
let encoder = Percentage1DLinear::new(100);
let percentage = Percentage::new(75.0)?;
let voxels = encoder.encode(&percentage);
use feagi_sensorimotor::caching::SensoryChannelStreamCaches;
// Create a cache for sensory data streams
let mut cache = SensoryChannelStreamCaches::new();
// Cache data for a sensor
cache.update("camera_01", sensor_data);
// Retrieve cached data
let data = cache.get("camera_01")?;
use feagi_sensorimotor::data_types::SegmentedImageFrame;
// Segment an image into regions
let segmented = SegmentedImageFrame::from_image_frame(
&image_frame,
4, // number of segments
)?;
// Access individual segments
for segment in segmented.segments() {
process_segment(segment);
}
Available pipeline stages:
For detailed API documentation, visit docs.rs/feagi-sensorimotor.
See the examples/ directory for complete examples:
segmented_video_stream.rs: Video processing with segmentationThis crate is part of the FEAGI project:
Licensed under the Apache License, Version 2.0. See LICENSE for details.
Contributions are welcome! Please see the main repository for contribution guidelines.