工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

スマートペン:ECE5725の最終プロジェクト

はじめに

今日、手書きの結果を得るために、人々はしばしば静電容量式タッチスクリーン、スタイラスペン、または他の同様のデバイスに依存しています。それらは機能的で正確ですが、常に柔軟であるとは限りません。私たちのプロジェクトは、Raspberry PiとIMUを組み合わせて、動きを追跡し、軌道を非常に迅速に生成できる製品を構築します。サポートのために特定の表面やその他の入力ツールを必要とせず、IMUとそのセンサーでのみ応答するシステムを設計しました。 IMUをRaspberryPiに接続することにより、IMUデバイスが移動すると、センサーデータがIMUからRaspberryPiに送信されます。次に、プログラムとアルゴリズムを使用して、IMUの動きを復元します。動きは記録され、RaspberryPiに保存されます。 PyGameを使用すると、RaspberryPiのTFT画面にも動きを表示できます。小さくて便利なボタンで、録音機能を非常に柔軟に開始および終了できます。ユーザーは、他のものにデバイスを接続して、自分の動きを追跡することもできます。したがって、私たちのデバイスは、手書きの追跡、動きの追跡などのための実行可能なソリューションを提供します。

目的

このプロジェクトの目標は、オブジェクトの動きを追跡および記録するために、ペン、ロボット、または人にさえ置くことができる別個のモジュールを設計することです。ユーザーはこのモジュールを使用して他のデバイスに接続できるため、オブジェクトが移動したときに、デバイスはユーザーの軌道を復元および追跡し、画面上のワールドフレームの水平面に移動を表示できます。非常に古典的なアプリケーションは、ユーザーがペンとして使用できるため、書き込みが記録され、画像として保存されるというものです。このプロジェクトの特別な機能は、追跡が特定の飛行機に応答せず、空中であってもすべての飛行機に適用できることです。デバイスの配置や傾きも最終結果に影響しません。

プロジェクトの主要コンポーネントとして、RaspberryPiと慣性計測ユニットを使用します。また、PyGameは、RaspberryPiの軌跡を表示するために使用されます。

IMUキャリブレーション

製造の不正確さのために、加速度計の3軸と3軸ジャイロスコープは通常ずれており、2つの座標のオイラー角の間に誤差が生じます。キャリブレーションが必要です。 6位置キャリブレーション手法を使用して、6キャリブレーション位置を次のように設定します。

自作のキャリブレーションテーブル(図XX)を使用して、imuを6つの位置に固定し、読み取り値を記録します。これらの6つの位置によって収集されたキャリブレーションデータは次のとおりです。

キャリブレーション後の加速度データは次のとおりです(Ax、Ay、Azはキャリブレーション後のデータ、ax、ay、azは生データ):

生データのセンサーフュージョン

クォータニオン計算:

クォータニオンは、オブジェクトの方向と回転を表したものであり、オイラー角よりもベクトルの回転を計算する方が簡単です。クォータニオンとオイラー角の間のトランザクションを以下に示します。

q =cosθ2+sinθ2cosα⋅i+sinθ2cosβ2⋅j+sinθ2cosγ⋅k

q =λ+ P1i + P2j + P3k

クォータニオンローテーション:

<図>

フレームXYZで調整された固定ベクトルVの場合、クォータニオンで表すことができます。

V =0 + Vxi + Vyj + Vzk

フレームがq回転する場合、X’Y’Z ’になり、X’Y’Z’で調整されたVは次のように表すことができます。

V '=0 + V'xi' + V'yj '+ V'zk'

次に、V =q∘V'∘q−1

ただし、ジャイロスコープで生成された生データを使用するだけではまだ十分ではありません。キャリブレーションの部分で言及されているミスアライメントのため、加速度計によって取得された重力ベクトルを考慮する必要があります。関数「UpdateIMU」は、ジャイロスコープによって計算された重力ベクトルと加速度計によって測定された重力ベクトルの間の誤差を計算するために使用されます。この関数は、動きも回転もなしで静止段階の最初に2000回実行され、フィードバックを使用して誤差を計算しました。機能を以下に示します:

<テーブル>
 123456789 
 def UpdateIMU(self、Gyr、Acc):if np.linalg.norm(Acc)==0:warnings.warn( "加速度計の大きさがゼロです。アルゴリズムの更新が中止されました。")return else:Acc =np.array(Acc / np.linalg.norm(Acc))v =np.array([[2 *(self.q [1] * self.q [3] --self.q [0] * self.q [2])]、[2 *(self.q [0] * self.q [1] + self.q [2] * self.q [3])]、[self.q [0] ** 2 --self.q [1] ** 2-self.q [2] ** 2 + self.q [3] ** 2]])

変数「Acc」と「v」はどちらも加速度計とジャイロスコープによって計算された正規化された重力ベクトルであり、2つのベクトル間の角度偏差(誤差)は、それらの外積を使用して表すことができます。

<テーブル>
 1 
 error =np.cross(v、np.transpose([Acc])、axis =0)

計算された誤差を統合して、PI負帰還ループを使用してジャイロスコープの読み取り値を更新することもできます(そのため、この関数を2000回実行する必要があるため、PIループが収束する可能性があります):

<テーブル>
 12 
 self.IntError =self.IntError + errorRef =Gyr --np.transpose(self.Kp * error + self.Ki * self.IntError)

クォータニオンは、修正されたジャイロスコープデータによって計算できます。

<テーブル>
 1234 
 pDot =np.multiply(0.5、self.quaternProd_single(self.q、[0、Ref [0,0]、Ref [0,1]、Ref [0,2]]))self。 q =self.q + pDot * self.SamplePeriod; self.q =self.q / np.linalg.norm(self.q); self.Quaternion =self.quaternConj(self.q); 

続きを読む:スマートペン:ECE5725の最終プロジェクト


製造プロセス

  1. 最終学年の工学部の学生のためのセンサーベースのプロジェクトのアイデア
  2. 2021年のスマート製造トレンドトップ10
  3. スマートシティの基盤としてのスマート照明
  4. オープンソースのMicroFactoryであるFirePickDeltaのプロジェクトログ
  5. Go Awayを構築してください!ロボット-子供向けの簡単なスタータープロジェクト
  6. Alexa、このランプをオンにする:AmazonEcho用のスマート3Dセンサー
  7. ヘルスバンド-高齢者向けのスマートアシスタント
  8. 現代の生活のためのスマートホームのアップグレード
  9. スマートマニュファクチャリングの見返りを見つける
  10. スマートコンタクトレンズ用超薄型センサー
  11. 自動化するプロジェクトの選択方法