PCRモジュールを使用して、高精度の低電力レーダベースセンサを迅速に開発

著者 Stephen Evanczuk

DigiKeyの北米担当編集者の提供

高分解能3Dセンサ技術は、ジェスチャに基づくユーザーインターフェースから車載用ドライバ支援システム(ADAS)に及ぶアプリケーションの重要な機能として登場しました。3Dセンサの代替技術の中でも、とりわけレーダ技術は従来のアプローチでは得られない機能と性能特性を提供します。少なからぬ開発者が、高い精度と低消費電力を同時に維持するのが困難であると感じていますが、レーダセンサシステムの導入は習得が容易です。

Acconeerでは、パルスコヒーレントレーダ(PCR)と呼ばれる高度な技術を使用することにより、スマート製品や他の新しいアプリケーションに必要な高い精度と低消費電力を両立する統合レーダセンサを開発しました。

この記事では、最初にAcconeerのPCRアプローチについて説明して、それからこの技術に基づくレーダモジュールと関連する開発プラットフォームを紹介します。さらに、このプラットフォームを使用して、電池駆動のスマート製品を含む幅広いシステムに、洗練されたレーダセンサ技術を組み込む方法も説明します。

なぜレーダなのか?

レーダベースのセンシング技術は高い更新周波数でミリメートル単位の分解能を提供できるため、高精度の物体検出、距離測定、位置トラッキングなどのアプリケーションで求められる高度に正確な距離およびモーションデータを生成できます。ただし、レーダ技術をスマート製品の設計に組み込むことにより、一般に開発者は低消費電力と精度のどちらを選択するかを迫られます。開発者は限られた電力バジェットでこの技術を設計に適用する方法を求めているため、アプリケーション要件では消費電力を低減しつつ精度を維持するというニーズが高まっています。

高度なレーダ技術

従来のレーダ設計の代替アプローチは、洗練されたコヒーレントレーダ方式の精度とパルスレーダシステムの低減された電力要件を組み合わせるソリューションを提供します。パルスレーダ設計はパルス間のトランスミッタをシャットダウンし、低消費電力を実現しますが、精度が落ちてしまいます。対照的に、コヒーレントレーダシステムは、帰還信号の高精度な位相測定を使用して継続的に一連のパルスを送信し、高精度の測定を提供します。ただし、消費電力が増加してしまいます。

Acconeerは、A111レーダセンサで使用されるPCR技術で、これらの技術を組み合わせています。PCR技術は、パルスレーダのように伝送間の無線をオフのままにしますが、伝送は、コヒーレントシステムのように、既知の開始位相を持つバーストパルス(またはスイープ)です(図1)。

AcconeerのA111パルスコヒーレントレーダデバイスのグラフ

図1: AcconeerのA111パルスコヒーレントレーダデバイスは、注意深く制御されたパルス繰り返し周波数(PRF)、中心周波数(fRF)、およびパルス幅(tpulse)で長短のウェーブレットを伝送することにより、低い消費電力で高い精度を実現します。(画像提供: Acconeer)

パルス幅(tpulse)などのパラメータをチューニングすることにより、開発者は異なるアプリケーションの信号を最適化できます。たとえば、開発者は tpulse を低減して、ジェスチャ制御ユーザーインターフェースアプリケーションで個々の指の小さな動きを分解するのに必要なより短いウェーブレットを生成できます。逆に、tpulse を増加させ、車載用自動駐車アプリケーションで障害物を分解するのに必要な高エネルギーの長いウェーブレットを生成することもできます。

PCRの技術的利点には魅力があるのにもかかわらず、レーダ技術の特別な専門知識を持たない大部分の開発者は、自力でこの技術を実装するのに必要な時間が取れません。開発者は、効率的なミリ波(mmWave)フロントエンド段を設計するという課題に加え、取得した振幅と反射したレーダ信号の位相データを、有用な距離とモーションの測定値に変換するという課題にも直面します。

AcconeerのPCRベースA111レーダデバイスおよび関連するソフトウェア開発キット(SDK)は、これらの課題に対処するために設計され、レーダ信号処理の低レベルな詳細を概念化します。これにより、アプリケーションがより簡単に使用できる形式でデータを提供します。

統合PCRフロントエンドによる開発の簡素化

PCR技術実装のハードウェア面を簡素化することにより、AcconeerのA111はmmWaveレーダフロントエンドを、5.2mm x 5.5mm x 0.88mmのフリップチップチップスケールパッケージ(fcCSP)でアンテナインパッケージ(AIP)と統合する完全なレーダセンサを提供します(図2)。

AcconeerのA111がミリ波無線を統合する様子を示す図

図2:AcconeerのA111は、ミリ波無線、デジタルサブシステム、タイミング、および電源管理を統合し、パルスコヒーレントレーダ技術を使用して、レーダセンシングの完全なフロントエンドソリューションを提供します。(画像提供: Acconeer)

mmWave無線周波数(RF)サブシステムに加え、A111には、mmWave無線サブシステムを管理するために、プログラムおよびデータ専用のメモリ領域を持つデジタルサブシステムも含まれます。別個のサブシステムが、位相ロックループ(PLL)のタイミング、パワーオン リセット(PoR)およびデバイスの複数パワー ドメイン用の別個の低ドロップアウト(LDO)レギュレータを含む電源管理機能を提供します。

このデバイスは、ピコ秒単位の時間分解能を備えており、通常は最大2メートル圏でミリメートル単位の精度で距離を測定することができます。同時に、その低い消費電力機能により、開発者は電池駆動デバイスでも使用できます。A111センサの高レベルな統合により、開発者がレーダセンシングを設計に実装するためには、ホストマイクロコントローラ以外に、いくつかの追加コンポーネントしか必要としません(図3)。A111はレーダ信号用の開口部なしでも動作可能であるため、開発者は既存の侵入保護要件を妥協せずにA111をスマート製品に組み込むことができます。

AcconeerのA111マイクロコントローラの図

図3: A111はレーダフロントエンドに必要なすべての無線周波数とデジタルサブシステムを統合しているため、ホストマイクロコントローラ以外に数個のコンポーネントを追加するだけでレーダセンシングを実装できます。(画像提供: Acconeer)

A111は、シリアルデータ入力(MOSI)、シリアル出力(MISO)、クロック(SPI_CLK)、およびスレーブセレクト信号(SS)ポートを備えた従来のシリアルペリフェラルインターフェース(SPI)デバイスとして機能します。A111のENABLEピンにより、開発者はマイクロコントローラを使用してデバイスのパワーアップおよびパワーダウンができます。また、INTERRUPTピンにより、開発者はA111を使用して測定値の準備ができたことをマイクロコントローラに通知できます。

ENABLEを使用してパルススイープ伝送間でA111をオフにすることにより、開発者はA111の電力消費を66µA(標準)に低減できます。逆に、A111が一連のスイープおよび測定を実行している間は、ホストマイクロコントローラを低電力スリープ状態にすることができます。これには、Arm® Cortex®-Mベースのプロセッサで利用できるwait-for-interrupt(WFI)命令を使用し、A111が動作を完了して割り込みを発行するとマイクロコントローラをウェイクします。

設計者は独自の高精度なクロックソースを追加するか、デバイスの内部クロック回路に頼ることができます。これには、EPSONTSX-3225のような外部水晶発振器のみを必要とします。デバイスは、RF(VIO_1およびVIO_2)およびデジタル(VIO_3)の単一1.8ボルト電源で動作します。また、開発者はより電力集約型なアプリケーションに対して別個の電源を使用することもできます。図3で示すVIO_NaおよびVIO_Nbピンはデバイス内で接続されていますが、Acconeerはプリント基板の外部に接続することも推奨しています。

純粋なレーダフロントエンドデバイスとして開発されたA111は、それ自体に永久的なファームウェアを保存しません。その代わりに、ホストマイクロコントローラに依存して、すべてのセンサソフトウェアをアップロードしたり、A111センサの起動、設定、スイープの取得、および信号処理を実行したりします。その結果として、一緒に使用するマイクロコントローラの選択は設計上の重要な決定事項となります。Acconeerは、STMicroelectronicsSTM32L476またはNordic SemiconductorNRF52840のようなArm Cortex-M4ベースのマイクロコントローラが、距離測定または基本的なモーション検出のような比較的スタティックな動作の処理には通常十分であるとしています。ブリージングモーション検出または物体トラッキングのようなよりダイナミックなアプリケーションについては、AcconeerはMicrochip TechnologyATSAME70などのArm Cortex-M7ベースのマイクロコントローラを推奨しています。そのため、AcconeerはA111 PCRデバイスを同社のXM112レーダモジュール内でATSAME70と組み合わせています。

AcconeerのXM112モジュールは、A111レーダセンサをMicrochip TechnologyのATSAME70マイクロコントローラと組み合わせて、完全なレーダサブシステムを提供します。開発者は、XM112をXB112ブレイクアウトボードと併用することにより、A111の評価とPCRベースのソフトウェアアプリケーションの構築をすぐに開始できます。また、開発者は30ピン24mm x 16mmモジュールを独自のPCBに接続して、自己完結型PCRサブシステムをカスタム設計に追加することもできます。レーダセンシングを実行するために、開発者は開発システムとのシリアル接続を介してXM112モジュールを制御できます。または、XM112のホストATSAME70マイクロコントローラ上でソフトウェアを直接実行できます。

ソフトウェアインターフェース

ハードウェアシステム構成に関係なく、レーダ測定はAcconeerレーダシステムソフトウェア(RSS)アプリケーションプログラミングインターフェース(API)を使用して、プログラムにより制御されます。RSS APIは、A111と連携するための単一ソフトウェアインターフェースとして機能します。Acconeerは、設計、較正、および処理要件の複雑さを理由として、一般的なSPIトランザクションを介したA111レジスタへのアクセスをサポートしません。代わりに、すべての動作はA111の検出器機能を提供するRSS経由で実行されます。次いで、これらの検出器は低レベルのサービス上にAPI経由で構築され、A111から前処理されたさまざまなタイプのデータにアクセスします。これらのサービスには次が含まれます。

  • センサデータの振幅に関する情報を提供するEnvelopeサービス
  • 定義済みの距離間隔(ビン)で振幅情報を提供するPower Binサービス
  • IQ変調データを提供するIQサービス(位相および振幅測定を使用して、EnvelopeおよびPower Binサービスの振幅よりも高精度の測定値を生成することが可能)

これらのサービス内で、開発者は電源管理、範囲強化、および自己較正などの特長を活用できます。

電源管理では、開発者はセンサのアップデートレートを減らすことで電力消費を低減する4つの電源モードの1つにデバイスを設定できます。範囲強化機能により、開発者は測定範囲を一部の条件下で最大7メートル拡張するロングスイープを実行できます。最後に、自己較正機能により、開発者はデバイスの起動時に毎回発生する較正サイクルに関連した電力消費を低減できます。たとえば、IoTの電池駆動設計では、デバイスは周期的にスリープモードに移行されたり、非アクティビティの期間が延長されるとオフにされたりします。

多くの場合、各ウェイクサイクルの初めに自己較正を実行する必要はなく、電力の無駄になるだけです。代わりに、開発者は不揮発性メモリの初期較正サイクルからの値を保存し、それらの値を使用して、以降のウェイク期間中に確実に測定を実行できます。

本番のコード開発では、AcconeerのSDKに加えて、サンプルアプリケーションソースコードを提供する完全なソフトウェアディストリビューションパッケージをダウンロードできます。SDKにはヘッダファイルに加え、Arm Cortex-M4とArm Cortex-M7マイクロコントローラ用のコンパイル済みRSSライブラリが含まれています(マイクロコントローラの種類により別個のディストリビューションで提供)。

SDKのC言語コードサンプルは、RSS APIを使用して本番アプリケーションでレーダ測定を実行するための基本設計パターンを示しています。どのタイプの測定においても、この設計パターンは最初に、順番に次の3つのルーチンを呼び出して、システムとRSSを初期化します。

  • 基板とGPIOを初期化する acc_driver_hal_init()
  • C構造acc_hal_tのインスタンスを作成する acc_driver_hal_get_implementation()。これは、センサおよび基板プロパティに加え、メモリ割り当てやセマフォ用のランタイムハンドラへのポインタを保持します。
  • レーダシステムサービス(RSS)ユーティリティ自体をアクティブ化する acc_rss_activate_with_hal()

ここからは、一般的な測定では構成と呼ばれるオブジェクトの作成が必要となります。これには、センサおよび特定の測定に関連したパラメータが含まれます。次に、その構成は、RSS API関数を呼び出して、必要な検出器またはサービスを作成するために使用されます。サンプルコードでは、この設計パターンのアプリケーションを example_detector_distance_peak.c モジュールで示しています。ここでは、距離ピーク検出器を作成して作業します。そのモジュールでは、main()ルーチン(リスト1)が、最初に初期化とRSSのアクティブ化を実行してから構成(acc_detector_distance_peak_configuration_create())を作成し、その構成を使用してピーク検出器(distance_peak_detect_with_blocking_calls())を作成します。

コピー int main(void) {    acc_detector_distance_peak_status_t detector_status;      printf("Acconeer software version %s\n", ACC_VERSION);    printf("Acconeer RSS version %s\n", acc_rss_version());      if (!acc_driver_hal_init())    {       return EXIT_FAILURE;    }      acc_hal_t hal = acc_driver_hal_get_implementation();      if (!acc_rss_activate_with_hal(&hal))    {       return EXIT_FAILURE;    }      //Create the detector configuration    acc_detector_distance_peak_configuration_t distance_configuration = acc_detector_distance_peak_configuration_create();      if (distance_configuration == NULL)    {       fprintf(stderr, "\nacc_service_distance_configuration_create() failed");       return EXIT_FAILURE;    }      //Run distance peak detection in blocking mode    detector_status = distance_peak_detect_with_blocking_calls(distance_configuration);    if (detector_status != ACC_DETECTOR_DISTANCE_PEAK_STATUS_SUCCESS)    {       fprintf(stderr, "Running distance peak detector in blocking mode failed");       acc_detector_distance_peak_configuration_destroy(&distance_configuration);       acc_rss_deactivate();       return EXIT_FAILURE;    }      detector_status = distance_peak_detect_with_blocking_calls_with_estimated_threshold(distance_configuration);    if (detector_status != ACC_DETECTOR_DISTANCE_PEAK_STATUS_SUCCESS)    {       fprintf(stderr, "Running distance peak detector in blocking mode with estimated threshold failed");       acc_detector_distance_peak_configuration_destroy(&distance_configuration);       acc_rss_deactivate();       return EXIT_FAILURE;    }      acc_detector_distance_peak_configuration_destroy(&distance_configuration);      acc_rss_deactivate();      return EXIT_SUCCESS; } 

リスト1: Acconeerソフトウェア開発キットディストリビューションに含まれるサンプルコードは、Acconeerレーダシステムサービス(RSS)アプリケーションプログラミングインターフェース(API)を使用してAcconeer A111センサで測定を実行するための基本設計パターンを示しています。(コード提供: Acconeer)

このサンプルアプリケーションでは、実際の距離ピーク測定が distance_peak_detect_with_blocking_calls() ルーチンで実行されます。次いで、このルーチンはRSS API機能 acc_detector_distance_peak_get_next() を使用して、A111デバイスから実際の測定データを取得します(リスト2)。この場合、コードは acc_detector_distance_peak_get_next() 測定ルーチンをループに配置し、測定を100回実行するまで detection_runs カウントを減少させます。

Copy    detector_status = acc_detector_distance_peak_activate(handle);      if (detector_status == ACC_DETECTOR_DISTANCE_PEAK_STATUS_SUCCESS)    {       uint_fast8_t detection_runs = 100;         while (detection_runs > 0)       {          reflection_count = 10;            detector_status = acc_detector_distance_peak_get_next(handle,                                                                reflections,                                                                &reflection_count,                                                                &result_info);            if (detector_status == ACC_DETECTOR_DISTANCE_PEAK_STATUS_SUCCESS)          {             printf("Distance detector: Reflections: %u.Seq.nr: %u.(%u-%u mm): %s\n",
                   (unsigned int)reflection_count,
                   (unsigned int)result_info.sequence_number,
                   (unsigned int)(start_m * 1000.0f),
                   (unsigned int)(end_m * 1000.0f),
                   format_distances(reflection_count, reflections, metadata.free_space_absolute_offset));
         }
         else
         {
            fprintf(stderr, "reflection data not properly retrieved\n");
         }
 
         detection_runs--;
      }

リスト2: Acconeer A111センサを使用して測定を実行する場合、開発者はAcconeerレーダシステムサービス(RSS)アプリケーションプログラミングインターフェース(API)を通してのみ作業し、このスニペットで示すような低レベルな詳細を処理する acc_detector_distance_peak_get_next() などのRSSルーチンを呼び出します。(コード提供: Acconeer)

開発者は、初期化、RSSのアクティブ化、構成の作成、およびサービスのインスタンス作成において類似の設計パターンでサービスコールを使用し、独自の検出器を実装できます。たとえば、Envelopeサービスを使用する場合、acc_service_envelope_configuration_create() を呼び出して必要な構成を作成し、acc_service_create() を呼び出してサービスオブジェクトのインスタンスを作成する際にその構成をパラメータとして使用するとよいでしょう。

C言語のサンプルコードを閲覧することにより、RSS APIを使用して、カスタム検出器を備えた特殊レーダアプリケーションの構築における経験を素早く得ることができます。開発者が一般的なレーダベースのセンシング(特にRSSサービス)に早く慣れることができるようにと、AcconeerではPython Exploration Kitソフトウェアリポジトリでもサンプルコードを提供しています。

Python Exploration Kitは、Acconeer SDKおよびXM112などの評価キットと連携できるよう設計されており、開発者がRSSサービスや検出器との連携におけるPythonの生産性メリットを活用するのに役立ちます。このキットは、基本的な例に加えて、高度に洗練された測定アプリケーションを実装するためのサンプルコードを提供します。これには、睡眠中の対象の呼吸パターンの検出、位相情報を使用した相対的移動のトラッキング、接近する障害物の検出などが含まれます。

結論

レーダセンシング技術は、距離およびモーションアプリケーションにおいて高精度の測定を提供できます。ただし、この技術は精度を達成するために多くの電力を消費する場合があり、一般的に複雑な設計プロセスが関係しています。PCRを実装することにより、AcconeerのA111統合レーダセンサは、スマート製品や他の新しいアプリケーションに必要な高い精度と低消費電力を提供します。対応するソフトウェア開発キット(SDK)は、レーダ信号処理の複雑さを概念化し、アプリケーションレベルで求められるより高レベルのデータを提供します。

A111ベースの開発ボードとSDKを使用することにより、開発者はレーダセンシング技術における経験を素早く得ることができ、ミリメートル分解能で物体を識別し動作をトラッキングする洗練されたアプリケーションを迅速に実装できます。

DigiKey logo

免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、DigiKeyの意見、信念および視点またはDigiKeyの公式な方針を必ずしも反映するものではありません。

著者について

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk氏は、IoTを含むハードウェア、ソフトウェア、システム、アプリケーションなど幅広いトピックについて、20年以上にわたってエレクトロニクス業界および電子業界に関する記事を書いたり経験を積んできました。彼はニューロンネットワークで神経科学のPh.Dを受け、大規模に分散された安全システムとアルゴリズム加速法に関して航空宇宙産業に従事しました。現在、彼は技術や工学に関する記事を書いていないときに、認知と推薦システムへの深い学びの応用に取り組んでいます。

出版者について

DigiKeyの北米担当編集者