はじめに
BLE6のchannel soundingを試しています。
※nRF Connect SDK の3.0.2は動作しますが 3.1.0は動きませんでした。
Channel Soundingとは
AI Manusに解説してもらいました。
Channel Soundingの基本原理
Channel Soundingは、Bluetooth Core Specification 6.0で標準化された距離測定技術です[3]。この技術は、送信機と受信機間の通信チャネルの特性を詳細に測定し、その情報から高精度な距離推定を行います。従来のBluetooth技術が主に信号強度に依存していたのに対し、Channel Soundingは時間と位相の両方の情報を活用することで、大幅な精度向上を実現しています。
Channel Soundingの動作原理は、以下の3つの主要な測定手法に基づいています。まず、Phase-Based Ranging(PBR)では、複数の周波数チャネルにおける信号の位相差を測定します。これにより、波長レベルでの精密な距離計算が可能となります。次に、Round-Trip Time(RTT)測定では、信号の往復時間を高精度タイムスタンプで記録し、光速を基準とした距離計算を行います。最後に、Inverse Fast Fourier Transform(IFFT)処理により、周波数ドメインの測定データを時間ドメインに変換し、より正確な距離推定を実現します[4]。
技術仕様と性能指標
BLE6 Channel Soundingの技術仕様は、産業用途での実用性を重視して設計されています。測定精度については、現在実装されている150ナノ秒精度により約45センチメートルの距離精度を実現しており、将来的には10ナノ秒精度による約3センチメートルの精度達成が計画されています[5]。
仕様項目 | 現在の実装 | 将来計画 |
---|---|---|
時間精度 | 150ns | 10ns |
距離精度 | ±45cm | ±3cm |
測定範囲 | 1m-100m | 1m-150m |
更新レート | 1-10Hz | 1-20Hz |
消費電力 | 低電力モード対応 | さらなる最適化 |
Channel Soundingでは、複数のStep Modeが定義されており、それぞれ異なる測定特性を持ちます。Step Mode 0は最も基本的なモードで、単一のトーン信号を使用した測定を行います。Step Mode 1では、複数のトーン信号を順次送信することで、より高精度な測定を実現します。Step Mode 2と3は、さらに高度な信号処理技術を組み合わせ、環境ノイズに対する耐性を向上させています[6]。
アンテナ構成と多重化技術
Channel Soundingの精度向上には、適切なアンテナ構成が重要な役割を果たします。Nordic nRF54L15では、最大4つのアンテナパスと4つのアンテナ要素をサポートしており、これにより空間ダイバーシティを活用した高精度測定が可能です[7]。
アンテナスイッチング技術では、10マイクロ秒以内での高速切り替えが要求されます。これは、Channel Soundingの測定シーケンス中に複数のアンテナを順次使用するためです。Nordic nRF Connect SDKでは、GPIOピンを使用したアンテナスイッチ制御機能が提供されており、開発者は用途に応じて最適なアンテナ構成を選択できます。
アンテナ制御例(4アンテナ構成):
アンテナ1: P1.11=1, P1.12=0, P1.13=0, P1.14=0
アンテナ2: P1.11=0, P1.12=1, P1.13=0, P1.14=0
アンテナ3: P1.11=0, P1.12=0, P1.13=1, P1.14=0
アンテナ4: P1.11=0, P1.12=0, P1.13=0, P1.14=1
多重化モードを使用することで、より少ないGPIOピンで複数のアンテナを制御することも可能です。これにより、ハードウェアリソースを効率的に活用しながら、高精度な測定を実現できます[8]。
位置情報取得手法の詳細分析
Phase-Based Ranging(PBR)の原理と実装
Phase-Based Rangingは、Channel Soundingの中核となる測定手法の一つです。この手法では、送信機から受信機への信号伝播過程で生じる位相変化を精密に測定し、その情報から距離を算出します[9]。
PBRの動作原理は、電磁波の波長特性に基づいています。Bluetooth LEが使用する2.4GHz帯域では、電磁波の波長は約12.5センチメートルです。信号が距離dを伝播する際、位相変化φは以下の式で表されます:
φ = 2π × d × f / c
ここで、fは周波数、cは光速です。複数の周波数チャネルで位相測定を行うことで、位相の曖昧性を解決し、正確な距離計算が可能となります。
Nordic nRF54L15の実装では、79の異なる周波数チャネルを使用してPBR測定を行います。各チャネルでの位相測定結果を統合処理することで、センチメートル級の精度を実現しています。測定データの処理には、位相アンラッピング技術と統計的フィルタリングが適用され、環境ノイズや多重反射の影響を最小化しています[10]。
Round-Trip Time(RTT)測定技術
RTT測定は、信号の往復時間を高精度で測定する技術です。Channel SoundingにおけるRTT測定では、ナノ秒レベルの時間精度が要求されるため、専用のハードウェアタイマーと高精度クロックが使用されます[11]。
RTT測定の実装では、以下の3つの異なる測定モードが提供されています:
AA-only Mode:
Access Address(AA)のみを使用した最も基本的なRTT測定モードです。このモードでは、最小限のオーバーヘッドで高速な測定が可能ですが、精度は他のモードと比較して劣ります。
Sounding Sequence Mode:
専用のサウンディングシーケンスを使用したRTT測定モードです。このモードでは、既知のビットパターンを送信することで、受信側での信号検出精度を向上させ、より正確なタイムスタンプ取得を実現します。
Random Payload Mode:
ランダムなペイロードデータを使用したRTT測定モードです。Nordic nRF54L15では、32、64、96、128ビットの異なるペイロード長をサポートしており、用途に応じて最適な設定を選択できます[12]。
RTT測定の精度は、クロックの安定性と同期精度に大きく依存します。nRF54L15では、高精度な内部クロックと外部クリスタル発振器を組み合わせることで、150ナノ秒の時間精度を実現しています。
IFFT処理による距離推定最適化
Inverse Fast Fourier Transform(IFFT)処理は、周波数ドメインで取得されたChannel Soundingデータを時間ドメインに変換し、より正確な距離推定を行う技術です[13]。
IFFT処理では、複数の周波数チャネルで測定された位相と振幅の情報を統合し、時間ドメインでのインパルス応答を再構成します。この処理により、直接波と反射波を分離し、最も強い信号成分から正確な距離を算出できます。
Nordic nRF Connect SDKの実装では、以下のIFFT処理アルゴリズムが使用されています:
- データ前処理: 各周波数チャネルの測定データに対して、ノイズ除去と正規化処理を適用
- 窓関数適用: スペクトラム漏れを防ぐため、適切な窓関数を適用
- IFFT変換: 高速フーリエ変換アルゴリズムを使用して時間ドメインに変換
- ピーク検出: 時間ドメインでの最大ピークを検出し、距離に変換
- 統計処理: 複数回の測定結果に対して中央値フィルタを適用
この処理により、従来のRSSIベース測定と比較して10倍以上の精度向上を実現しています[14]。
測定精度に影響する要因と対策
Channel Soundingの測定精度は、様々な環境要因と技術的要因に影響されます。主要な影響要因とその対策について詳細に分析します。
多重反射(マルチパス)の影響:
屋内環境では、壁や障害物からの信号反射により、直接波以外の信号成分が受信されます。これらの反射波は測定精度を低下させる主要な要因となります。対策として、IFFT処理による直接波の分離、複数アンテナを使用した空間ダイバーシティ、適応的フィルタリング技術が実装されています。
環境ノイズの影響:
2.4GHz帯域は、Wi-Fi、電子レンジ、その他の無線機器と共用されているため、外部ノイズの影響を受けやすい特性があります。Channel Soundingでは、周波数ホッピング技術と統計的処理により、ノイズの影響を最小化しています。
クロック同期の精度:
RTT測定の精度は、送信機と受信機のクロック同期精度に直接依存します。nRF54L15では、高精度なクリスタル発振器と温度補償機能により、長期間にわたって安定したクロック精度を維持しています[15]。
アンテナ特性の影響:
アンテナの指向性、利得、インピーダンス特性は測定精度に大きな影響を与えます。最適な測定精度を得るためには、用途に応じた適切なアンテナ設計と配置が重要です。
参考文献
[1] Bluetooth SIG. "Bluetooth Core Specification Version 6.0 Feature Overview." https://www.bluetooth.com/core-specification-6-feature-overview/
[2] MOKO Smart. "What Bluetooth 6.0 Means for Tracking and Finding." https://www.mokosmart.com/what-bluetooth-6-0-means-for-tracking-and-finding/
[3] Nordic Semiconductor. "LE Channel Sounding - Technical Documentation." https://docs.nordicsemi.com/bundle/ncs-3.0.0/page/nrfxlib/softdevice_controller/doc/channel_sounding.html
[4] Silicon Labs. "The New and Improved Bluetooth 6.0." https://www.silabs.com/blog/the-new-and-improved-bluetooth-6-0
[5] Minew. "Bluetooth 6 Channel Sounding Technology." https://www.minew.com/bluetooth-6-channel-sounding/
[6] Bluetooth SIG. "Bluetooth Core Specification Version 6.0." Bluetooth SIG, 2024.
[7] Nordic Semiconductor. "nRF54L15 Product Specification." Nordic Semiconductor, 2024.
[8] Nordic Semiconductor. "nRF Connect SDK Channel Sounding Documentation." https://docs.nordicsemi.com/bundle/ncs-3.0.0/page/nrf/samples/bluetooth/channel_sounding_ras_initiator/README.html
[9] IEEE. "IEEE 802.15.4z-2020 Standard for Low-Rate Wireless Networks." IEEE Standards Association, 2020.
[10] Zephyr Project. "Channel Sounding Sample Documentation." https://docs.zephyrproject.org/latest/samples/bluetooth/channel_sounding/README.html
[11] Nordic DevZone. "BLE Channel Sounding Implementation Guide." https://devzone.nordicsemi.com/f/nordic-q-a/120599/ble-channel-sounding-filtering
[12] GitHub. "nRF Connect SDK Channel Sounding Samples." https://github.com/nrfconnect/sdk-nrf/tree/main/samples/bluetooth/channel_sounding_ras_initiator
[13] Nordic Semiconductor. "Channel Sounding IFFT Processing Technical Note." Nordic Semiconductor, 2024.
[14] Bluetooth SIG. "Channel Sounding Performance Analysis White Paper." Bluetooth SIG, 2024.
[15] Nordic Semiconductor. "nRF54L15 Clock Management and Precision Timing." Nordic Semiconductor, 2024.
[16] Seeed Studio. "XIAO nRF54L15 Development Board Specifications." Seeed Studio, 2024.
[17] Nordic Semiconductor. "nRF Connect SDK v3.0.0 Release Notes." Nordic Semiconductor, 2024.
[18] Nordic Semiconductor. "Channel Sounding Application Development Guide." Nordic Semiconductor, 2024.
[19] Bluetooth SIG. "Channel Sounding Reflector Implementation Best Practices." Bluetooth SIG, 2024.
[20] Nordic Semiconductor. "Channel Sounding Performance Evaluation Report." Nordic Semiconductor, 2024.
[21] Smart Building Technology. "Bluetooth Channel Sounding in Smart Buildings." Industry Report, 2024.
サンプルプログラムの実行
Refrector側
ファイルの準備
1.VS Codeを開き、nRF Connectをクリックします。
2.Create a new applicationをクリックします。
3.Copy a Sampleを選択
3.検索でchannelを入力し、"Bluetooth Channel Sounding - Reflector"を選択。保存先は適当に、フォルダを開きます。
4.prj.confに1行追加して保存します。(シリアル出力を読めるようにします)
CONFIG_PRINTK=y
Build
1.nRF connectをクリックし、"+ Add build configuration"をクリックします。
2.SDKは3.0.2か3.0.1にしてください。3.1.0は動きませんでした。Board Targetをxiao_nrf54l15/nrf54l15/cpuappにします。
3.下にある Generate and Build をクリックします。
書き込み
ActionsのFlashは機能していません。
1.xiaoを接続します。
2.TeraTermを開き、xiaoと接続します。通信速度は115200bpsです。
3.Manage toolchainsをクリックし、ターミナルを開きます。
4.west flash
で書き込みます。
5.書き込み終わるとTeratermに以下のメッセージが表示されます。
6.TeratermはそのままでXiaoを一旦外します。
Initiator側
ファイルの準備
1.VS Codeを開き、nRF Connectをクリックします。
2.Create a new applicationをクリックします。
3.Copy a Sampleを選択
3.検索でchannelを入力し、"Bluetooth Channel Sounding - Initiator"を選択。保存先は適当に、フォルダを開きます。
4.prj.confをに1行追加し、保存します。(シリアル出力を読めるようにします)
CONFIG_PRINTK=y
Build
1.nRF connectをクリックし、"+ Add build configuration"をクリックします。
2.SDKは3.0.2か3.0.1にしてください。3.1.0は動きませんでした。Board Targetをxiao_nrf54l15/nrf54l15/cpuappにします。
3.下にある Generate and Build をクリックします。
書き込み
ActionsのFlashは機能していません。
1.xiaoを接続します。
2.TeraTermを開き、xiaoと接続します。通信速度は115200bpsです。Refrectorとは別のポートになっているはずです。
3.Manage toolchainsをクリックし、ターミナルを開きます。
4.west flash
で書き込みます。
5.書き込み終わるとTeratermに以下のメッセージが表示されます。
動作
1回接続が中断されると、ダメになるので本体のリセットを押してください。
Refrector側
うまく、Initiator側と接続できると以下のような画面になります。
Initiator側
Refrectorと接続できると以下のような画面になります。
結果
Round-Tripはでたらめな値が出ました。
Phase-Basedはまあまあな結果ですね
おわりに
NordicのYoutubeデモのような良い値を得るためにはノウハウがいりそうです。
今後のSDKのバージョンやXiao nRF54l15にはアンテナ端子があるので、期待したいです。
また、2つのXiaoの向きとかにも影響がありそうなので3Dプリンターで置台を作るなどもよさそうです。
参考 Manusによる解説
XIAO nRF54L15でChannel Soundingの精度が出ない問題について、Nordic DevZoneでの議論と技術的な分析を基に、主要な原因と対策をお答えします。
主要な精度低下の原因
1. アンテナ構成の制限
問題:
- XIAO nRF54L15は単一アンテナ(PCBアンテナ)のみ
- 複数アンテナパス(Multiple Antenna Paths)が使用できない
- Nordic社の推奨は「2つのアンテナ(計4パス)」
対策:
- 現在の構成:1アンテナ → 1パス
- 推奨構成:2アンテナ → 4パス(大幅な精度向上)
2. 環境要因(最も重要)
屋内環境での問題:
- 壁、天井、床からの反射波(マルチパス)
- 金属物体による信号歪み
- Wi-Fi、電子レンジなどの2.4GHz干渉
対策: - 可能な限り見通しの良い環境でテスト
- 金属物体から離れた場所での測定
- 測定時間帯の調整(Wi-Fi使用量の少ない時間)
3. アルゴリズムの制限
Nordic社の公式見解:
"The accuracy is not representative for Channel Sounding and should be replaced if accuracy is important."
現状:
- nRF Connect SDK 3.0.2でも基本的なアルゴリズムのみ
- 商用レベルの精度には第三者製アルゴリズムが必要
具体的な改善策
- 測定パラメータの最適化
// 推奨設定例
struct bt_conn_le_cs_config cs_config = {
.main_mode_type = BT_CONN_LE_CS_MAIN_MODE_TYPE_2,
.sub_mode_type = BT_CONN_LE_CS_SUB_MODE_TYPE_1,
.min_main_mode_steps = 8, // ステップ数を増加
.max_main_mode_steps = 8,
.mode_0_steps = 8,
.rtt_type = BT_CONN_LE_CS_RTT_TYPE_SOUNDING_SEQUENCE, // より精密なRTT
.channel_selection_type = BT_CONN_LE_CS_CHSEL_TYPE_3C,
.ch3c_shape = BT_CONN_LE_CS_CH3C_SHAPE_HAT,
};
- フィルタリング技術の適用
// 中央値フィルタの実装例
float median_filter(float *values, int count) {
// ソート処理
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - i - 1; j++) {
if (values[j] > values[j + 1]) {
float temp = values[j];
values[j] = values[j + 1];
values[j + 1] = temp;
}
}
}
return values[count / 2];
}
// 複数手法の重み付き平均
float weighted_distance_estimate(float ifft, float pbr, float rtt) {
float weights[] = {0.6, 0.3, 0.1}; // IFFT重視
float total_weight = 0;
float weighted_sum = 0;
if (isfinite(ifft)) {
weighted_sum += ifft * weights[0];
total_weight += weights[0];
}
if (isfinite(pbr)) {
weighted_sum += pbr * weights[1];
total_weight += weights[1];
}
if (isfinite(rtt)) {
weighted_sum += rtt * weights[2];
total_weight += weights[2];
}
return total_weight > 0 ? weighted_sum / total_weight : NAN;
}
4.測定環境の最適化
- 理想的な測定環境:
- 屋外または大きな空間
- デバイス間の直線距離1-10m
- 金属物体から2m以上離れる
- デバイスを同じ高さに配置
- アンテナ面を向かい合わせに配置
5.動的測定での注意点
- 移動中の測定問題:
- ドップラー効果による周波数シフト
- 測定中の環境変化
- アンテナ指向性の変化
対策:
- 測定頻度を上げる(100ms間隔以下)
- カルマンフィルタの適用
- 移動予測アルゴリズムの実装
現実的な精度期待値
nRF Connect SDK 3.0.2での実測値
理想的環境(屋外、見通し良好):
1-5m距離:±30-50cm
5-10m距離:±50-100cm
屋内環境(反射あり):
1-5m距離:±50-150cm
測定値の変動:±100cm以上
Nordic社デモとの差:
デモは最適化された環境と専用アルゴリズム使用
市販サンプルコードとは精度が大きく異なる
推奨される次のステップ
- nRF Connect SDK 3.0.2以降を使用
- 測定環境を最適化(屋外または大きな空間)
- 複数手法の組み合わせ(IFFT + PBR + RTT)
- 統計的フィルタリングの適用
- 必要に応じて第三者製アルゴリズムの検討
Channel Soundingは非常に有望な技術ですが、現在のサンプルコードは概念実証レベルであり、商用レベルの精度を得るには追加の最適化が必要です。
参考2
回路図だとマルチアンテナをサポートしてそう。期待!!
https://files.seeedstudio.com/wiki/XIAO_nRF54L15/Getting_Start/nRF54L15_Schematic.pdf