幾何学的アプローチに基づいた衝突回避システムを備えた2つのUAVSシミュレーションの実装に関するPython3プロジェクト。プロジェクトリンク:
UAV Collision Avoidance 3DスペースでのUAVS安全な協力の問題を満たす私の学士号の論文プロジェクトです。プロジェクトは、機能物理学の計算、スケーラブルなGUI、現実的なADS-Bの可能性のある衝突回避システム、およびオンボード飛行計画を実装します。アプリケーションは、シミュレートされた航空機と直線的に事前にレンダリングされたシミュレーションを提示するマルチスレッドリアルタイムシミュレーションを提供し、迅速なアルゴリズムの有効性テストを可能にします。
-45°, 45° 、および-90°, 90°見なされます。ポジティブピッチ角は、登山とポジティブロール角度がバンキングを意味することを意味します。角度は、リアリズムの保存のために近似されていません。衝突検出と回避アルゴリズムの両方が幾何学的アプローチに依存しています。それらは参照された論文2に提示されました。衝突検出は、衝突と正面衝突を区別します。 2番目のものは、UAVが投影された大衆の衝突の衝突の間に距離がなく、最初のものが他のすべてのタイプの接触である場合に適用されます。
幾何学的アプローチは、衝突検出と回避に役立つことが証明されています。このシステムは、ほとんどの場合、衝突を回避できます。システムは完璧ではなく、特に紛争が検出されたときに航空機が互いに近すぎる場合、いくつかのシナリオで失敗する可能性があります。このシステムはエネルギー効率が高く、実際のシナリオで使用できます。
提案されたテストケースの生成および評価システムは、シンプルで効果的です。これにより、さまざまなシナリオでシステムの有効性を迅速にテストできます。システムをさらに開発して、より複雑なシナリオと追加のパラメーターを含めることができます。
Python3 3プロジェクトは、Pypiパッケージ4として包まれています。 Pyside6 5 (QTのPython QT6ライブラリ)がGUIの実装に使用されました。
アプリケーションは、2つの主要なオブジェクトタイプ、シミュレーションと航空機に基づいて構築されています。シミュレーションは初期設定まで作成され、同時リアルタイムバリアントと線形のプレレンダリングが可能になります。航空機は、ADS-Bスレッドによって制御されるUAVの物理的表現とフライト制御コンピューターの物理的な表現という2つの要素で構成されています。 UAVシステム間の研究は、2番目の引用紙6から引き出されました。
シミュレーションデータはCSV形式で保存されます。ファイル内の各行は、実行された単一のシミュレーションを表します。 CSVファイルの列は、航空機の初期パラメーターと最終パラメーター、衝突検出結果、および回避のない場合の両方の場合の航空機間の最小の相対距離を含む、テストケースに関する詳細情報を表しています。
シミュレーションデータファイルの例は、データディレクトリデータに保存されます。 10 Hzシミュレーション周波数で実施された200のシミュレーションテストの結果は、ファイルシミュレーション-2024-06-10-00-21-19.CSVに保存されます。
ファイル構造は、 treeコマンドを使用して生成されました。
tree --gitignore -I " __pycache__|.env|.github|.pytest_cache|.vscode|assets|build|logs|path-visual|uav_collision_avoidance.egg-info|venv|docs "ここでファイル構造を表示します:ファイル構造
現時点では8つの可能な議論があります。
file_path test_index collision_avoidance GUIシミュレーションを実行します。ファイル名を指定でき、デフォルトで最新のシミュレーションデータが見つかります。テストインデックスを指定し、デフォルトは0になります。衝突回避を指定でき、デフォルトはオフになりますtest_number衝突回避アルゴリズムの有効性を比較した完全なテストを実行します、テスト番号はデフォルトです15file_path test_indexロード - 指定されたときにファイルからヘッドレスシミュレーションをロードして実行します。テストインデックスを指定し、デフォルトは0になりますargument - 印刷はアプリの引数のメッセージをヘルプします。デフォルトはすべての引数リストになりますアプリのリアルタイムバージョンには、ユーザーと環境とのやり取りを可能にするいくつかの重要なショートカットがあります。
注記
航空機0は最初のもの、航空機1は2番目のものです。
フルスケールのテストを可能にするアプリのリアルタイムバージョン用のいくつかの重要なショートカットがあります。
次のコマンドを実行してアプリをインストールします。
pip install uav-collision-avoidanceDebian 12の場合、次の依存関係をインストールする必要があります。
sudo apt-get install libgl1 libxcb-xinerama0アプリをヘッドレスで実行するには、次のエクスポートを実行する必要があります。
export QT_QPA_PLATFORM=offscreen次のいずれかを使用してアプリを実行します。
uav-collision-avoidanceuav-collision-avoidance realtime [file_name] [test_index] [collision_avoidance]uav-collision-avoidance headlessuav-collision-avoidance tests [test_number]uav-collision-avoidance ongoinguav-collision-avoidance load [file_name] [test_index]uav-collision-avoidance help [argument]uav-collision-avoidance versionリポジトリのクローンを作成し、次のコマンドを実行して作成します。
#! /bin/bash
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python main.py [argument]python - m venv venv
.venvScriptsactivate
pip install - r requirements.txt
python main.py [ argument ]3次元(3D)ワールドは、高さ(Z座標)を平坦化することにより、2D画面に投影されます。プログラムの開始時には、ビューはどの航空機も中心にありません。ビューは、矢印キーで移動したり、 Nキーを使用して航空機を中心に移動したりできます。
1つのコーディング規則は、プロジェクトの範囲に保持されていません。 QTのメソッドはCamelCaseフォーマットされており、残りは変数およびメンバー名のsnake_caseを含むデフォルトのpythonネーミングコンベンションです。
MiłoszMaculewicz
ライセンスを確認してください

NOUNプロジェクトのAnthonyLuiによるドローン(CC by 3.0)
使用されているすべての参照を以下に示します。
航空機の主要軸↩
幾何学的アプローチに基づくUAV衝突回避↩
python3↩
ピピ↩
pyqt6↩
エネルギー効率の高いUAV飛行制御方法障害と突風のある環境で