Giter Club home page Giter Club logo

sds-framework's Introduction

SDS Framework

The Synchronous Data Stream (SDS) Framework implements a data stream management, provides methods and helper tools for developing and optimizing embedded applications that integrate DSP and ML algorithms. This framework may be used stand-alone, but also in combination with CMSIS-Stream that allows to combine algorihms using a compute graph.

Overview

  • Implements a flexible data stream management for sensor and audio data interfaces

    • Supports data streams from multiple interfaces including provisions for time drifts.
  • Provides methods to record real-world data for analysis and development

    • Input to Digital Signal Processing (DSP) development tools such as filter designers
    • Input to Machine Learning (ML) model classification, training, and performance optimization
    • Verify execution of DSP algorithm on Cortex-M targets with off-line tools
  • Playback real-world data for algorithm validation using Arm Virtual Hardware

    • Input to Digital Signal Processing (DSP) development tools such as filter designers
    • Input to Machine Learning (ML) model classification, training, and performance optimization
    • Verify execution of DSP algorithm on Cortex-M targets with off-line tools
  • Defines binary data format with YAML metadata file.

  • Python-based utilities for recording, playback, visualization, and data conversion

Refer to "ML Developers Guide for Cortex-M Processors and Ethos-U NPU" - "Tool Support" - "SDS Framework Usage" for more information.

Interfaces

The SDS Framework interfaces implement the SDS streaming interfaces via different methods. The functions of the sds.h Circular Buffer Handling may be used at any level of a Compute Graph to provide inputs or capture outputs of an DSP or ML algorithm.

Interfaces

Repository top-level structure

Directory Description
examples Example implementations for various evaluation boards
documentation User documentation of the SDS Framework
schema Schema for SDS File Format
sds Interfaces of the SDS Framework for Cortex-M devices
utilities Python scripts for processing of SDS binary data files

License Terms

The SDS Framework is licensed under Apache License 2.0.

sds-framework's People

Contributors

davidlesnjak avatar jonatanantoni avatar matthiashertel80 avatar reinhardkeil avatar robertrostohar avatar teomahnic avatar zigamahne avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sds-framework's Issues

Invalid filenames in sdsio_manager on unix-type systems

Path operations in sdsio-server.py hardcode backslahes. This will only work on windows. In the unix-world this will create filenames similar to .\Accelerometer.0.sds, which is actually a hidden file.
See:

fname = f"{self.out_dir}\\{name}.{file_index}.sds"

Since the os.path module is available already, I recommend using os.path.join to create safe file names.
e.g.:
fname = path.join(self.out_dir, f"{name}.{file_index}.sds")

Feature request: selectable network interface for sdsio-server.py socket mode

Without the option to select a specific network interface to bind the socket on, there is no way to control which interface the service binds to.
I recommend to an optional parameter --interface to control this.
e.g.:
python3 sdsio-server.py socket --interface=en0

Linux and Windows should have setsockopt available to either set SO_BINDTODEVICE or IP_PKTINFO
e.g.:
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BINDTODEVICE, b'eth0')
Macos does not offer either. It will require the netifaces module to find the correct IP assigned to a named interface.
e.g.:

addresses = netifaces.ifaddresses(self.interface)
ip = addresses[netifaces.AF_INET][0]['addr']

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.