はじめに
この記事は、cometa社のpicoblueのAPIをpythonから呼び出して利用した際の備忘録です。巻末に実際に作成した”計測された心拍情報をKvaser USBCAN Pro経由でCAN出力する"アプリをサンプルコードとして紹介しています。
📚 PicoblueのSDKとは?
Picoblue SDK は、Cometa社が提供する 筋電(EMG)センサー「Picoblue」シリーズ専用の開発キットです。Windows環境向けに提供されており、PythonやC++などの言語からDLLを介してセンサーデータにアクセスできます。
🔍 SDKの特徴
-
DLL形式で提供:PicoBlue.DaqSys.dll を使用して、センサーの初期化・接続・データ取得が可能
-
Bluetooth通信対応:PCとセンサー間の接続はBLE(Bluetooth Low Energy)で行われ、専用受信機は不要
-
最大4chのセンサー接続:心拍数やEMG信号を最大4つのセンサーから同時取得可能
Windowsアプリケーション向けSDKと低レベルBLEライブラリの2種類
🚀 PythonでAPI(DLL)を使う方法
まず、picoblueのSDKですが、DLL
形式で提供されています。これを実際に開発するアプリから呼び出して活用する形になります。今回はpythonでの実装例を紹介します。
PicoBlue SDK の DLL を Python から呼び出すには ctypes
を使用します。以下は例です:
import ctypes
# DLLの読み込み
dll = ctypes.CDLL("PicoBlue.DaqSys.dll")
# デバイス初期化(仮想関数名)
dll.InitializeDevice()
# データ取得(仮想関数名)
hr = dll.GetHeartRate()
emg = dll.GetEMGSignal()
実際に利用したい関数名や引数は SDK に付属するドキュメントを参照してください。一度読み込んでしまえば比較的簡単に利用できるものと思います。
🧠 APIを使ってやりたかったこと
こちらのpicoblueですが、デフォルトだとログファイル出力しかできないようでした。そのため、同時計測する計測データとの同期がやや手間です(※webカメラの同時計測はできるのでやりようはあります)。今回やりたかったのは、心拍情報をCANALyzerなどのCANツールで計測できるようにしてほかの計測情報と手軽に同期がとれるようにすることです。
ですので以下のような構成でコードを書いてみました。
- Bluetooth経由でPicoblueセンサーデバイスに接続
- 心拍数とEMG信号を取得
- CAN通信でデータを送信(Kvaser USB CAN Pro使用)
🛠️ 使用技術
- Python
- PicoBlue SDK(DLL)
- Kvaser CANモジュール
-
python-can
ライブラリ
🛠️ 活用事例
サンプルコードをgithubにあげています。
📦 リポジトリ構成
PicoblueCANSender/
├── main.py # 全体の制御処理
├── sensor_interface.py # SDKからデータ取得
├── can_transmitter.py # CANメッセージ送信
└── classic_can_picoblue.dbc# CAN定義ファイル
🎯 まとめ
今回はPythonでDLLを扱う方法やCAN通信の実装例を紹介しました。参考になれば幸いです。