Show page source of SSM_en #82818

= Sensor Sharing Manager
SensorSharingManager (SSM) is a program that allows multiple processes to utilize sensor data obtained in a time series.

Multiple processes may access such sensor data as a ring buffer in shared memory gets constructed by SSM.  
In addition, various sensor data can be correlated among each other by using frequently-updated data (e.g. odometry data) and timestamp information.  
SSM herewith supports multi-sensor data processing upon non-real-time OS.
This page provides the overview of SSM and its utility program.

Pages for further reference
 * [HowToUseSSM How to use SSM]
 * [ProgrammingWighSSM Programming with SSM]
 * [SoftwareModules Software Modules] (explanations about sensor drivers)

== Downloads
 * [http://sourceforge.jp/projects/pc-ymbc/files/?release_id=31401#31401 SSM-0.31]

== Installation
SSM can simply be installed by downloading, unzipping, and “make”-ing the downloaded file by following steps.

{{{
 tar xzvf <downloaded_file>
 cd <unzipped_directory>
 make clean
 make
 sudo make install
}}}
The commands above copies the binary files under SSM/bin, the library files under /usr/local/lib, and the header files under /usr/local/include.

== SSM Features
Features:
 * Simple structure/interface
 * Available in user-specified data size
 * Maintains a certain size of data log
 * High-speed access by utilizing shared memory, without having to wait for context switching
 * n output for every sensor input
 * Time-specified data access
 * Almost data collision occurs unless ancient data is being accessed
Restrictions:
 * Data size cannot be modified during the operation
 * Limited data size due to the Linux shared memory constraints
 * Data structure must be defined for both writing and reading the memory
 * Minimum access rate must be defined
 * Time-specified access may be slowed down with access rate irregularity
 * Timestamp is fixed to double type

== SSM Structure
The program used in the SSM system is divided into the following three types:
 * SSM: Simultaneously manages the sensors (e.g. registering and listing)
 * Sensor Drivers: Reads and writes the data from each sensor to SSM
 * User Programs: Reads and processes the data from SSM

[[Embed(ssm_system.png, caption=SSM system structure)]]

== Packaged Software Programs
 * ssm: Launches the sensor management program
 * lsssm: Lists all the sensors registered in SSM
 * ssmlogger: Records the data for sensors currently registered in SSM as separate log files
 * ssmmultiplayer: Simultaneously plays the recorded sensor data
 * ssmtransport: Shares the sensor data in SSM with other PC