自動運転車用埋め込みCパート1

May 10 2022
整数型これで、WAYMOのような自動運転車やNestのようなスマートサーモスタットの埋め込みコードを作成する準備が整いました。特定のプロセッサに送信して特定のセンサーデータを分析し、右折や暖房のオンなどの決定を行うコードを記述したいとします。

整数型

UnsplashのDavidvonDiemarによる写真

これで、WAYMOのような自動運転車やNestのようなスマートサーモスタットの埋め込みコードを作成する準備が整いました。特定のプロセッサに送信して特定のセンサーデータを分析し、右折や暖房のオンなどの決定を行うコードを記述したいとします。

座って、少し深く考えましょう。問題を分解してみましょう。問題の特定の部分だけに焦点を当てましょう。

例として、技術用語ではLOCALIZATIONと呼ばれる自動運転車の現在の位置を処理する単一の問題についてのみ説明します。私の経験では、これは技術的に最も難しい問題です。

ローカリゼーションの問題では、現在の場所、進行方向、姿勢(TRXのようにジャンプ)を決定するのに役立つ複数のセンサーデータがあります。車両が前進することを考えることに焦点を当て、どれだけ前進したかを知るだけで済みます。

UnsplashのJorgenHendriksenによる写真

問題をもっと単純化しましょう。ワイルドスピードでハゲ男が運転するようにタイヤが滑ることはないと想定します。また、タイヤが完全に丸く、タイヤが円周に回転するたびに、自信を持って前進した距離がわかると仮定しましょう。

タイヤのサイズがわかっているので、タイヤが何回回転したかを知る必要があります。そのために、ホイールの回転を追跡するエンコーダーと呼ばれるセンサーがあります。

UnsplashのBechirKaddechによる写真

エンコーダーは自転車の車輪と考えることができます。写真では、ホイールのスポークを示しています。写真から、ホイールには約48本のスポークがあることがわかります。

今、私が自転車のフロントフォークに埋め込まれた小さな人になり、ヤギに目を縛られたような一方向の視力を持っている場合、一度に1つのスポークしか見ることができません。

1分間にホイールが何回回転したかを確認したい場合は、ストップウォッチを持ってそこに留まり、スポークが表示された回数を数えます。1分間に960話を数えたとしましょう。つまり、私のホイールは20回回転しました。

ホイールの円周が2200mmだとします。つまり、私の自転車は2200 * 20 =44000mmまたは44m移動しました。これはまさに、車両の角度位置レゾルバ/エンコーダの方法です。

しかし、実際には、数を数えている車のフォークや車軸に座っている私はいない。組み込みコントローラーがそれを行います。

ここで、これに関する重要な設計上の考慮事項を考えてみましょう。私の組み込みコントローラーに、このデータを保存したいと思います。では、どのように定義すればよいですか?

したがって、組み込みアプリケーションの次の主要なパフォーマンスマトリックスを使用して、対象の変数のデータ型を常に選択する必要があります。

  1. メモリー:

2.ストレージ:

何かをするために、小さなプログラムで宣言している変数を使用する必要があるかもしれません。したがって、大きな変数を使用すると、プログラム/実行可能ファイルのサイズが大きくなり、ストレージを消費します。

3.処理能力:

以前と同じロジック。より大きな変数タイプを定義すると、プロセッサは変数に関連するものを処理するのにより多くの時間を費やします。繰り返しになりますが、フィットできるのは小さい方が良いです。

4.ハードウェア固有:

使用しているハードウェアによって、データ型に制限がある場合があります。あなたはそれをチェックする必要があります。その特定のハードウェアセットのレジスタで使用されるメモリマップは、変数のデータ型を選択する際の制約になる可能性があります。

次に、特定のアーキテクチャに関する上記のステートメントを見てみましょう。エンコーダデータに32ビットの命令セットアーキテクチャ(ISA)を使用する場合、サポートできる整数タイプに焦点を当てる必要があります。

このアーキテクチャは、16ビットの一般的なサイズのshort / short intをサポートできます。この範囲は、符号なしの場合は0〜65,535、符号付きの場合は-32,768〜32767です。

このアーキテクチャは、最大32ビットのintデータ型もサポートできます。これにより、署名なしの場合は0〜4,294,967,296の範囲になり、署名付きの場合は約-2.147e9〜+2.147e9になります。

UnsplashのHDでの科学による写真

ホイールスピードセンシングに使用しているエンコーダーが自転車のホイールスポークとまったく同じであると仮定します。したがって、最大48までカウントする必要があります。ただし、ホイール速度の検出にintまたはshortを直接使用しますか。short intを使用しても、使用する必要があるよりもはるかに多くのメモリを使用することになります。さらに、このデータを使用して処理(たとえば、通信用のサンプリング)を実行することを計画している場合、処理能力だけでなく、さらに多くのストレージを使用することになります。連鎖反応のようですね。

したがって、メモリ使用量の爆発を止めるために、他のことを行うことができます。そして、科学者と初期の建築の専門家に感謝します。<stdint.h>ライブラリを使用できます。次のボーナスを考え出します:

  1. これは、int変数の正確な幅を定義するのに役立ちます。
  2. これは、移植性にも役立ちます
  3. 読みやすさにも役立ちます

int8_tを使用して定義するだけです。カウントする必要のある数が128を超えても、255を下回っている場合でも、データ型uint8_tを使用して8ビット整数を使用できます。このようにして、他の複雑なタスクのために、プロセッサのメモリと他の弾薬を保存します。

だからここにあなたが使うことができるさまざまなタイプがあります

int8_t、int16_t、int32_t、int64_t、uint8_t、uint16_t、uint32_t、uint64_t

要約すると、組み込みアプリケーションのデータ型を決定するときは、常に次の点に注意してください。

  1. 明確さと堅牢性のために、常にポータブルな固定サイズのタイプを使用してください
  2. システム担当者に相談するか、physcisを使用して、必要な範囲と最小タイプを見積もります。

© Copyright 2021 - 2022 | hachiwiki.com | All Rights Reserved