はじめに
人が転倒や転落(転倒転落)したとき、誰も気付く人がいないという事態は二重の意味で危険です。初期段階の怪我と思われる場合であっても、短時間のうちに処置を施さないと、状況によってはさらに悪化する可能性があります。たとえば、高齢者の多くは心身の衰えや目まいによって、また一般的にはセルフケアや自己防衛能力の低下によって思いがけなく転倒転落することがあります。高齢者の身体は虚弱になりがちなので、こういった事故が発生した場合は、すぐに処置を施さなければ、深刻な事態に陥るおそれがあります。統計に示されるように、深刻な結果を招く原因は、転倒転落そのものではなく救護や処置の遅れによるものが大部分です。迅速に救護員に通報できれば、転倒転落後の重大な結果を大幅に低減することができます。
高齢者以外にも、転倒転落、特に相当高い位置からの転倒転落に対する緊急通報が非常に有益な状態や動作の例は数多くあります。たとえば、登山者、建設作業者、窓の清掃作業員、塗装工、屋根職人などがそうです。
こうした転倒転落通報の必要性の観点から、あらゆるタイプの転倒転落の検出・予測デバイスの開発が盛んに行われるようになっています。近年、MEMS(マイクロ・エレクトロ・メカニカル・システム)加速度センサが登場したことで、3軸高集積MEMS(iMEMS®)加速度センサを利用した転倒転落検出器の設計が可能になっています。この技術は、3つの直交方向で加速度の変化を追跡してセンサを装着した人の身体の位置と動作の変化を測定するという原理に基づいています。データはアルゴリズム的に絶えず解析され、人体の転倒や転落の有無を判定します。人が転倒あるいは転落すると、デバイスはGPSと無線トランスミッタを使ってその位置を判定し、通報して救助を求めます。転倒転落検出の中核をなすのは、突発的な転倒転落状況の存在を判断する高信頼の有効な検出原理とアルゴリズムです。 本稿では、人体に関する転倒転落検出原理の研究に基づいて、アナログ・デバイセズの3軸加速度センサADXL345を用いた転倒転落状況の検出ソリューションを解説します。
ADXL345 iMEMS加速度センサ
iMEMS半導体技術は、マイクロメカニカル構造と電子回路を組み合わせて1個のシリコン・チップに集積しています。この技術を使って、iMEMS加速度センサは1軸または2軸、さらには3軸で加速度を検知し、アナログまたはデジタル出力を提供します。加速度センサはアプリケーションに応じて、数gから数十gまで、さまざまな範囲の検出を提供します。デジタル仕様の場合には、複数の割込みモードを持たせることもできます。これらの機能は便利でフレキシブルなソリューションを提供します。
iMEMS半導体技術は、マイクロメカニカル構造と電子回路を組み合わせて1個のシリコン・チップに集積しています。この技術を使って、iMEMS加速度センサは1軸または2軸、さらには3軸で加速度を検知し、アナログまたはデジタル出力を提供します。加速度センサはアプリケーションに応じて、数gから数十gまで、さまざまな範囲の検出を提供します。デジタル仕様の場合には、複数の割込みモードを持たせることもできます。これらの機能は便利でフレキシブルなソリューションを提供します。
ここで推奨している転倒転落検出ソリューションは、内蔵されたこれらの機能を十分に活用し、アルゴリズムの複雑さを最小限に抑えています。実際の加速度値を読み出して余分な計算を実行したりする必要はほとんどありません。
割込みシステム
図1は、ADXL345のシステム・ブロック図とピン定義を示しています。
図1. ADXL345システム・ブロック図とピン配置
ADXL345は2個のプログラマブル割込みピンINT1とINT2を備えており、全部で8つの割込み機能が得られます。各割込みは個別にイネーブルまたはディスエーブルでき、INT1またはINT2ピンにマップできます。機能はすべて同時に使用できます。ただし、機能的に唯一制限されるのは、機能によって割込みピンを共有することが必要になる場合があるという点です。8つの機能はDATA_READY、SINGLE_TAP、DOUBLE_TAP、ACTIVITY、INACTIVITY、FREE_FALL、WATERMARK、OVERRUNです。割込みはINT_ENABLEレジスタに適切なビットを設定するとイネーブルとなり、NT_MAPレジスタの値に基づいてINT1またはINT2ピンにマップされます。
割込み機能は次のように定義されます。
図2は有効なSINGLE_TAPとDOUBLE_TAPの2つの割込みを示しています。
図2. SINGLE_TAP、DOUBLE_TAP割込み
転倒転落中の加速度変化特性
転倒転落検出の原理に関する主要研究では、人が転倒または転落しているときに発生する加速度の変化に焦点を当てています。
図3は(a)階段を歩いて下りるとき、(b)階段を歩いて上るとき、(c)腰を下ろすとき、(d)椅子から立ち上がるときにそれぞれ発生する加速度の変化を示しています。転倒転落検出器は被験者のベルトに装着されています。赤いパターンはY軸(垂直)加速度であり、安定時は-1gです。黒と黄色のパターンはそれぞれX軸(進行方向の加速度)、Z軸(横方向の加速度)の加速度です。これらは安定時に両方とも0gです。緑のパターンはベクトル合計であり、安定時の値は1gです。
図3. さまざまなタイプの動作に対する加速度センサ応答
高齢者の動作は比較的緩慢なので、歩行中の加速度の変化はそれほど顕著ではありません。最も大きな加速度は、腰を下ろす瞬間でY(およびベクトル合計)において3g(瞬間加速度)を示しています。
転倒転落中の加速度はまったく異なります。図4は、偶発的な転倒転落時の加速度の変化を示しています。図4を図3と比較すれば、転倒転落検出の基準として利用できる転倒転落イベントの重要な4つの差異特性を見て取ることができます。これらの特性は赤い点線の矩形で示されており、以下に詳しく説明します。
図4. 転倒転落処理中の加速度変化曲線
これらの評価の組み合わせたものが全体的な転倒転落検出アルゴリズムとなります。このアルゴリズムを実行すれば、システムは転倒転落発生時に適正なアラートを出すことができます。もちろん、割込み間の間隔は合理的な範囲の値にする必要があります。一般に、FREE_FALL割込み(無重力)とACTIVITY割込み(衝突)の時間間隔は、人が超高速ビルの屋上から転倒転落することがない限りあまり長くない値に設定します。同様に、ACTIVITY割込み(衝突)とINACTIVITY割込み(実質的に無重力)の時間間隔も、それほど長くない値にします。次のセクションでは、適正な値を実際に用いて具体例を説明します。関連する割込み検出スレッショールドと時間パラメータは必要に応じて柔軟に設定できます。
転倒転落によって意識不明などの重大な結果が生じる場合は、身体が動かない時間が長くなることもあります。この状態もINACTIVITY割込みで検出することができます。したがって、転倒転落後に非アクティブ状態が検出されて、それが長時間(指定の時間)続く場合は、2つ目のクリティカル・アラートを送ることができます。
代表的な回路接続
ADXL345とマイクロコントローラ間の回路接続は非常にシンプルです。本稿では、テスト・プラットフォームはADXL345とADuC7026アナログ・マイクロコントローラを使用します。ADuC7026は12ビットのアナログI/OとARM7TDMI® MCUを備えています。図5はADXL345とADuC70262間の代表的な接続を示します。ADXL345はCSピンがハイレベルに固定されており、I2Cモードで動作します。SDAとSCL(データとI2Cバスのクロック)はADuC7026の対応するピンに接続されています。ADuC7026のGPIOはADXL345のI2Cアドレスを選択するためのALTピンに接続され、ADXL345のINT1ピンは割込み信号を生成するためのADuC7026のIRQ入力に接続されています。
ほかのMCUまたはプロセッサ・タイプは、図5に類似した回路接続によってADXL345にアクセスできますが、ADuC7026はマルチチャンネルA/D変換およびD/A変換などのデータ・アクイジション機能も提供します。ADXL345のデータシートには、より高いデータレートを達成するためのSPIモード・アプリケーションの説明があります。
ADXL345で転倒転落の検出を簡素化
表1、図5、および付録では、上述したソリューションのアルゴリズムを実現するための情報やプログラムを提供しています。表には各レジスタの機能を記載し、現在のアルゴリズムで使用する値を示しています。各レジスタ・ビットの詳しい定義は、ADXL345のデータシートを参照してください。
表1のレジスタの一部は2つの値をとります。アルゴリズムは、検出のさまざまな局面に応じてこれらの値を切り替えます。図6はアルゴリズムのフローチャートです。
図5. ADXL345とマイクロコントローラ間の代表的な回路接続
| 16進アドレス | レジスタ名 | タイプ | リセット値 | 説明 | アルゴリズムでの設定 | アルゴリズムの各設定の機能 |
| 0 | DEVID | 読出し専用 | 0xE5 | デバイスID | 読出し専用 | |
| 1-1C | Reserved | - | 0x00 | 予約済み、アクセスしない | 予約済み | |
| 1D | THERESH_TAP | 読出し/書込み | 0x00 | タップ・スレッショールド | 未使用 | |
| 1E | OFSX | 読出し/書込み | 0x00 | X軸オフセット | 0x06 | X軸オフセット補償、初期化キャリブレーションから取得 |
| 1F | OFSY | 読出し/書込み | 0x00 | Y軸オフセット | 0xF9 | Y軸オフセット補償、初期化キャリブレーションから取得 |
| 20 | OFSZ | 読出し/書込み | 0x00 | Z軸オフセット | 0xFC | Z軸オフセット補償、初期化キャリブレーションから取得 |
| 21 | DUR | 読出し/書込み | 0x00 | タップ継続時間 | 未使用 | |
| 22 | LATENT | 読出し/書込み | 0x00 | タップ遅延 | 未使用 | |
| 23 | WINDOW | 読出し/書込み | 0x00 | タップ・ウィンドウ | 未使用 | |
| 24 | THRESG_ACT | 読出し/書込み | 0x00 | 動作スレッショールド | 0x20/0x08 | 動作スレッショールドを2g/0.5gに設定 |
| 25 | THRESH_INACT | 読出し/書込み | 0x00 | 非動作スレッショールド | 0x03 | 非動作スレッショールドを0.1875gに設定 |
| 26 | TIME_INACT | 読出し/書込み | 0x00 | 非動作時間 | 0x02/0x0A | 非動作時間を2秒または10秒に設定 |
| 27 | ACT_INACT_CTL | 読出し/書込み | 0x00 | 動作/非動作の軸イネーブル制御 | 0x7F/0xFF | X軸、Y軸、Z軸の動作/非動作をイネーブルに設定。この場合、 |
| 28 | THRESH_FF | 読出し/書込み | 0x00 | 自由落下スレッショールド | 0x0C | 自由落下スレッショールドを0.75gに設定 |
| 29 | Time_FF | 読出し/書込み | 0x00 | 自由落下時間 | 0x06 | 自由落下時間を30ミリ秒に設定 |
| 2A | TAP_AXES | 読出し/書込み | 0x00 | タップ/ダブル・タップの軸制御 | 未使用 | |
| 2B | ACT_TAP_STATUS | 読出し専用 | 0x00 | 動作/タップ源 | 読出し専用 | |
| 2C | BW_RATE | 読出し/書込み | 0x0A | データレートと電源モード制御 | 0x0A | サンプル・レートを100Hzに設定 |
| 2D | POWER_CTL | 読出し/書込み | 0x00 | 節電機能制御 | 0x00 | 通常の動作モードに設定 |
| 2E | INT_ENABLE | 読出し/書込み | 0x00 | 割込みイネーブル制御 | 0x1C | 動作、非動作、自由落下の各割込みのイネーブル設定 |
| 2F | INT_MAP | 読出し/書込み | 0x00 | 割込みマッピング | 0x00 | INT1ピンへの全割込みのマッピング |
| 30 | INT_SOURCE | 読出し専用 | 0x00 | 割込みソース | 読出し専用 | |
| 31 | DATA_FORMAT | 読出し/書込み | 0x00 | データ・フォーマット制御 | 0x0B | S±16gの測定範囲、13ビット右揃え、 |
| 32 | DATAX0 | 読出し専用 | 0x00 | X軸データ | 読出し専用 | |
| 33 | DATAX1 | 読出し専用 | 0x00 | 読出し専用 | ||
| 34 | DATAY0 | 読出し専用 | 0x00 | Y軸データ | 読出し専用 | |
| 35 | DATAY1 | 読出し専用 | 0x00 | 読出し専用 | ||
| 36 | DATAZ0 | 読出し専用 | 0x00 | Z軸データ | 読出し専用 | |
| 37 | DATAZ1 | 読出し専用 | 0x00 | 読出し専用 | ||
| 38 | FIFO_CTL | 読出し/書込み | 0x00 | FIFO制御 | 未使用 | |
| 39 | FIFO_STATUS | 読出し/書込み | 0x00 | FIFOステータス | 未使用 |
図6. アルゴリズム・フローチャート
各割込みスレッショールドとアルゴリズム中の関連の時間パラメータについて説明します。
このアルゴリズムは、ADuC7026マイクロコントローラで実行できるようにC言語で開発されています(付録を参照)。アルゴリズムを検証するために、推奨ソリューションではテスト・ケースも提供しています。前方、後方、左方向、右方向の各転倒転落を含む、個々のポジションは10回テストしています。表2にテスト結果を示します。チェックマーク(レ)は各条件が満たされていることを示しています。
| 転倒転落ポジション | 転倒転落後の長い無動作時間 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 前方に転倒転落 | なし | ||||||||||
| あり | |||||||||||
| 後方に転倒転落 | なし | ||||||||||
| あり | |||||||||||
| 左側に転倒転落 | なし | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| あり | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() | |
| 右側に転倒転落 | なし | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| あり | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
この実験は、ADXL345をベースにした推奨ソリューションで転倒転落状態を効果的に検出できることを示しています。ただし、これは単純な実験に過ぎません。推奨ソリューションの信頼性を確認するには、もっと包括的、効果的かつ長期的な実験が必要となります。
著者
Ning Jia [ ning.jia@analog.com]はフィールド・アプリケーション・エンジニアであり、アナログ・デバイセズ(中国)のアプリケーション・サポート・チームのメンバーとして2年間の実績があります。中国国内で広範なアナログ製品を技術サポートする仕事を担当しています。北京郵電大学を2007年に卒業し、信号情報処理学の修士号を取得しています。
|
ご質問、コメントなどございましたら、Analog Diablog™へ英語にてお寄せ下さい。 |