A structured message package for healthcare and physiological signals in ROS 2 — aligned with Open mHealth schemas and biomedical best practices.
healthcare_msgs is a ROS 2 interface package containing modular message definitions (.msg) for health-related data. The messages are organized in a semantic hierarchy to support both raw and derived signals, sensor metadata, filters, and high-level behavioral information.
- ✅ Physiological signal messages (ECG, EEG, PPG, EMG, etc.)
- ✅ Daily activity classification and mood inference messages
- ✅ Derived biosignals (HR, HRV, stroke volume)
- ✅ Signal metadata (info + quality + units)
- ✅ Digital filter parameter messages
- ✅ Open mHealth schema alignment for interoperability
healthcare_msgs/
├── msg/
│ ├── biometrics/
│ │ ├── behavioral/mood/
│ │ │ └── Mood.msg
│ │ └── physiological/activities_daily_life/
│ │ ├── ActivityDailyLife.msg
│ │ └── ADLModelClassificationResult.msg
│ ├── biosensing/
│ │ ├── raw_biosignals/ # ECG, EMG, EDA, EEG, etc.
│ │ └── derived_biosignals/ # HR, HRV, stroke volume, etc.
│ ├── device_info/
│ │ └── DeviceInfo.msg
│ ├── filters/
│ │ └── *.msg # Butterworth, Kalman, etc.
│ ├── physical_signals/
│ │ └── biomechanical_signals/
│ │ └── PressureMap.msg
│ └── plane_angle_unit_value/
│ └── PlaneAngleUnitValue.msg
├── CMakeLists.txt
├── package.xml
└── README.mdMessages are structured to be compatible with Open mHealth schemas. Where possible, we follow their units, field names, and semantics.
ℹ️ Messages may include additional metadata (sampling rate, signal quality, units) not found in OMH schemas.
You can install healthcare_msgs directly from our public ROS 2 APT repository. This is the easiest way to get signed packages without building from source.
wget -qO - https://scai-lab.github.io/healthcare_msgs/KEY.gpg | sudo tee /usr/share/keyrings/healthcare-msgs.gpg > /dev/nullFor ROS 2 Humble (Ubuntu 22.04 Jammy):
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/healthcare-msgs.gpg] https://scai-lab.github.io/healthcare_msgs/ humble-jammy main" | sudo tee /etc/apt/sources.list.d/healthcare-msgs.list
sudo apt update
sudo apt install ros-humble-healthcare-msgs*** For ARM architecture, replace the first line with:
echo "deb [arch=arm64 signed-by=/usr/share/keyrings/healthcare-msgs.gpg] https://scai-lab.github.io/healthcare_msgs/ humble-jammy main" | sudo tee /etc/apt/sources.list.d/healthcare-msgs.listFor ROS 2 Rolling (Ubuntu 24.04 Noble):
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/healthcare-msgs.gpg] https://scai-lab.github.io/healthcare_msgs/ rolling-noble main" | sudo tee /etc/apt/sources.list.d/healthcare-msgs.list
sudo apt update
sudo apt install ros-rolling-healthcare-msgs*** For ARM architecture, replace the first line with:
echo "deb [arch=arm64 signed-by=/usr/share/keyrings/healthcare-msgs.gpg] https://scai-lab.github.io/healthcare_msgs/ rolling-noble main" | sudo tee /etc/apt/sources.list.d/healthcare-msgs.listMake sure your ROS 2 workspace is sourced:
cd ~/colcon_ws/src
git clone https://github.com/SCAI-Lab/healthcare_msgs.git
cd ..
colcon build --packages-up-to healthcare_msgs --symlink-install
source install/setup.bash
- Biomedical ROS 2 pipelines
- Wearable device integration
- Signal streaming and filtering
- Translating Open mHealth data to ROS
ROS 2 interface packages:
- builtin_interfaces
- std_msgs
Contributions are welcome! If you'd like to add support for new OMH schemas or signal types, feel free to open an issue or pull request.