Arduino卒業プロジェクト ~Arduino+PID+AIによる自動運転車制御システムの設計と実装(卒業論文+プログラムソースコード)~ 自動運転車制御システム

Arduino+PID+AIによる自動運転車制御システムの設計と実装(卒業論文+プログラムソースコード)

皆さんこんにちは、今日はArduino+PID+AIをベースにした自動運転車制御システムの設計と実装を紹介します 記事の最後に卒業制作の論文とソースコードのダウンロードアドレスを添付します。提案レポートPPTテンプレートや論文弁論PPTテンプレートなどをダウンロードする必要がある友人は、私のブログのホームページにアクセスして、左側の下の列にあるセルフサービスのダウンロード方法を表示できます。

記事ディレクトリ:

1. プロジェクト紹介

  1. 近年、あらゆる社会は大きく変化し、エレクトロニクス技術やAI技術の発展により、人類は人工知能の時代を迎えています。人工知能は常に最適化して伝統的な産業を置き換え、人間の事務作業の効率を絶えず改善し、人々の生産と生活を大幅に促進しています。国内外の自動運転における人工知能の応用も絶えず改善されており、自動運転には将来的に幅広い展望があります。自動運転技術の重要な部分として、自動制御は決定的な役割を果たしており、自動制御の研究にとって非常に重要です。この記事では主に自動運転車の制御システムを独自に設計し、それを人工知能と組み合わせます。この論文の主な研究内容は以下の通りである:
    (1) 自動運転車の全体的な設計計画を提案し、動的解析を実施し、最終的にシステムの制御目標を決定して計画を設計する。
    (2) システムの制御目標に対するモデルシミュレーション設計を実行し、Matlab を使用して PID 制御システムをシミュレーションし、制御プロセスを分析および調整します。SolidWorks を使用して、車の各モジュールと形状を正確にシミュレートします。
    (3) システムのハードウェア部分の機能要件を分析し、主な制御を Arduino として決定し、モータードライバーやその他のセンサーを選択し、システム回路を設計します。
    (4) システムソフトウェア部分を設計し、主要な制御部分を分析し、制御フローチャートを設計し、システムのメインプログラムと各モジュールのプログラミングを完成させ、テストを完了します。
    (5)完成した自動運転車制御システムの全体テストと最適化を実施します。車の各モーターの速度は0.5秒以内に±0.3cm/s以内の目標値に達し、システムが設定した速度と角度の調整を完全に実現できます。


2. リソースの詳細

プロジェクトの難易度: 中程度の難易度
該当するシナリオ: 関連トピックに関する卒業プロジェクトの
論文 ワード数: 20,766 ワード、57 ページ
内容: ソース コードの完全なセット + 完全な論文
提案レポート、論文弁論、プロジェクト レポートなど ppt テンプレート 推奨されるダウンロード方法:
ここに画像の説明を挿入します


3. キーワード

自動運転制御システム モーター制御 Arduino

4. ビシェ​​の紹介

ヒント: 以下は卒業論文の簡単な紹介です。プロジェクトの完全なソース コードと完全な卒業論文のダウンロード アドレスは記事の最後にあります。

第 1 章 はじめに
1.1 研究の目的と意義
今日の社会において、科学技術の絶え間ない発展に伴い、産業界は大きく変化してきました。エレクトロニクスとAI技術の発展により、人類は人工知能の時代を迎えました。人工知能の第3波の到来により、人工知能はさまざまな業界に大きな変化をもたらすことは間違いありません。AI は新しい時代の人気のある研究方向となっています。人工知能は常に最適化して伝統的な産業を置き換え、人間の事務作業の効率を絶えず改善し、人々の生産と生活を大幅に促進しています。国内外の自動運転における人工知能の応用も絶えず改善されており、自動運転には将来的に幅広い展望があります。自動運転技術の重要な部分として、自動制御は決定的な役割を果たしており、自動運転の研究にとって非常に重要です。

この質問を通じて、科学研究の一般的なプロセスを理解し、問題を分析して解決する能力を発揮し、人工知能学習の基本プロセスと知識スキルを習得し、自動制御の原理を習得するだけでなく、制御と制御を組み合わせることができます。人工知能プロセス。自動運転などの人工知能の最新のアプリケーションについて深く理解しています。

1.2 自動運転車の研究の現状
1.2.1 国内外の自動運転車の現状
省略

1.3 主な研究内容と技術プロセス
この記事では主に、特定の機能(遠隔制御を含む)を備えた自動車を独自に設計し、制御プロセスと人工知能プロセスを組み合わせて、自動運転などの最新の人工知能アプリケーションについての理解を深めます。主な研究内容は以下のとおりです。
自動運転車の全体的な設計計画を提案し、動的解析を実施し、最終的にシステムの制御目標を決定し、システム関連計画を設計します。
システムの制御目標に合わせたモデル シミュレーション設計を実行し、Matlab を使用して PID 制御システムをシミュレーションし、制御プロセスを分析および調整します。SolidWorks を使用して、車の各モジュールと形状を正確にシミュレートします。
システムのハードウェア部分を構築し、主要な制御チップ、駆動モーター、駆動モジュール、センサーなどの選択を決定し、システム回路部分を設計します。
システムソフトウェア部分を設計し、主要な制御を分析し、制御フローチャートを設計し、システムのメインプログラム設計と各モジュールのプログラム設計を完了し、書き込みとテストを完了します。
完成した自動運転車の制御システム全体のテストと最適化を実施します。車の各モーターの速度は0.5秒以内に±0.3cm/s以内の目標値に到達し、制御システムはシステムが設定した速度と角度の調整を完璧に実現できます。

1.4 主な作業
研究内容に応じて、この記事の主な作業を図 1.3 に示します。
ここに画像の説明を挿入します

図1.3 主な作業内容

第2章 自動運転車システムの全体スキーム設計
2.1 システム全体
スキーム 人工知能に基づく自動運転車システムは、自動運転アルゴリズムプログラムと組み合わせて自動運転を実現する支援システムである。このシステムは、シャーシ、リモコン、プロセッサー、およびさまざまな周辺機器で構成されます。シャーシは 4 つの車輪によって駆動され、メイン コントロールとモーターによって駆動され、ジャイロスコープやエンコーダーなどのセンサーと組み合わせて、車の正確な動きを実現します。リモコンは Bluetooth モジュールを使用してシャーシと通信し、システムは画像認識を使用して、前進、後進、左折、右折、加減速などの車の動きを制御できます。車載コンピューティング プラットフォームとして、プロセッサーには、カメラでキャプチャされたリアルタイム画像を通じて、運転中の自動車の移動速度と角度目標値のリアルタイム パラメーターを計算するための特定の画像処理機能が必要です。周辺機器には、リアルタイムの画像データを提供するカメラ、マウス、キーボード、プロセッサの制御に必要な画面などが含まれます。自動運転車システムの車両とリモコンのイメージ図を図 2.1 および図 2.2 に示します。
ここに画像の説明を挿入します

図 2.1 車のシャーシのレンダリング
ここに画像の説明を挿入します

図 2.2 リモコンのレンダリング
自動運転車システムは、まずカメラによって収集された画像データをデータセットとして使用し、それを自動運転人工知能フレームワークと組み合わせてモデルをトレーニングします。自動運転車の動作中、プロセッサは受信した画像データを既存のフレームワークと組み合わせてリアルタイムの速度と角度の目標値を計算し、これらのデータをシャーシのメイン制御に送信して、最終的に自動運転システムの制御を実現し、図 2.3 に示すように地図上にあらかじめ設定されたルートを完成させます (始点、終点、終点に加え、緑と青がトリガーエリア、赤がエンドエリア)一般路面、横断歩道も含みます)。
ここに画像の説明を挿入します

図 2.3 地図
2.2 システム要件の分析
システムの動作プロセスの分析によると、システムが自動運転機能の検証を完了するには、直進走行と正確な旋回が可能でなければなりません。地図上に設定されたルートを正確に走行するためには、正確な角度や速度のデータを取得し、調整・制御する必要があるため、自動運転車システムの設計要件を分析します。
(1) システムの制御性能には適時性と正確性が要求され、プロセッサからの指令を受けてシステム全体が正しく、早く、安定して応答する必要があります。
(2) 直線走行時、自動運転車の両側の車輪速度は一定でなければなりません。旋回時には、操舵を担う車輪の回転速度が安定、つまり単位時間当たりに曲がる角度が一定に保たれなければなりません。
(3) システムの動作中、速度と角度の実際の値は最大 0.5 秒以内に目標値近くに到達する必要があるため、さまざまな動作目標を達成するためのリアルタイム制御を実現できます。
(4) 自動運転車システムは、機能を向上させるために後で他のセンサーやモジュールを追加できるように、拡張性と移植性がなければなりません。

2.3 制御解析
自動運転車システムの設計プロセスでは、まず異なる動作条件下でシステムを解析し、それに応じた調整を行う必要があります。正確な調整には、運動学および力学モデルと組み合わせたシステムの数学的モデリングが必要です。解析と計算を実行します。自動運転車システムの制御に理論的基盤を提供する。
実際の状況はさらに複雑であるため、ここでは 2 つの近似値を作成します。車の走行の直接的な駆動力は車輪と地面との摩擦であり、モーターによる車輪の回転と車輪が地面と擦れることで回転方向と逆方向の摩擦が生じます。部品:静摩擦と滑り摩擦。
F1 = F (2-1)より、
静止摩擦力の大きさは、車輪を回転させるモーターの力の大きさに等しい。
F2 = k * Fn (2-2)より
、すべり摩擦は正圧と正の関係にありますが、実際の解析では、このごく一部のすべり摩擦の影響は考慮されておらず、車の速度のみが関係しています。モーターの回転に関わる速度関係。
同時に、モーターの違いや電圧変動などの要因により、モーターの実際の速度を目標値と同じにするためには、いくつかのモーター制御アルゴリズムを採用する必要があるため、運動学や力学を実行する際にはこれらの要因は考慮されません。ここでは、モーター速度が目標値と等しいと考えられます。
車が直進するときは比較的単純で、4つの車輪が同じ方向に回転することで、車の4つの力とその合力が常に前を向き、車は前に進みます(図) 2.4)。
ここに画像の説明を挿入します

図 2.4 車の前進力の解析
車が曲がる必要があるとき、4 つの車輪とモーターはまったく同じであり、方向が互いに平行であるため、モーターの速度と方向を制御する必要があります。回転してモーターの差動装置を発生させ、車の回転を実現します。図に示すように、例えば右折する場合、車の左側の 2 つの車輪は前方に回転し、右側の 2 つの車輪は後方に回転します (図 2.5)。同時に、車が旋回するときの車体位置と画像収集結果の一貫性を確保するには、4 つの車輪の中心が正方形を形成することが最適です。
ここに画像の説明を挿入します

図 2.5 車の左折力の分析
車が停止したら、すべてのモーターの速度を 0 に下げるだけです。車自体は速くないので、ブレーキ システムやブレーキ アルゴリズムをセットアップする必要はありません。
2.4 スキーム設計
自動運転車システムの全体スキームと制御対象の分析に基づいて、作業プロセスの主要なハードウェア機器と組み合わせて、生産プロセスは図に示す制御プロセス ブロック図 2.6 に分割されます。-
ここに画像の説明を挿入します

図 2.6 概略設計ブロック図
制御システムの主な制御対象は、システムの駆動モーターです。主な制御パラメータは、モータの回転方向、回転速度などです。制御システムは主にエンコーダやジャイロスコープなどのセンサーを介してシステムの動作モードや動作状態データを取得します。これらのデータは処理され、これに基づいてさまざまなモーターが正確に制御され、事前に設定されたルートに従ってシステムが走行します。
具体的な制御プロセスでは、ブラシレス DC モーターの速度を測定するセンサーがリアルタイムで速度データを受け取り、AD 変換プログラムを通じてアナログ データをデジタル データに変換し、制御プログラムと関連アルゴリズムを通じて補足および調整します。そして、その制御データがPWMコントローラーを介してモーターに送信され、ブラシレスDCモーターが制御されます。
モータの実際値は、PWM制御だけでは目標値と一致しないため、PIDアルゴリズムを用いて制御し、目標値に変化させるために必要なPWM値をリアルタイムに計算し、リアルタイム性を実現します。モーター速度の調整。車の旋回プロセスも同様で、車が旋回する目標角度を設定し、PID アルゴリズムを使用してリアルタイムに調整することで、実際の値を迅速かつ正確に目標値に近づけることができます。

2.5 この章の概要
この章では、まず自動運転車の全体構造と動作原理を紹介します。次に、システム制御を分析し、システムの動的モデルを確立し、主要な制御パラメータと制御目標を決定しました。次に、主に精度と適時性、セキュリティ、移植性などを含む、制御システムのニーズと要件が分析されました。最後に、制御システムの全体スキームが設計され、制御の主な目的と方法が決定され、モータ走行ドライブの速度を制御する際には、正確な制御のために PWM 制御および PID 制御アルゴリズムが導入されました [4]。

第3章 システムモデルのシミュレーション
自動運転車システムの設計プロセスでは、さまざまな動作部品やセンサーが関与するため、従来の設計プロセスは複雑で、理想的な効果を達成するために実際に複数回のデバッグが必要でした。作業負荷、設計の難易度、設計プロセスを短縮するには、モデリングおよびシミュレーション技術が必要です。その名のとおり、シミュレーションソフトウェアを使用して数理モデルや物理モデルの構築をソフトウェア上で完結させ、設計したシステムに適した制御方法を得るためにコンピュータを使用して計算と解を実行することで、システム設計の効率を大幅に向上させることができます。 。駆動モーターのシミュレーション設計は、制御システム設計の重要な部分であり、制御システム構築の理論的基礎となります。
自動運転車システムの動作中、主な運動状態は直進と旋回であり、これらはブラシレスDCモーターの速度制御によって実現されるため、制御システムのシミュレーションプロセスではモーターが主に駆動されます。 PID 制御方式は、MATLAB の SIMULINK モジュールを介してロジックの構築とシミュレーションを実行し、システムに関連パラメータを与えることでシミュレーション解析を実行し、最終的に有効な制御条件と関連パラメータを取得し、プログラム設計とその条件を提供します。制御システムの試作製作。
同時に、物理的な構築には、システムの構造やレイアウトのシミュレーションも不可欠です。SolidWorks を使用すると、システムのすべての構造とモジュールを 3 次元でシミュレートでき、マップ上の自動車の走行プロセスをシミュレートできます。これは物理的な構築とシステムのデバッグに非常に重要かつ必要であり、システムの強固な基盤を築きます。自動運転の最終実現。
3.1 PID 制御方法とシミュレーション
3.1.1 PID 原理
PID コントローラは、その構造が単純で、実装が容易で、堅牢性が高いため、さまざまな産業プロセス制御に広く使用されています。PID 制御は、広範な制御法則として、長きにわたってさまざまな高度な制御アルゴリズムの登場により廃止されることはなく、むしろ、長い年月を経た現在でも、さまざまな制御技術の中で PID 制御が大きなシェアを占めています。 . 支配的な地位 [5] 。
PID 制御器は、「過去、現在、未来」の偏差推定に基づく効率的かつシンプルな制御アルゴリズムであり、従来の PID 制御システムの原理は図 3.1 に示されています。
ここに画像の説明を挿入します

図 3.1 PID 制御システムの概略図
システム全体は主に PID コントローラと制御対象で構成されます。そして、その偏差を比例、積分、微分して線形結合により制御量を形成し、制御対象を制御します。図 3-1 から、PID コントローラーの理想的なアルゴリズム (e(t) は目標値と実際の出力値の間の偏差) は次のようになります。
u(t)=Kp[e(t)+1/T_i ∫_0 ^∞▒〖 e(t)dt+T_d (de(t))/dt〗] (3-1)
式によれば、PID の 3 つのパラメータを知ることができます。
比例制御 Kp は動的応答を改善できます。システムの速度を測定し、エラーをすぐに反映することでエラーは減少しますが、エラーをなくすことはできません。簡単に言うと、値が大きいほど速くなります。値が小さいほど遅くなりますが、オーバーシュートしたり遅すぎる可能性があります。デメリットが多く、大きすぎると不安定になります。
積分制御 Ki は一般に定常誤差を排除します システムに誤差がある限り積分効果は累積し続け、誤差を解消するように制御値を出力します 偏差がゼロになると積分は停止しますただし、積分効果が強すぎるとオーバーシュートが大きくなったり、システムが発振したりすることがありますが、この発振を予測するには第 3 項の微分が必要です。
差動制御 Kd. 差動は明らかに変化率に関係します. これにより、オーバーシュートを減らして発振を克服し、システムの安定性を向上させ、応答速度を高速化して、システムを高速化して動的性能を向上させることができます。システムが上昇しようとするときも下降しようとするときも,事前にシステムの制御量を変化させて積分効果を補完し,システムをほぼ完璧にする[6].
上記の部分は連続系の PID アルゴリズムの解析ですが、コンピュータ制御は不連続であるため、プログラムを書く際には数式を変換したり、積分の代わりに和を使用したり、微分の代わりに後方差分を使用したり、最後にシミュレートされた PID アルゴリズムを形成し、差分方程式を離散化します。

u(t)u(k)								(3-2)
e(t)e(k)									(3-3)
∫_0^t▒〖e(t)dt=_(i=0)^k▒〖e(i)〗 ∆t=_(i=0)^k▒〖Te(i)〗〗			(3-4)
(de(t))/dt≈(e(k)-e(k-1))/∆t=(e(k)-e(k-1))/T							(3-4)
然后得到增量式PID的计算公式:
{
    
    (∆U_0 (n)=K_p {
    
    [ε(n)-ε(n-1)]+T_D/T[ε(n)-2ε(n-1)+ε(n-2)]}@U(k)=u(k)+U(k-1))(3-5){
    
    (∆U_0 (n)=K_p [ε(n)-ε(n-1)]+K_i ε(n)+K_d [ε(n)-2ε(n-1)+ε(n-2)]}@U(k) =u(k)+U(k-1))(3-6)

3.1.2 Simulink シミュレーションと PID のパラメーター調整.
まず、任意の PID コントローラーの伝達関数とパラメーターを設定します. PID パラメーター調整の経験によれば、Ki と Kd の値は一般的にそれほど大きくありません。最初は両方とも 0 に設定されますが、Kp はオプションです。1 つを設定し、今回は 6 に設定します。Matlab の Simulink 関数を利用して、ステップ関数を信号ソースとして使用し、最後にオシロスコープを追加して結果を観察し、結果をシミュレーションします。
ここに画像の説明を挿入します

図 3.2 Simulink シミュレーションのプロセス
オシロスコープをダブルクリックして波形を生成し、波形に応じてパラメータを調整して理想的な波形を取得します。求めたパラメータ調整方法に従ってパラメータを調整します
(1) 比例係数 Kp を決定します
比例係数 Kp を決定する際には、まず PID の積分項と微分項を除去します。純粋な比率にして調整してください。入力はシステムの最大許容出力の 60% ~ 70% に設定され、比例係数 Kp は 0 からシステムが発振するまで徐々に増加し、逆にそれ以降はシステムの発振がなくなるまで比例係数 Kp は徐々に減少します。このときの比例係数 Kp を記録し、PID 比例係数 Kp を現在値の 60% ~ 70% に設定します。
(2) 積分時定数 Ti を決定する
比例係数 Kp を決定したら、積分時定数 Ti を大きめに設定し、系が発振するまで Ti を徐々に減少させ、その後、系の発振がなくなるまで Ti を徐々に増加させます。このときの Ti を記録し、PID 積分時定数 Ti を現在値の 150% ~ 180% に設定します。
(3) 微分時定数 Td を求める
通常、微分時定数 Td は設定する必要はなく、0 で構いません。設定が必要な場合は、Kp の決定方法と同様に、発振がない場合の値の 30% を採用します [7]。
最終パラメータは Kp = 8、Kd = 0.5、Ki = 0.1 です。オシロスコープの画像を図 3.3 に示します。
ここに画像の説明を挿入します

図 3.3 Simulink オシロスコープのイメージ
3.2 システム構造とレイアウトのシミュレーション
システム構造とレイアウトのシミュレーションでは、主に SolidWorks を使用して 1 対 1 の 3 次元モデル シミュレーションを実行します。実際の状況を可能な限り詳細にシミュレーションし、自動運転機能の実現と最適化への道を切り開きます。
自動車モデルのシミュレーション構造は比較的単純で、図 3.4 および 3.5 に示すように、主に車輪、バッテリー、メイン制御ボード、その他のコンポーネントが含まれます。
ここに画像の説明を挿入します

図 3.4 車両モデル図 1
ここに画像の説明を挿入します

図 3.5 カーモデルビュー 2
リモコンモデルが完成しました 構想プロセス中のモデルが保存されていないため、表示されているモデルはアクリルシェル、メインコントロールボード、バッテリー、スイッチ、Bluetooth モジュールを含む実際のオブジェクトとまったく同じです、など。図 3.6 および 3.7 に示すように。
ここに画像の説明を挿入します

図 3.6 リモコンモデル図 1
ここに画像の説明を挿入します

図 3.7 遠隔制御モデル図 2
3.3 この章の概要 この章では、
主に自動運転車システムの PID パラメータ調整プロセスと 3 次元モデルをシミュレーションし、関連する結果を分析して、自動運転車システムのソフトウェアおよびハードウェア設計の理論的サポートを提供します。制御システムとプロジェクト全体は、プロジェクトをスムーズに進めるための良い基盤を築きます。

第 4 章 制御システムのハードウェア設計
シミュレーション結果に基づいて、メイン制御チップ、モーター、センサーなどを含むシステムのハードウェア部分を選択します。そして、電源回路、モーター駆動回路、シリアル通信回路を設計します。
4.1 制御システムのハードウェアは
自動運転車システムの設計を構成します. ハードウェア部分の設計は制御システム実装の基礎です. プロセッサは収集された画像を処理し、設計された人工知能フレームワークを実行してシャーシを制御する必要がありますシャーシマスターコントロール オンボードのチップはシステム全体の制御に必要なプログラムを実行し、モーターやインジケーターなどのシステムの末端を厳密に実行し、リアルタイムのステータスを取得する必要があります。センサーから得られる車のデータ。これらの部品は合わせて自動運転車のハードウェア部分を構成します。

4.2 車両主制御チップの選定 車両主制御チップは
自動運転車システムの中核として、制御システム全体において重要な役割を果たします。自動運転を実現するプロセス全体では、メイン制御チップがタイムリーに応答し、各部品が正しく応答するように制御する必要があり、低コストで効率的かつ安全な制御を確保する必要があり、操作の難易度が高すぎてはなりません。そこで、性能、価格、操作性などを総合的に検討した結果、最終的にArduino Mega 2560を選択しました。
1つ目はArduinoのプラットフォーム上の利点です。Arduino は非常に複雑なハードウェア システムを備えていますが、その構造は高度にモジュール化されており使いやすく、USB インターフェイスを介して PC と通信し、ハードウェア (Arduino ボード) とソフトウェア (Arduino IDE) を統合した優れた電子設計プラットフォームです。Arduino は、オープン ソースの Simple I/O インターフェイス上に構築されたオープン ソース ベースのソフトウェアおよびハードウェア プラットフォームであり、使用されるコーディング言語は C++ です。Arduino 開発ボードのほとんどは AVR ベースの 8 ビット マイクロコントローラーであり、現在多くのモデルがあります。一般的なものには、Atmega328p チップをベースとした Uno、Nano、Mini、および Atmega2560 チップをベースとした Mega2560 があります。
しかし、技術の発展に伴い、8ビットマイコンでは人々のニーズに応えられなくなり、32ビットプロセッサの段階に入ったため、Arduinoは32ビットARMベースモデルDUEを発売しました。モノのインターネット時代の到来に適応して、イーサネットに接続できる YUN[8] を発売しました。
車の 4 つのモーターと多数のセンサーには、複数のインターフェイスを備えた Arduino モデルが必要です。Uno と Mega 2560 を比較すると、次の表 4.1 のようになります。
表 4.1 Mega2560 と Uno の比較
デジタル ピン PWM ピン アナログ ピン 外部割り込みピン
Uno 14 6 6 2 3
Mega2560 54 15 15 2 3 21 20 19 18
最終的に、より多くの割り込みピンとデジタル ピンを備えた Mega 2560 がメインとして選択されました。車のコントローラー。

4.3 モーターとモータードライブの選定
自動運転車システムの主な動作部品は、主に DC ブラシレスモーターと、車両の運動状態を取得できるエンコーダやジャイロスコープなどのセンサー部品です。したがって、モーターを選択する際、エンコーダー付き DC ブラシレス モーターはシステムに順方向電力を供給するだけでなく、エンコーダー データを分析することでモーターの回転方向やモーター速度などの重要なパラメーターを取得することもできます。システム制御の精度と効率により、コストとシステムスペースも節約できます。
4.3.1 駆動モータの選択
同期モータの一種であるブラシレス DC モータのロータ速度は、ステータの回転磁界の速度とロータの極数に影響されます。ブラシレスDCモータは、シンプルな構造、信頼性の高い動作、便利なメンテナンスなどのACモータの一連の利点を備えているだけでなく、高い動作効率や優れた速度調整性能などのDCモータの多くの利点も備えています。ブラシレス DC モーターの最も重要な部分はその制御構造であり、ドライバーがローターを制御して一定の速度を維持することで、性能をより安定させることができます。ブラシレス DC モーターは、最新の生産設備、計測器、コンピューター周辺機器、および高度な家庭用電化製品で広く使用されています。高効率、長寿命、低騒音という利点があります。高効率: 一般的なブラシレス DC モーターの効率は 96% 以上に達しますが、従来の DC モーターの効率は一般的に約 75% です。高効率とは、高いエネルギー変換、およびモーターの機械的回転エネルギーへの電気エネルギーの変換を意味します。非常に省エネであり、自動運転車システムのドライバーとして、他のモーターと比較してエネルギー消費を大幅に削減できます。長寿命:一般に従来のブラシ付きモーターはカーボンブラシの磨耗により定期的に交換する必要があり、頻繁なメンテナンスが必要でしたが、ブラシレスDCモーターの耐用年数は一般的に20,000時間以上です。通常の使用条件では、5 年以上使用しても基本的に損傷することはなく、ブラシレス DC モーターの寿命は従来のモーターの 5 倍です。低騒音のブラシレスDCモーターは、構造がシンプルで部品の取り付けが正確で、動作が比較的スムーズで、動作音も50db以下で、その静音性から多くの医療機器にブラシレスDCモーターが採用されています。
同時に、ブラシレス DC モーターは、角変位または角速度を一連の電気デジタル パルスに変換する回転センサーであるエンコーダーと併用することができ、エンコーダーを通じて底部の変位または速度情報を測定できます。エンコーダは検出原理により光学式、磁気式、誘導式、静電容量式に分けられ、代表的なものには光電式エンコーダ(光学式)とホールエンコーダ(磁気式)があり、動作モードにより回転式エンコーダに分けられます。エンコーダまたはリニア エンコーダです。ロータリー エンコーダは、その動作原理に従ってインクリメンタル エンコーダとアブソリュート エンコーダに分けることができます。インクリメンタル ロータリー エンコーダは、モータが回転するときにのみパルスを出力します。インクリメンタル エンコーダを使用してシャフトの位置を決定するには、位置を知る必要があり、出力パルス数を計算するには外部回路を使用する必要がありますが、アブソリュートロータリーエンコーダは回転角度に対応するデジタルコードを出力するため、モーターシャフトの位置を知るためにパルスをカウントする必要がありません。
インクリメンタル エンコーダは、直交エンコードを通じてモーターの回転方向を取得できます。直交エンコーダはインクリメンタル信号であり、インクリメンタル エンコーダが回転すると、2 つの方形波出力 A および B を生成でき、これらの信号は合わせてインクリメンタル エンコーダの直交出力を構成します。ほとんどのエンコーダでは、これらの方形波 A と B は両方とも 90 度位相が異なります。A出力とB出力の変化状態を観察することで、エンコーダの方向が決まります。チャンネル A とチャンネル B の 2 つのチャンネルがあります。
同時にモータは一定の駆動力を確保する必要があり、適切なモータ減速比を選択する必要があり、電源電圧は高すぎず低すぎず、12V程度が必要です。
以上の理由から、ホールエンコーダ(インクリメンタルエンコーダ)付き DC 減速ブラシレスモータ JGB37-52 モータを選択しました、モータパラメータは図 4.1、表 4.2 の通りです。
ここに画像の説明を挿入します

図4.1 モータ製品寸法図

型式 減速比 無負荷速度 定格トルク ストール電流長
JGB37-52 1:56 178 6.5N/m 2.3A 24mm
表4.2 モータ製品パラメータ
エンコーダパラメータは図4.2の通りです。
ここに画像の説明を挿入します

図4.2 エンコーダパラメータ
4.3.2 モータドライバの選択
モータのプラス極とマイナス極を電源に接続することは可能ですが、回路構成を変更せずにモータの方向を変更したい場合は、モータドライバを使用する必要があります。同時に、モータードライバーによりモーターをPWM駆動することができ、モーターを信号で制御することが可能になり、モーターの速度調整がより便利になります。
価格や他の開発者による使用頻度などの要素を考慮して、最終的に L298N モーター ドライバー ボード モジュールを選択しました。
このモジュールは、メイン制御ドライバチップとしてSTのL298NデュアルHブリッジDCモータドライバチップを使用しており、強力な駆動能力、低発熱、強力な抗干渉能力の特性を備えています。モジュール電源部にはチップを保護できる内蔵78M05を使用しています(駆動電圧が12Vを超える場合は、外部5Vロジック電源を使用してください)。このモジュールは、信頼性を向上させるために大容量のフィルター コンデンサーとフリーホイール保護ダイオードも使用しています [9]。
ドライブモジュールの具体的なパラメータは表 4.3 のとおりです。
表 4.3 L298N
モデルの主要パラメータ チップドライバ電源範囲 ロジックエンド電源範囲 最大消費電力
L298N モジュール L298N デュアル H ブリッジ DC モータドライバチップ 5V-35V 5V-7V、20W

4.4 センサーの選定
自動運転車システムを制御する過程では、選択したモーターに付属するエンコーダーを通じてモーターの速度や回転方向を読み取って算出するほか、車両の回転角度をリアルタイムに読み取って制御する必要があります。回転を完了し、車の前進を支援します。
ジャイロスコープは、回転中に外部トルクが作用した後のジャイロスコープの特殊な動作の原理に基づいて設計されています。支点を中心に高速回転する剛体をジャイロスコープといいます。ジャイロスコープが動作するときは、素早く回転させるために力を加える必要があり、通常、毎分数十万回転に達し、長時間動作することができます。次に、さまざまな方法を使用して軸が示す方向を読み取り、データ信号を制御システムに自動的に送信します。ジャイロスコープには多くの種類があり、フレームの数と支持形式に応じて 3 自由度ジャイロスコープと 2 自由度ジャイロスコープに分類できます [10]。
現時点では、無人運転車システムは、機能を実装するためにシステムのヨー軸 (つまり、ジャイロスコープの Z 軸) のリアルタイム回転角度を知るだけで済みます (つまり、2 軸ジャイロスコープだけが必要です)。ただし、ジャイロスコープは自費で購入するため、2軸ジャイロスコープのみを購入することになり、車のコストは削減できますが、今後他の実験を続けるのに有利ではないため、最終的にはShenzhen Weite Intelligent Technology が製造販売する 6 軸姿勢角センサー、製品モデル JY61 を選択しました。製品パラメータは表 4.4 のとおりです。 表 4.4
ジャイロスコープ パラメータ
モデル 電源電圧 動作電流 通信方式 角度範囲 角度精度 ボーレート
JY61 3.3-5V <10mA TTL、IIC ±180 0.1° 9600/20Hz
JY61 モジュールにはジャイロスコープ加速度が含まれますMPU6050、電圧安定化回路、STM8 マイクロコントローラー。MPU6050 はモジュールの中核であり、加速度センサー、ジャイロスコープ DMP、温度センサーの 4 つの部分で構成されます。STM8 は、このように MPU6050 内の DMP の測定データを IIC 経由で読み込み、シリアルポート経由で出力します。ユーザーは、シリアル ポートを通じて値を直接読み取るか、基礎となる MPU6050 の IIC インターフェイスに直接アクセスしてバイナリ データを取得できます。MPU6050の正式名称は6軸運動姿勢ジャイロセンサーですが、なぜ6軸なのかというと、3自由度のジャイロセンサーだけでなく、3次元の加速度を計測できる加速度センサーも内蔵しているためです。姿勢融合アルゴリズムと組み合わせることで、最終的に 3 軸の加速度、角速度、角度を直接出力することができます。

MPU6050にも問題点があり、モジュールに3軸電子コンパスが内蔵されていないため、Z軸の角度の基準がないため、ヨー軸の絶対角度が得られず、速度を積分することで求められます。加速度計のジャイロ メーターのヨー軸のドリフトはゼロになります。この角度は、システムが必要とする角度とまったく同じです。幸いなことに、JY61 モジュールは 2 つの側面でこの問題を最適化しました。まず、モジュールは電源を入れるたびにヨー軸角度をクリアします。この対策のおかげで、角度の問題が常に蓄積されることはありません。次に、モジュール メーカーである Vit Intelligent は、製品をサポートするホスト コンピュータに静電気検出しきい値のオプションを設定しており、角度偏差が小さい値の範囲内にある場合、角度は変化していないと見なされ、このしきい値は次のように調整できます。これにより、ゼロ ドリフトによる影響を最小限に抑えることができます。(実際のテストでは、このモジュールの精度は非常に高く、複数回のテストの後、車は電源を入れた状態で約10分間自由に動くことができ、角度誤差はわずか0.3度です。精度は許容範囲内です。)

4.5 プロセッサの選択
冒頭で自動運転車に使用される一般的なプロセッサの市場調査と分析を通じて、一般的な車のプロセッサは Jetson Nano と Raspberry Pi 4 であることがわかりました。Raspberry Pi は、優れた小型コンピューターおよび IoT 開発マザーボードです。これは、低電力 IoT デバイスであるだけでなく、優れたプロトタイピング ツールでもあり、IoT 関連デバイスの構築にも使用できます。NVIDIA はさまざまな種類の IoT マザーボードをリリースしていますが、その中でも NVIDIA Jetson Nano は最新のマザーボードです。このボードは、IoT ソリューションのプロトタイプ作成時に必要なすべての入力と接続を提供する開発キットとして機能します。情報を検索して、以下の表 4.5 に示すように、2 つのプロセッサーを比較しました。 表 4.5 2 つのプロセッサーの比較 モデル
CPU
メモリ USB ポート GPU
Raspberry Pi 4b クアッドコア
Cortex-A72 LPDDR4
4GB 2 USB2
2
USB3デュアル 4K グラフィックス カード
Jetson Nano クアッドコア
Cortex-A57 LPDDR4
4GB 4*USB3 NVIDIA Maxwell
2 つの最大の違いは、NVIDIA Jetson Nano にはより高性能で強力な GPU (グラフィックス プロセッシング ユニット) が搭載されているのに対し、Raspberry Pi には4 には、低電力 VideoCore マルチメディア プロセッサが搭載されています。したがって、人工知能自動運転システムの画像処理と人工知能フレームワークの実行には、Jetson Nanoの方が高価ではありますが、人工知能自動運転システムのプロセッサとしてより適しています。最終的に車のプロセッサとして Jetson Nano を選択しました (図 4.3)
ここに画像の説明を挿入します

図 4.3 Jestson Nano 製品紹介図

4.6 リモートコントロールハードウェアの選択
メインコントロールチップの選択: Arduino Nano. Arduino Nano は Arduino UNO に似た開発ボードですが、違いは Nano の方がサイズが小さく、ATmega328P 開発ボードに基づいていることです。Arduino Nano は Arduino Uno に非常に似ています。Arduino Nano と Uno の違いは、Nano には DC 電圧電源インターフェイスがなく、Nano は Mini-B USB インターフェイスを介してコンピュータに接続されることです。主な技術パラメータは次のとおりです。表 4.6: 表 4.6
Arduino Nano
モデルの主なパラメータ入力電圧 デジタル ピン PWM アナログ入力ピン
Arduino Nano 7-12V 22 6 8
ジョイスティック モジュール: リモコンで採用されているソリューションは、単一のジョイスティックと複数のボタンです開発を容易にし、リモコンのサイズを縮小するために、ジョイスティックArduino用モジュールJoystick Shieldが選択されました。ロッカー モジュールには、7 つの押しボタン スイッチ (6 つの個別のボタンとロッカーの下のボタン) と 2 つのポテンショメータを備えたサム スティックが備わっています。同時に、このモジュールは Bluetooth モジュールのインターフェイスも提供します (ジョイスティック モジュールの実際の図を図 4.4 に示します)。
ここに画像の説明を挿入します

図 4.4 ジョイスティック モジュールの実際の画像
Bluetooth モジュール: Bluetooth モジュールは、Bluetooth チップが統合されたモジュールで、無線通信やデータ送信などに使用されます。通常、携帯電話やコンピューターで使用されている「Bluetooth」とは異なります。これは、Bluetooth アダプタを指します。ユーザーにとって、Bluetooth アダプタはより使いやすく、Bluetooth モジュールは送信された初期データを取得できます。簡単に言うと、Bluetooth モジュールは不完全な半完成品であり、Bluetooth アダプタは完全な製品です製品。Bluetooth は通常、特定の Bluetooth プロトコルを通じて通信し、Bluetooth を接続すると、Bluetooth を直接シリアル ポートとして使用できます。Bluetooth は、通信プロセス中に送信機と受信機を区別します。つまり、送信機がマスター、受信機がスレーブです。私は HC05 マスター/スレーブ オールインワン モジュールを選択しました。そのパラメータは表 4.7 のとおりです。

表 4.7 Bluetooth モジュールの主なパラメータ モデル
動作電圧 デフォルトのボーレート モード 通信方式
HC05 3 ~ 3.6V 9600 マスター/スレーブ統合二重シリアル ポート、プロトコル不要
Bluetooth HC05 は、マスター/スレーブ統合 Bluetooth シリアル ポート モジュールです。 Bluetooth デバイスが正常にペアリングされ、Bluetooth デバイスに接続されると、Bluetooth の内部通信プロトコルを無視して、Bluetooth をシリアル ポートとして直接使用できます。接続が確立されると、2 つのデバイスはチャネル、つまり同じシリアル ポートを共有し、一方のデバイスはそのチャネルにデータを送信し、もう一方のデバイスはそのチャネルでデータを受信できます [11]。具体的に使用する場合、ホストモジュールはハンドルに接続され、スレーブモジュールは車のメインコントロールに接続され、Bluetoothシリアルポートを介してさまざまな動作命令を表す信号を送信し、ハンドルによる車の制御を実現します。 。

4.7 制御回路設計
時間と処理能力が限られているため、市販モジュールを中心に回路設計を行うことで、開発効率を大幅に向上させ、開発サイクルを短縮するとともに、制御回路の安定性を向上させます。さまざまな問題が発生した場合、ハードウェアの問題が発生する可能性は低く、同様の問題を参照して解決策を見つけるのに便利です。
4.7.1 車の電源回路
全体の電源回路は、バッテリーと電源モジュールの 2 つの部分に分かれています。
車の場合、バッテリーは 9 個の 18650 セルのカスタマイズされた 12V 8400mAh リチウム バッテリーを使用します。12Vの電圧でL298Nモジュールとモーターに直接電力を供給でき、8400mAhの大容量でプロセッサーを含むシステム全体の電力要件を十分にサポートできると同時に、長い形状にカスタマイズすることで全体のスペース配置に貢献します。車の。
電源モジュールは、オンラインで購入した調整可能な自動ブースト モジュールを使用します (主なパラメータは表 4.8 に示します)。このモジュールは、メイン コントローラとして昇降圧チップ、スイッチ チューブとして外部 60V 75A MOS チューブ、およびデュアル 60V 5A を使用します。 SS56 ショットキー整流を行います。5~30Vの広い入力電圧と0.5V~30Vの広い出力電圧を実現でき、昇圧・降圧も可能で、幅広い用途と優れた効果を発揮します。過電流保護機能を備えた安定した昇圧モジュールとして使用できること、定電流出力を備えた充電器として使用できること、最後にハイパワー LED 定数として使用できることの 3 つの機能があります。現在のドライブモジュール。完全マッチングによりプロセッサーに直接電源が供給され、プロセッサーはメインコントロールに直接電源を供給します。

表 4.8 電源モジュールの主なパラメータ
入力電圧 出力電圧 出力電流 出力電力 動作周波数
5 ~ 30V 0.5 ~ 30V 安定した 3A 自然放熱 35W 180KHZ
リモコンのバッテリーには、容量が 18650 充電式 3.7V リチウム電池が使用されています。 2000mAh。電源モジュールは、オンラインで購入した 3.7V から 5V/9V に調整可能なモジュールを使用します (モジュールの主なパラメータを表 4.9 に示します)。バッテリーから供給される 3.7V 電圧は、Arduino Nano に電力を供給するために 9V に昇圧され、その後、メインコントロールはハンドルモジュールに電力を供給します 電源、ハンドルモジュールは Bluetooth モジュールに電力を供給します。電池パラメータは表 4.10 のとおりです。
サポートバッテリ入力電圧 出力電圧 出力電力 突入電流
3.7V リチウムバッテリ 4.8-8V 4.3-25V 定数 7W 1A (最大)
表 4.9 ブーストモジュールの主要パラメータ
表 4.10 18650 バッテリの主要パラメータ
モデル 最小放電電圧 充電電圧 公称電圧 直径 高さ
18650 コバルト酸リチウム電池 2.75V 4.2V 3.7V 18mm 65mm

4.7.2 モータ駆動回路
今回の設計で選定した6線式AB相DC減速モータは、直流電源で直接駆動できないため、対応するドライバに接続する必要があります。ここでは L298N を選択し、L298N ピンとメイン制御ピンを直接接続して、マイクロコントローラを対応する制御に使用できるようにします。各 L298N ドライバには 2 組の出力 OUTA と OUTB があり、これらを制御できます。モーターが 2 つあるため、車には合計 2 つの L298N が必要です。
ドライブモジュールは、PWM 出力ポートを通じてより正確な制御を実行し、モーター速度を厳密に制御してシステムの制御精度を向上させることもできます。オンボードの 5V ジャンパー キャップを引き抜くと、バッテリーがモーターに直接電力を供給し、メイン コントロールがエンコーダーに電力を供給します。IN1 2 3 4 はメイン コントロールのデジタル ピンに接続され、エンコーダー出力はメイン コントロールに接続されます。割り込みポート。
ここに画像の説明を挿入します

図 4.5 車のシャーシのハードウェア接続図

4.7.3 リモコンの回路設計
リモコンのモジュールは比較的シンプルで、電池は電池ホルダーに固定されており、昇圧モジュールで昇圧された後、メイン制御部に電力を供給し、メイン制御部から電源が供給されます。 Bluetooth モジュールは、モジュールが提供するインターフェイスに直接接続されており、全体がケースの外側に露出しているため、Bluetooth 信号の送信やインジケーター ライトの状態の観察に役立ちます。
ここに画像の説明を挿入します

図 4.6 リモート コントロール ハードウェア接続 図
4.6 この章の概要
この章では、主にシステムの主な要件に基づいてハードウェア デバイスを選択し、開発プロセスの時間コストなどの要素を組み合わせます。プロセッサ Jetson Nano の選択に加えて、車の場合、最初は Arduino Mega2560 メイン コントロールの選択、次に DC ブラシレス モーター (ホール インクリメンタル エンコーダー付き 6 線 AB 相モーター JGB37-520) の選択、もう 1 つはモーター ドライブ モジュール L298N、そして最後に6 軸ジャイロスコープとバッテリー電源モジュールの選択。リモコンには、メインコントロールのArduino Nano、Arduino用ハンドルモジュールのジョイスティックシールド、Bluetoothモジュール、バッテリー電源モジュールなどを選びました。

第5章 制御システムのソフトウェア設計
5.1 制御プロセスの設計
自動運転車システムの制御は、車の移動制御と遠隔制御の2つの部分に分かれており、それぞれ車の自律移動と画像取得の2つの部分に対応します。
5.1.1 画像取得 画像取得
のプロセスでは、プロセッサは最初に画像取得プログラムを実行しますが、このプログラムには、カメラの電源を入れ、画像を保存し、プロセッサとの接続を確立する作業のみが含まれます。同時に、リモコンの Bluetooth と車の Bluetooth が正常にペアリングされ、リモコンはジョイスティックとボタンを介して車の直進と旋回の動きを制御できます。同時に、メインコントロールはリアルタイムの信号を送信します。時間画像と現在の車の対応する角度と速度がプロセッサに戻され、記録されます。収集された画像の数または収集時間がプログラムで設定された要件に達すると、プロセッサはメイン制御に終了信号を送信し、車は移動を停止して静止し、画像収集作業を停止します。フローチャートを図 5.1 に示します。
ここに画像の説明を挿入します

図 5.1 画像取得フローチャート
5.1.2 自律移動
画像取得が完了すると、走行中の自動車のすべての画像と、対応するリアルタイムの角度と速度が取得されます。これらのデータの一部を人工知能モデルのトレーニング用のデータセットとして使用します (この部分は私の主な仕事ではないため、詳細は説明しません) モデルがトレーニングされた後、自律走行中に画像の角度と速度を分析できますフィードバックにより、車は自律的に動くことが可能になります。
自律移動のプロセス中、自律移動プログラムの実行を開始した後、プロセッサはまずシリアル ポートを介して自動車のメイン コントロールとの通信を確立します。自動車のデフォルトの状態は、一定の速度で直進し、継続的に走行を開始する必要があります。リアルタイムの写真を取得してプロセッサに送信し、分析後、プロセッサは事前にトレーニングされたフレームワークに基づいて車両の現在の目標速度と目標角度を計算します。メイン制御プログラムは目標値に応じてリアルタイムに調整し、直進、旋回、駐車などの自動運転の修正に必要な操作を完了し、自動運転機能を検証します。自律移動プロセスのフローチャート 5.2:
ここに画像の説明を挿入します

図5.2 自動運転モビリティのフローチャート
5.2 メインプログラムの設計
メインプログラムは、自動運転車システムの制御におけるメインプログラムであり、システム全体を制御する主要なプロセスです。メイン制御の電源投入後に実行されるプログラムであり、マイコンのロジックにより制御プロセス全体をメインプログラムが実行されると判断されるため、繰り返し実行されます。同時に、メインプログラムは各モジュールのプログラムをマクロレベルで制御しており、これは自動運転車システムの制御プロセスにとって非常に重要であり、メインプログラムのフローチャートを図 5.3 に示します。
ここに画像の説明を挿入します

図 5.3 メインプログラムのフローチャート
メインプログラムは制御プログラムの実行プロセス全体をカバーしており、最初にシリアルポートの初期化、Bluetooth で使用されるソフトシリアルポートの初期化、スケジュール割り込みの初期化、各種パラメータの初期化などの初期化処理を実行します。パラメータ変数など。その後、ループ プロセスに入ります。プログラム ロジックは次のとおりです。システム全体が 4 つの車輪速度を通じて車の状態を判断します。ループ関数の開始時に、4 つのモーターに対応する PWM 値が計算され、目標値に基づいて割り当てられ、自動車はそれに基づいて受信した情報が調整されます。自律移動の過程にある場合、シリアルポートを介してプロセッサから送信された情報を継続的に受信し、その情報に従って調整する必要があります、最後に目的のタスクを完了します。

5.3 プログラムモジュールの設計
メインプログラムが全体として調整および制御された後、各モジュールの機能を個別に設計および改善する必要があります. 自動車のモーターアルゴリズム制御プログラムは、プログラム設計の非常に重要な部分です.モーターアルゴリズムプログラム部分として個別に行う必要があり、モーター駆動、Bluetoothモジュールの初期化と通信、リモコン全体のプログラミング、車のさまざまな動きのプログラミングなどの他のモジュールはすべて非常に重要な部分であると説明されています。全体的な制御アルゴリズム。
5.3.1 モータードライバープログラムの設計
モータードライバープログラムは、制御システムの中で最も重要なプログラムの 1 つです。各モーターと対応する L298N ドライブ モジュールには多くのインターフェイスがあるため、4 つのモーターのすべてのポートを表すために、4 行 5 列の 2 次元配列 Motor_Pins が設定されます。各行の 4 つのポートは IN1、IN2、PWM です。 、EncodeA、EncodeB (つまり、ミッドエンド A と割り込み B)、(ただし、実際のプログラミング プロセスでは、Mega2560 の外部割り込みインターフェイスの数が限られているため、各モーターの割り込み A のみが使用されます
。モーター、最初のポート初期化、IN1、IN2、PWM は OUTPUT に設定され、デフォルト状態は LOW、割り込みは INPUT に設定されます。PWM の範囲は 0 ~ 255 です。モーター速度はサイズを制御することで決定できます入力 PWM 値の (テスト後、無負荷速度は 0 ~ 50 の範囲内で、対応する PWM 値は 40 ~ 255 です) IN1 と IN2 は、L298N の真理に従って、モーターが正転するか、逆転するか、または非回転するかを決定できます。表
5.1 L298N真理値表
モータ回転モード IN1 IN2
正転 High Low
逆転 Low High
停止 Low Low

5.3.2 車の運動プログラム設計
モーターが駆動された後、車は 4 つのモーターの異なる速度に応じて異なる運動状態をとることができ、自動運転車の実際の状況に従って、主に直進と直進の 2 つの状態が記述されます。左右に曲がる。
直進時には、4 つのモーターが同じ速度で回転する、つまり 4 つのモーターすべてに同じ PWM 値が入力されるようにするだけで済みますが、実際の動作は、車両の質量分布の不均等や 4 つのモーターの個体差によりさらに複雑になります。モーターなどの場合、同じPWMを直接入力すると4輪を同じ速度で回転させることが難しく、当然直進走行も非常に難しくなります。
旋回時、車の姿勢は主に4輪の速度差によって変化しますが、前回のシミュレーション解析を経て、同じ側の2輪を同じ方向に回転させ、2輪を回転させる方法を採用しました。異なる側では反対方向に回転します。車には回転成分のみがあり、基本的に前進成分がないため、回転角度とそれが車の状態に与える影響を解析しやすくなります。
プログラムの実装も比較的簡単で、左折する場合は車の第 1 輪と第 2 輪の IN1 と IN2 ポートを反転するだけで済み、逆に右折する場合は IN1 と IN2 の値を変更するだけです。ホイール 0 と 4 の。

5.3.3 Bluetooth モジュールのプログラミング
Bluetooth モジュールは、リモート制御およびマスター制御通信のための重要なモジュールとして、システム全体で非常に重要な役割を果たします. 前述したように、HC05 はマスター/スレーブマシンであり、マスターに設定することができます、スレーブ、または自己接続の検出には、電源投入後にイネーブル スイッチを長押しし、AT コマンドを使用してボー レート、モード設定、アドレス設定、パスワード変更、およびモジュールのその他の初期化プロセスを変更する必要があります。次に、初めて電源を入れたときに Bluetooth が自動的に接続されます。同時に、AT コマンドを使用してペアリング リストをクリアしたり、Bluetooth 名を変更したりすることもできます。
まず、購入した 2 つのモジュールのうち 1 つを選択してホストとして構成し、ホストを USB シリアル ポート モジュールに接続した後、シリアル ポート デバッグ アシスタントの送信ボックスに次のコマンドを入力してセットアップします。 -Master は Bluetooth 名を BT-Master に設定します。AT+ROLE=1 は Bluetooth モジュールをメイン モードに設定します。設定が正しい場合、各ステップは OK を返します。同様に、別のモジュールをスレーブに設定し、名前を BT-Slave に変更します。Bluetooth パスワード、ボーレート、接続アドレスなどはデフォルトですべて同じです。新しく購入した Bluetooth モジュールの場合は、変更する必要はありません。
両方のモジュールがセットアップされたら、動作モードに戻り、再度電源を入れます。モジュールは最初に別々に速く点滅し、次に同期してゆっくり点滅し始め、Bluetooth 接続が成功したことを示します。その後、シリアルとして直接使用できます。ポート。

5.3.4 リモコンプログラムの設計
画像収集段階で車を制御する重要な部分の 1 つとして、リモコンは非常に重要です。リモコンは、ジョイスティックを介して車の前進、後進、左折、右折、その他の移動モードを制御します。ジョイスティックは 2 つのアナログ ポートを介してデータを送信し、ジョイスティックの現在位置を表します。ジョイスティックが左下隅にあるとき、A0 と A1 は両方とも 0 です。ジョイスティックが右上隅にあるとき、A0 の値はと A1 は電圧によって変化しますが、3.3V で駆動した場合の値は 720 です。状態変数のスタイルを定義します。スタイルが 0 ~ 4 の場合、5 つの異なる状態を表します。X が 200 ~ 500、Y が 200 ~ 500 の場合、状態は 0、つまり車が動いていないことを意味します。理論的には、車が曲がるときに前進成分がないため、X が 200 未満で Y が 200 ~ 500 の場合、ステータスは 4、つまり車が左に曲がることを意味します。図 5.4 に示すように:
ここに画像の説明を挿入します

図5.4 ロッカー動作の概念図

5.4 モータアルゴリズムプログラム
5.4.1 モータ速度の計算
エンコーダ付きモータを使用しているため、主制御の外部割り込みによりモータのパルス周波数を読み取り、モータの加速度比などの情報と組み合わせることができます。 、モーターの回転速度を計算できます。
外部割り込みとは、平たく言えば、メイン制御が特定のポートのポイント状態を監視し、その電位が特定のトリガ条件を満たしたときにそれを検出し、割り込み機能を実行できることを意味します。一般的なArduino Unoは外部割り込みピンが2本しかありませんが、今回使用したMega2560は割り込みピンが6本ありますが、それでもモーター4台のニーズを満たしていないため、各モーターはエンコーダーの2つの出力のうちの1つにのみ接続されています。それは十分だ。
Arduinoの外部割り込みを使用するには、関数attachInterrupt(interrupt, function, RISING)を使用して立ち上がりエッジの信号パルスを検出し、50ms以内のパルス数をカウントするようにMotorCount変数を設定します。
最終速度 v = ((MotorCount / (11 * 56)) * 6.5 * PI) / 0.05 ここで、11 はモーターが 1 回転あたり 11 パルスであることを意味し、モーターの減速比は 56、ホイールの直径は 6.5 cm、0.05 50ms以内に表現されます。

5.4.2 PID 制御アルゴリズム
PID とは、Proportional(比例)、Integral(積分)、Differential(微分)の略称です。PID 調整は、技術的に最も成熟しており、連続制御システムで広く使用されている調整方法です。PID調整の本質は、入力された偏差値に応じて、比例、積分、微分の関数関係に従って演算を行い、その演算結果を用いて出力を制御することです。PIDにはインクリメンタルPIDとポジションPIDの2種類がありますが、今回はインクリメンタルホールエンコーダを使用しているため、インクリメンタルPIDに注目します。前述のインクリメンタル PID の 2 番目の式を使用します。
△U0(n)=K_p {[ε(n)-ε(n-1)]+K_i ε(n) + K_d [ε(n)-2ε (n- 1)+ ε(n-2)]}
(5-1)
U(k)= △u(k)+U(k-1) (5-2)
コードを実装する場合、PWMInc は PWM の増分を表します。 Ek は目標値と現在値の差を表し、Ek1 と Ek2 は前ステップの Ek 値を保存し、Kp、Ki、Kd はそれぞれ比例、積分、微分の 3 つの係数であり、計算式は PWMInc= となります。 Kp Ek- Ki Ek1+Kd*EK2。
さらに、millis() 関数を使用した 5 ミリ秒ごとの時間割り込み。 
次に、各メイン プログラム サイクルが開始する前に、PWM = PWM + PWMInc が継続的に更新され、さまざまなモーターの速度が変更されます。
PID パラメータの調整. 3 つの PID パラメータの調整はモータの制御効果に大きな影響を及ぼし、3 つのパラメータは相互に影響します. 前章で説明したパラメータ調整式とシミュレーション効果によると、最終パラメータは位置 Kp=5 が決定され、 Ki=0.3.Kd=0.5 となります。
5.5 この章の概要
この章では、主に人工知能自動車制御システムのソフトウェア部分を設計し、制御フローチャートを作成し、制御システムのメインプログラム、プログラムのモジュール化、モーターアルゴリズムプログラム、およびリモート制御を記述します。プログラムデザイン。

第 6 章 テストと最適化
6.1 制御システムのテストと最適化
プログラムの評価からシミュレーション テスト、ソフトウェアとハ​​ードウェアの設計、材料加工、組み立て、デバッグ、メンテナンスを経て、完全な人工知能制御システムが最終的に完成します。実車の写真は図 6.1 に、リモコンの実車写真は図 6.2 に示します。次に非常に重要な部分は、システムをテストして最適化することです。
ここに画像の説明を挿入します

図6.1 実車
ここに画像の説明を挿入します

図 6.2 実際の遠隔制御
テストサイトは、図 6.3 に示す西安電子科学技術大学 E 棟実験棟内にあり、複数のモジュールで構成されており、各モジュールの長さと幅は 1200mm です。敷地は標準的な道路サイズの1/10に基づいて設計されています。緑と青がトリガーエリア、赤がエンドエリアです。始点、終点、一般道路に加えて、横断歩道のセクションも含まれています。各モジュールはマットスプレー塗装技術を使用して作られており、一般的な道路を完全にシミュレートしています道路。道路全体を直進走行、交差点旋回、横断歩道駐車などに分け、それぞれ複数の自動運転機能を検証する。
ここに画像の説明を挿入します

図 6.3 テストサイトマップ
6.1.1 テスト計画
人工知能自動運転車制御システムを構築した後、最初に制御システムをテストしましたが、時間の制約により、車の最も基本的な 2 つの移動モードと、対応する 2 つのテスト計画を策定しました:
計画 1、直進走行テスト。車はジャイロスコープによる角度補正なしで 2 メートル進み続けます。車両が終点に到着したときの位置と車両の開始位置との間の横距離を測定します。モーターの距離と速度に基づいて、車の 4 つのモーターの状態を判断します。
オプション 2、旋削試験。車が直進しており、モーターに過度の誤差がない場合、回転目標値を90度に設定し、回転時の車の角速度が均一であるかどうかをホストコンピュータのフィッティングカーブトレンドにより判定します。ジャイロスコープのサポート情報に記載されています。
6.1.2 テスト結果と分析
オプション 1: 車が 2 メートル直進した後、横方向の偏差は左に 10cm になります。車は 4 つの車輪の差速度に依存して回転するため、直線テスト中のたわみの最も可能性の高い原因はモーター速度の偏差です。メイン制御シリアル ポートを介して出力された各モーターのデータが分析され、表 6.1 に示すように一連のデータが傍受されて表示されました。 表 6.1
線形テスト データ
シリアル番号 1 2 3 4 5 6 7 8 9 10
Motor0 4.97 13.77 20.35 33.87 38.11 38.45 38.33 39.14 41.44 39.58 モーター1 10.34 19.38
27.85 34.56 38.25 38.14 38.14 39.78 40.32 41.45モーター2 7.35 16.33 24.76 33.28 38.44 38.11 38.04 38.89 39.12 42.53 モーター 3
5.12 14.47 21.88 33.78 37.98 37.99 37.99
38.97 40.44 38.24

データを分析すると、最初にモーターを駆動したときはモーターの速度差が大きく、モーター 1 > モーター 2 > モーター 3 > モーター 0 の順に回転速度が上がっていることがわかります。車の右側が左側よりわずかに大きい 2 つのモーター No.0 と 3 の速度が上昇すると同時に、時間の経過とともに 4 つのモーターの速度が目標値近くまで安定しますプログラムでは 40 ですが、変動はわずかに大きくなります。
オプション 2: 車が安定した後、90 度回転します。ホスト コンピューターの Z 軸角度曲線 (図 6.4) によると、曲線は時間の経過とともに 0 度から 90 度まで非常に滑らかに変化します。車が回転しているのが確認できましたが、速度は非常に安定しており、予想をはるかに上回っています。実際の自律移動プロセスでは、角度は PID 調整だけでなく視覚認識車線検出によって補助されるため、実際の効果はテスト結果よりも優れており、期待に応えます。
ここに画像の説明を挿入します

図6.4 ジャイロスコープのホストコンピュータ波形

6.1.3 テストの問題を解決する
分析の結果、オプション 1 のテストには 2 つの問題がありましたが、オプション 2 は期待どおりであったため、オプション 1 で現れた 2 つの問題を解決することに重点を置きます。
問題点1:モーターの始動直後に速度差が大きく、本体がたわむ。
一連のテストの結果、車両の4つのモーターの個体差が大きいことが判明したため、モーターエンコーダーのブザー音から始動可能なPWM値まで二分法で連続テストを実施しました。モーター: Motor0 は 40。Motor1 は 25、Motor2 は 34、Motor3 は 27。必要な PWM 値の順序は Motor1 < Motor2 < Motor3 < Motor0 であり、実験テストの結果と完全に一致しています。
この問題を解決するために、プログラムがモーターを初期化するときに、PWM の初期値が 0 に設定されるのではなく、PWM の初期値が最小開始 PWM とのギャップが最も小さい値に直接設定されます。すべてのモーターの値であり、車が動き始めることはありません。二分法テストを繰り返した結果、最終的に PWM の初期値は 30 に設定されました。各モータの補正後の速度データは表 6.2 のとおりであり、自動運転制御の条件を十分に満たしています。
表6.2 リニア補正データ
No. 1 2 3 4 5 6 7 8 9 10
Motor0 7.97 17.77 25.35 33.89 38.51 38.95 39.33 40.14 41.84 40.38
Motor1 9.34 19.45 27.85 34.36 37.35 37.34 39.88 41.78 40.38 41.54 モーター2 8.34 16.33
24.76 33.76 38.44 38.55 38.92 40.89 39.82 40.39
モーター3 8.12 17.47 24.88 33.28 38.98 39.05 39.58 40.97 40.74 40.88

質問 2: 各モーターの速度が安定に近づいた後も偏差が大きい。
さまざまな理由とデータの調査の結果、最終的にすべてのモーターで一連の PID パラメーターが共有されることが判明しましたが、モーターの個体差により、この一連のパラメーターがすべてのモーターに完全に適合するわけではなく、モーターの速度に若干のオーバーシュートやバラツキが発生します。安定時間が長い。
この問題を解決するために、Arduino IDE の出力イメージング機能を使用して各モーターの出力イメージを 1 つずつ生成し、プログラム内の PID 値を配列として設定します。変更後のシミュレーション結果は図 6.5 のようになります。
ここに画像の説明を挿入します

図6.5 モータ速度シミュレーション図

6.2 工業デザインの最適化
先に紹介した自動運転車制御システムの機能は基本的に実現されているものの、教育キットとして市場に流通している一部の自動運転車シリーズ製品にはまだ遠く及ばない。設計でいくつかの最適化を行う必要があると思います。私はすでにその一部を自分で最適化しており、残りについても最適化のアイデアを提案しています。行われた最適化は
大きな効果をもたらしています。簡単な例をいくつか挙げてみましょう:バッテリースイッチにより、電源を簡単にオフにできます。テストや使用に便利です。電源電圧表示モジュールは、トラブルシューティングとタイムリーな充電を容易にするために、リアルタイムでバッテリー電圧を表示します。車の機能インジケーターライトは、車両のさまざまな状態とモードを表示します。メインコントロールの取り付け位置はシリアルポートが露出しており、車のシャーシへの設置に便利ですプロセッサ通信などはもちろん、リモコンも完全なアクリルシェルで作られており、スイッチなどの重要なコンポーネントもが追加され、各コンポーネントの位置が合理的に配置され、非常に使いやすくなっています。これらは小さな最適化ですが、機能の実装とテストにとって非常に重要です。

その他の必要な、より複雑な最適化については、解決策もリストしました。空気が必要な方は、構造がシンプルで最適化されているので、後で美化作業をした方が良いでしょう。自動車の場合、構造が複雑で自動運転の主体となるため、多くの最適化が必要になります。この車両には、電源電圧安定化モジュールやモーター駆動モジュールなどの完成品モジュールが多数使用されており、多くの配線を接続する必要があり不便であるだけでなく、車内で多くのスペースを占めることが計画されています。すべてのモジュールチップ、対応する回路、インジケータライト、メイン制御チップなどをカスタマイズされたPCBに統合し、システムの完全性と信頼性を向上させることができます。車の機械構造に関しては、凹凸のある路面での車の安定性を高めるために、シャーシのホイールセットに適切なサスペンションが追加されています。デザインカーは美しく実用的なシェルと全体的なデザインの両方を備えており、カーシステム全体がより実際の製品に似ています。

6.3 本章の概要
この章では、Arduino シミュレーション ツールとホスト コンピュータの助けを借りて、自動車の基本機能をテストし、テスト中に発生する問題を分析および解決することで、問題解決手段と方法の効率化を実現しました。大幅に改善されました。同時に、自動運転車の機能を実現するための条件を提供するために、自動車の工業デザインが改善および最適化されています。

第 7 章 結論と展望
7.1 結論
この記事は、自動運転車システムの制御をそれ自体で完成させ、それを自動運転プログラムと組み合わせて自動運転機能を実現し、自動運転車システムの開発プロセスを理解することを目的としています。自動運転と人工知能という先進技術。得られた主な結論は以下の通りである:
(1) 自動運転車の全体的な設計スキームを決定し、動的解析を実施し、最終的にシステムの制御目標を決定し、システム関連スキームを設計した。
(2) システムの制御目標のモデルのシミュレーション設計を完了し、Matlab を使用して制御プロセスのシミュレーション モデリングを実行し、Solid Works を使用して各モジュールの外観とレイアウトのシミュレーションを完了しました。
(3) システムのハードウェア部分を構築し、メイン制御チップ、駆動モーター、駆動モジュール、センサーなどを選択し、システム回路部分を設計しました。
(4) システムソフトウェア部分の設計を完了し、主要な制御を分析し、制御フローチャートを設計し、システムプログラムの設計と書き込みを完了しました。
(5) 完成した制御システムをテストし、問題を解決し、同時に最適化します。

ただし、自動運転機能の実装には心残りがあり、完全な自動運転検証ができていないため、論文執筆後も引き続き頑張って人工知能自動運転のアルゴリズム部分を完成させたいと思っています非常に完成度の高い構造と機能を備えた人工知能自動運転車。
7.2 展望
カール・ベンツが研究した最初の自動車がドイツで誕生した 1885 年から第二次世界大戦後、産業技術の発展により自動車は精力的に発展し、1970 年代以降は電子情報の急速な発展が見られた。技術が自動車技術をさらに完成させた、10年以上前の新エネルギー車の提案と実用化、近年の人工知能支援の自動運転技術の出現と新電力自動車企業群の誕生まで、自動車の歴史全体を網羅しています。自動車の開発は産業技術の発展の縮図です。人工知能自動運転車制御システムの設計を通じて、私は人工知能開発プロセス全体とそのプロセスにおける各部分の重要な役割を包括的に理解しています。

謝辞
省略

参考文献
[1] Fang Min、Zhang Lixin、Yu Xingsheng. インテリジェント コネクテッド ビークルの開発に関する簡単な説明 [J]. Internal Combustion Engines and Accessories, 2020.
[2] Anonymous. 5G 商用利用により自動運転が高速化される可能性 [N] ]. Information Times、2019 年 6 月 20 日.
[3] 中国科学技術協会、中国オートメーション協会. 制御科学および工学分野開発レポート 2007-2008[M]. 中国科学技術新聞: 北京、2008: 1.
[4] Wang Ruifeng . Design of control system for travel devices on great-span mindy farm [D]. Shenyang Agriculture University, 2020.
[5] He Zhiqiang. PID コントローラーのパラメーター調整方法とその応用に関する研究 [D] . 浙江大学、2005.
[6] Fan Linan、Li Xuefei. コンピュータ制御技術 [M]. Machinery Industry Press: 北京、2009: 1.
[7] Wang Xiaojian、Hu Changsheng、Chen Ning、他. 設計と応用シングルチップマイクロコンピュータの解明 [M]. 清華大学出版局: 北京, 2011: 83 .
[8] Li Xin, Wang Shengquan. 基本機能を実現することで Arduino の利点を解明する [J]. Industrial Control Computer, 2019, 32( 01): 100-101. [3] Xu Jialu. 買い物かごを自動的に追跡 [J]. 科学技術イノベーション、2019.
[9] Xu Jialu. 買い物かごを自動的に追跡 [J]. 科学技術革新、2019 、1:1.
[10] Wang Qing、Dai Jianfeng、Li Weixue. 物理原理と工学技術 [M]. National Defense Industry Press: 北京、2008: 22.
[11] Zhu Peng. 間の Bluetooth 通信の設計と実装ARDUINIO 開発ボードと ANDROID 携帯電話 [J]、コンピュータの知識と技術、2016 年。


5. リソースのダウンロード

このプロジェクトのソース コードと完全な論文は次のとおりです。必要な友人はクリックしてダウンロードできます。リンクが機能しない場合は、下のカードをクリックしてコードをスキャンし、ご自身でダウンロードしてください。

シリアルナンバー 卒業プロジェクト リソースの完全なセット (クリックしてダウンロード)
このプロジェクトのソースコード Arduino+PID+AIに基づく自動運転車制御システムの設計と実装 (ソースコード+ドキュメント)_Arduino_自動運転車制御システム.zip

おすすめ

転載: blog.csdn.net/m0_66238867/article/details/131063729