Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
6cc1f1d
init metadata ros to omh converter
Alizzie Aug 2, 2025
b2b12f2
generalize raw biosignal body msg
Alizzie Aug 2, 2025
26c818f
simple main script converting omh biosignals body to ros
Alizzie Aug 11, 2025
014da96
draft main script converting biosignals (body + meta) to ros
Alizzie Aug 20, 2025
0ed3239
draft main script converting biosignals (body + meta) to ros
Alizzie Aug 20, 2025
d81510e
create new folder with json to ros msg generator
Alizzie Aug 21, 2025
145be33
fix module and add noteboook example
Alizzie Oct 24, 2025
1db31c7
fix module and add noteboook example
Alizzie Oct 24, 2025
4a1b436
change folder structure, and adapt omh to ros message generator
Alizzie Oct 24, 2025
9c5d63e
revert submodule usage
Alizzie Oct 25, 2025
d03045c
install directly ord schema package
Alizzie Oct 25, 2025
9c6cd3a
show all functions how to use ord_schema package
Alizzie Oct 25, 2025
9566833
update omh_schema_to_ros_message notebook
Alizzie Oct 25, 2025
3eb30a1
Moved streamer to root dir
moperezs Oct 28, 2025
610a774
delete test schema and test generated messages from omh_ros_converter…
Alizzie Oct 31, 2025
da1fb27
add ending new line at generated ros messages
Alizzie Oct 31, 2025
e5a7684
Update offline_converter/omh_to_ros_schema/converters/__init__.py
Alizzie Oct 31, 2025
b2b70c5
rename bcg example file
Alizzie Oct 31, 2025
95c720d
rename eog example filename
Alizzie Oct 31, 2025
3efe209
remove wildcards
Alizzie Oct 31, 2025
6c85025
Update offline_converter/omh_to_ros_schema/utils/__init__.py
Alizzie Oct 31, 2025
56c623c
add ending new line in files
Alizzie Oct 31, 2025
c9deca2
use linter and formatter
Alizzie Oct 31, 2025
9ade150
Merge branch 'origin/feature/omhToRosDev' of https://github.com/SCAI-…
Alizzie Oct 31, 2025
687e956
fix input/output types in offline converters
Alizzie Oct 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .gitignore
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would remove this .gitignore from the repo and let everyone have their custom configs if needed.

Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Python packaging
*.egg-info/
dist/
build/

# Virtual environments
.venv/
venv/
env/

# Bytecode cache
__pycache__/
*.py[cod]

# Editor/IDE junk
.vscode/
.idea/

# OS files
.DS_Store
Thumbs.db
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
# healthcare_common
# healthcare_common

## Installation
pip install -e .


5 changes: 5 additions & 0 deletions examples/notebooks/generated_ros_msgs/Bcg.msg
Comment thread
Alizzie marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
std_msgs/Header header
string session_id # match BCGInfo's session_id (if used)
int32 sample_size
float32[] bcg # Raw or filtered BCG values
float32[] signal_quality # From 0 (poor) to 1 [%]
34 changes: 34 additions & 0 deletions examples/notebooks/generated_ros_msgs/BcgInfo.msg
Comment thread
Alizzie marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
SensorDeviceMetadata sensor_Device_Metadata
# Sensor_placement Enum
uint8 SENSOR_PLACEMENT_UNKNOWN = 0
uint8 SENSOR_PLACEMENT_CHEST = 2
uint8 SENSOR_PLACEMENT_BACK = 3
uint8 SENSOR_PLACEMENT_MATTRESS = 4
uint8 SENSOR_PLACEMENT_CHAIR = 5
uint8 SENSOR_PLACEMENT_FEET = 6
uint8 SENSOR_PLACEMENT_WRIST = 7
uint8 SENSOR_PLACEMENT_ARM = 8
uint8 SENSOR_PLACEMENT_DESK = 9
uint8 SENSOR_PLACEMENT_CLOTHING = 10
uint8 SENSOR_PLACEMENT_CUSTOM = 255
uint8 sensor_placement # Sensor Placements
# Sensing_direction Enum
uint8 SENSING_DIRECTION_DORSO_VENTRAL = 1
uint8 SENSING_DIRECTION_LONGITUDINAL = 2
uint8 SENSING_DIRECTION_MEDIO_LATERAL = 3
uint8 SENSING_DIRECTION_UNKNOWN = 0
uint8 sensing_direction # Axis along which BCG is measured
# Sensing_modality Enum
uint8 SENSING_MODALITY_PIEZOELECTRIC_FILM = 1
uint8 SENSING_MODALITY_FORCEPLATE = 2
uint8 SENSING_MODALITY_ACCELEROMETER = 3
uint8 SENSING_MODALITY_PIEZOELECTRIC_CRYSTAL = 4
uint8 SENSING_MODALITY_UNKNOWN = 0
uint8 sensing_modality # Type of Sensor used
# Measurement_system Enum
uint8 MEASUREMENT_SYSTEM_STARR = 1
uint8 MEASUREMENT_SYSTEM_NICKERSON = 2
uint8 MEASUREMENT_SYSTEM_DOCK = 3
uint8 MEASUREMENT_SYSTEM_OTHER = 4
uint8 MEASUREMENT_SYSTEM_UNKNOWN = 0
uint8 measurement_system # System Type
5 changes: 5 additions & 0 deletions examples/notebooks/generated_ros_msgs/DeviceIdentity.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
std_msgs/Header header
string device_manufacturer
string device_name
string device_type
string device_serial_number
6 changes: 6 additions & 0 deletions examples/notebooks/generated_ros_msgs/Ecg.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
std_msgs/Header header
string session_id # match ECGInfo's session_id (if used)
int32 channel_size
int32 sample_size
float32[] ecg # Raw or filtered ECG values
float32[] signal_quality # From 0 (poor) to 1 [%]
18 changes: 18 additions & 0 deletions examples/notebooks/generated_ros_msgs/EcgInfo.msg
Comment thread
Alizzie marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
SensorDeviceMetadata sensor_Device_Metadata
string[] electrode_placement # Support multiple electrode placements
# Lead_type Enum
uint8 LEAD_TYPE_I = 1
uint8 LEAD_TYPE_II = 2
uint8 LEAD_TYPE_III = 3
uint8 LEAD_TYPE_AVR = 4
uint8 LEAD_TYPE_AVL = 5
uint8 LEAD_TYPE_AVF = 6
uint8 LEAD_TYPE_V1 = 7
uint8 LEAD_TYPE_V2 = 8
uint8 LEAD_TYPE_V3 = 9
uint8 LEAD_TYPE_V4 = 10
uint8 LEAD_TYPE_V5 = 11
uint8 LEAD_TYPE_V6 = 12
uint8 LEAD_TYPE_UNKNOWN = 0
uint8 LEAD_TYPE_CUSTOM = 255
uint8 lead_type # Standard ECG lead names according to clinical conventions (12-lead and extended leads).
7 changes: 7 additions & 0 deletions examples/notebooks/generated_ros_msgs/Eda.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
std_msgs/Header header
string session_id # match EdaInfo's session_id (if used)
int32 sample_size
float32[] scl # Skin Conductance Level (tonic)
float32[] scr # Skin Conductance Response (phasic)
float32[] eda # Sum of signals (scl + scr)
float32[] signal_quality # From 0 (poor) to 1 [%]
19 changes: 19 additions & 0 deletions examples/notebooks/generated_ros_msgs/EdaInfo.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
SensorDeviceMetadata sensor_Device_Metadata
string[] electrode_placement # Support multiple electrode placements
# Electrode_type Enum
uint8 ELECTRODE_TYPE_UNKNOWN = 0
uint8 ELECTRODE_TYPE_SURFACE = 2
uint8 ELECTRODE_TYPE_INTRACUTANEOUS = 3
uint8 ELECTRODE_TYPE_CUSTOM = 255
uint8 electrode_type
# Measuring_technique Enum
uint8 MEASURING_TECHNIQUE_UNKNOWN = 0
uint8 MEASURING_TECHNIQUE_ENDOSOMATIC = 2
uint8 MEASURING_TECHNIQUE_EXOSOMATIC = 3
uint8 MEASURING_TECHNIQUE_CUSTOM = 255
uint8 measuring_technique
# Current_form Enum
uint8 CURRENT_FORM_UNKNOWN = 0
uint8 CURRENT_FORM_DC = 2
uint8 CURRENT_FORM_AC = 3
uint8 current_form
6 changes: 6 additions & 0 deletions examples/notebooks/generated_ros_msgs/Eeg.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
std_msgs/Header header
string session_id # match EEGInfo's session_id (if used)
int32 channel_size
int32 sample_size
float32[] eeg # Raw or filtered EEG values
float32[] signal_quality # From 0 (poor) to 1 [%]
42 changes: 42 additions & 0 deletions examples/notebooks/generated_ros_msgs/EegInfo.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
SensorDeviceMetadata sensor_Device_Metadata
string[] electrode_placement # Support multiple electrode placements
# Electrode_site Enum
uint8 ELECTRODE_SITE_UNKNOWN = 0
uint8 ELECTRODE_SITE_FP1 = 2
uint8 ELECTRODE_SITE_FP2 = 3
uint8 ELECTRODE_SITE_F3 = 4
uint8 ELECTRODE_SITE_F4 = 5
uint8 ELECTRODE_SITE_C3 = 6
uint8 ELECTRODE_SITE_C4 = 7
uint8 ELECTRODE_SITE_P3 = 8
uint8 ELECTRODE_SITE_P4 = 9
uint8 ELECTRODE_SITE_O1 = 10
uint8 ELECTRODE_SITE_O2 = 11
uint8 ELECTRODE_SITE_F7 = 12
uint8 ELECTRODE_SITE_F8 = 13
uint8 ELECTRODE_SITE_T3 = 14
uint8 ELECTRODE_SITE_T4 = 15
uint8 ELECTRODE_SITE_T5 = 16
uint8 ELECTRODE_SITE_T6 = 17
uint8 ELECTRODE_SITE_FZ = 18
uint8 ELECTRODE_SITE_CZ = 19
uint8 ELECTRODE_SITE_PZ = 20
uint8 ELECTRODE_SITE_OZ = 21
uint8 ELECTRODE_SITE_CUSTOM = 255
uint8 electrode_site
# Electrode_physical_type Enum
uint8 ELECTRODE_PHYSICAL_TYPE_UNKNOWN = 0
uint8 ELECTRODE_PHYSICAL_TYPE_AGCL = 2
uint8 ELECTRODE_PHYSICAL_TYPE_GOLD_CUP = 3
uint8 ELECTRODE_PHYSICAL_TYPE_DRY = 4
uint8 ELECTRODE_PHYSICAL_TYPE_WET = 5
uint8 ELECTRODE_PHYSICAL_TYPE_HYDROGEL = 6
uint8 ELECTRODE_PHYSICAL_TYPE_MICRONEEDLE = 7
uint8 ELECTRODE_PHYSICAL_TYPE_CUSTOM = 255
uint8 electrode_physical_type
# Signal_mode Enum
uint8 SIGNAL_MODE_UNKNOWN = 0
uint8 SIGNAL_MODE_SURFACE = 2
uint8 SIGNAL_MODE_INTRACRANIAL = 3
uint8 SIGNAL_MODE_CUSTOM = 255
uint8 signal_mode
6 changes: 6 additions & 0 deletions examples/notebooks/generated_ros_msgs/Emg.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
std_msgs/Header header
string session_id # match EMGInfo's session_id (if used)
int32 channel_size
int32 sample_size
float32[] emg # Raw or filtered EMG values
float32[] signal_quality # From 0 (poor) to 1 [%]
23 changes: 23 additions & 0 deletions examples/notebooks/generated_ros_msgs/EmgInfo.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
SensorDeviceMetadata sensor_Device_Metadata
string[] electrode_placement # Support multiple electrode placements
# Electrode_type Enum
uint8 ELECTRODE_TYPE_UNKNOWN = 0
uint8 ELECTRODE_TYPE_SURFACE = 2
uint8 ELECTRODE_TYPE_NEEDLE = 3
uint8 ELECTRODE_TYPE_WIRE = 4
uint8 ELECTRODE_TYPE_INTERFERENTIAL = 5
uint8 ELECTRODE_TYPE_CUSTOM = 255
uint8 electrode_type
# External_device Enum
uint8 EXTERNAL_DEVICE_UNKNOWN = 0
uint8 EXTERNAL_DEVICE_TENS = 2
uint8 EXTERNAL_DEVICE_FES = 3
uint8 EXTERNAL_DEVICE_EMG_TRIGGER = 4
uint8 EXTERNAL_DEVICE_CUSTOM = 255
uint8 external_device
# Signal_mode Enum
uint8 SIGNAL_MODE_UNKNOWN = 0
uint8 SIGNAL_MODE_SURFACE = 2
uint8 SIGNAL_MODE_INTRAMUSCULAR = 3
uint8 SIGNAL_MODE_CUSTOM = 255
uint8 signal_mode
6 changes: 6 additions & 0 deletions examples/notebooks/generated_ros_msgs/Eog.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
std_msgs/Header header
string session_id # match EOGInfo's session_id (if used)
int32 channel_size
int32 sample_size
float32[] eog # Raw or filtered EOG values
float32[] signal_quality # From 0 (poor) to 1 [%]
31 changes: 31 additions & 0 deletions examples/notebooks/generated_ros_msgs/EogInfo.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
SensorDeviceMetadata sensor_Device_Metadata
string[] electrode_placement # Support multiple electrode placements
# Lead_type Enum
uint8 LEAD_TYPE_UNKNOWN = 0
uint8 LEAD_TYPE_BIPOLAR_HORIZONTAL = 2
uint8 LEAD_TYPE_BIPOLAR_VERTICAL = 3
uint8 LEAD_TYPE_UNIPOLAR = 4
uint8 LEAD_TYPE_CORNEAL_RETINAL = 5
uint8 LEAD_TYPE_CUSTOM = 255
uint8 lead_type
# Signal_mode Enum
uint8 SIGNAL_MODE_UNKNOWN = 0
uint8 SIGNAL_MODE_SURFACE = 2
uint8 SIGNAL_MODE_BIPOLAR = 3
uint8 SIGNAL_MODE_UNIPOLAR = 4
uint8 SIGNAL_MODE_CORNEAL_RETINAL = 5
uint8 SIGNAL_MODE_INTRACULAR = 6
uint8 SIGNAL_MODE_DERIVED = 7
uint8 SIGNAL_MODE_CUSTOM = 255
uint8 signal_mode
# Lightsource Enum
uint8 LIGHTSOURCE_UNKNOWN = 0
uint8 LIGHTSOURCE_TUNGSTEN = 2
uint8 LIGHTSOURCE_HALOGEN = 3
uint8 LIGHTSOURCE_LED = 4
uint8 LIGHTSOURCE_FLUORESCENT = 5
uint8 LIGHTSOURCE_SUNLIGHT = 6
uint8 LIGHTSOURCE_CUSTOM = 255
uint8 lightsource
float32 gazefield # gazefield (unit: cd/m^2)
float32[] light_dark_phase
5 changes: 5 additions & 0 deletions examples/notebooks/generated_ros_msgs/Icg.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
std_msgs/Header header
string session_id # match ICGInfo's session_id (if used)
int32 sample_size
float32[] icg # Raw or filtered ICG values
float32[] signal_quality # From 0 (poor) to 1 [%]
16 changes: 16 additions & 0 deletions examples/notebooks/generated_ros_msgs/IcgInfo.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
SensorDeviceMetadata sensor_Device_Metadata
string[] electrode_placement # Support multiple electrode placements
# Lead_type Enum
uint8 LEAD_TYPE_UNKNOWN = 0
uint8 LEAD_TYPE_TRANSTHORACIC = 2
uint8 LEAD_TYPE_FOUR_ELECTRODE = 3
uint8 LEAD_TYPE_SIX_ELECTRODE = 4
uint8 LEAD_TYPE_SPOT = 5
uint8 LEAD_TYPE_CUSTOM = 255
uint8 lead_type
# Technique Enum
uint8 TECHNIQUE_UNKNOWN = 0
uint8 TECHNIQUE_TETRAPOLAR = 2
uint8 TECHNIQUE_OCTAPOLAR = 3
uint8 TECHNIQUE_CUSTOM = 255
uint8 technique
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
std_msgs/Header header
float32 accuracy
float32 min_measuring_value_range # Minimal measuring value range
float32 max_measuring_value_range # Maximal measuring value range
float32 gain
int32 adc_resolution
float32 resolution
4 changes: 4 additions & 0 deletions examples/notebooks/generated_ros_msgs/MinMaxUnitValue.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
std_msgs/Header header
float32 min_value # The minimum value.
float32 max_value # The maximum value.
string unit # The unit of measure of the element. Allowed values are drawn from the Common synonyms (non-UCUM) column of [subset of] UCUM, SI and English units.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
std_msgs/Header header
float32 battery_level # battery level (unit: %)
float32 min_operation_temperature # Minimal operation temperature
float32 max_operation_temperature # Maximal operation temperature
float32 maximal_relative_humidity # maximal relative humidity (unit: %)
float32 min_atmospheric_pressure # Minimal atmospheric pressure (unit: atm)
float32 max_atmospheric_pressure # Maximal atmospheric pressure (unit: atm)
13 changes: 13 additions & 0 deletions examples/notebooks/generated_ros_msgs/OrdDefaultHeader.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
std_msgs/Header header
string uuid # The identifier of this data point: a globally unique value, generated using RFC 4122 approach.
string namespace # The namespace of the schema. A namespace serves to disambiguate schemas with conflicting names.
string name # The name of the schema.
string version # The version of the schema, e.g. 1.0.
string source_creation_date_time # This schema represents a point in time (ISO8601). If a timezone is not included, the timezone is assumed to be UTC.
# Modality Enum
uint8 MODALITY_SENSED = 1
uint8 MODALITY_SELF-REPORTED = 2
uint8 modality # The modality whereby the measure is obtained, e.g., sensed or self-reported
float32 number_of_times
string time_window
string[] external_datasheets # Reference(s) to external documentation regarding the component(s) relevant to describe the collection, computation, use, etc. of this datapoint or data series, e.g., software, algorithm, study protocol, etc.
8 changes: 8 additions & 0 deletions examples/notebooks/generated_ros_msgs/Ppg.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
std_msgs/Header header
string session_id # match PPGInfo's session_id (if used)
int32 sample_size
int32 wavelength_size
float32 ac_component # # [samples]×[wavelengths]
float32 dc_component # # [samples]×[wavelengths]
float32[] ppg # Raw or filtered PPF values
float32[] signal_quality # From 0 (poor) to 1 [%]
32 changes: 32 additions & 0 deletions examples/notebooks/generated_ros_msgs/PpgInfo.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
SensorDeviceMetadata sensor_Device_Metadata
# Sensor_placement Enum
uint8 SENSOR_PLACEMENT_UNKNOWN = 0
uint8 SENSOR_PLACEMENT_FINGER = 2
uint8 SENSOR_PLACEMENT_WRIST = 3
uint8 SENSOR_PLACEMENT_EARLOBE = 4
uint8 SENSOR_PLACEMENT_FOREHEAD = 5
uint8 SENSOR_PLACEMENT_TOE = 6
uint8 SENSOR_PLACEMENT_ARM = 7
uint8 SENSOR_PLACEMENT_CHEST = 8
uint8 SENSOR_PLACEMENT_ANKLE = 9
uint8 SENSOR_PLACEMENT_NOSE = 10
uint8 SENSOR_PLACEMENT_PALM = 11
uint8 SENSOR_PLACEMENT_SOLE = 12
uint8 SENSOR_PLACEMENT_CUSTOM = 255
uint8 sensor_placement
# Measuring_mode Enum
uint8 MEASURING_MODE_UNKNOWN = 0
uint8 MEASURING_MODE_TRANSMISSIVE_ABSORPTION = 2
uint8 MEASURING_MODE_REFLECTIVE = 3
uint8 MEASURING_MODE_CUSTOM = 255
uint8 measuring_mode
int32[] wavelengths_mm # Nanometer value for each channel, may be [660, 880, 940]
# Wavelengths_labels Enum
uint8 WAVELENGTHS_LABELS_UNKNOWN = 0
uint8 WAVELENGTHS_LABELS_GREEN = 2
uint8 WAVELENGTHS_LABELS_RED = 3
uint8 WAVELENGTHS_LABELS_IR = 4
uint8 WAVELENGTHS_LABELS_BLUE = 5
uint8 WAVELENGTHS_LABELS_YELLOW = 6
uint8 WAVELENGTHS_LABELS_CUSTOM = 255
uint8 wavelengths_labels # Wavelength Label for each channel (optional)
20 changes: 20 additions & 0 deletions examples/notebooks/generated_ros_msgs/SensorDeviceHeader.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
std_msgs/Header header
string device_manufacturer
string device_name
string device_type
string device_serial_number
float32 battery_level # battery level (unit: %)
float32 min_operation_temperature # Minimal operation temperature
float32 max_operation_temperature # Maximal operation temperature
float32 maximal_relative_humidity # maximal relative humidity (unit: %)
float32 min_atmospheric_pressure # Minimal atmospheric pressure (unit: atm)
float32 max_atmospheric_pressure # Maximal atmospheric pressure (unit: atm)
float32 accuracy
float32 min_measuring_value_range # Minimal measuring value range
float32 max_measuring_value_range # Maximal measuring value range
float32 gain
int32 adc_resolution
float32 resolution
string session_id
float32 window_size_samples
float32 quality_window_size_samples
20 changes: 20 additions & 0 deletions examples/notebooks/generated_ros_msgs/SensorDeviceMetadata.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
std_msgs/Header header
string device_manufacturer
string device_name
string device_type
string device_serial_number
float32 battery_level # battery level (unit: %)
float32 min_operation_temperature # Minimal operation temperature
float32 max_operation_temperature # Maximal operation temperature
float32 maximal_relative_humidity # maximal relative humidity (unit: %)
float32 min_atmospheric_pressure # Minimal atmospheric pressure (unit: atm)
float32 max_atmospheric_pressure # Maximal atmospheric pressure (unit: atm)
float32 accuracy
float32 min_measuring_value_range # Minimal measuring value range
float32 max_measuring_value_range # Maximal measuring value range
float32 gain
int32 adc_resolution
float32 resolution
string session_id
float32 window_size_samples
float32 quality_window_size_samples
Loading