UAV 形成経路計画アルゴリズムの Matlab 実装

屋内マルチエージェント協調制御とは、密閉空間内で各UAVと無人車両が移動時に相互に一定の相対距離を維持し、速度と位置に関して事前に設定されたルートまたはコマンドに従って移動できるプロセスを指します。このプラットフォームのマルチエージェント協調測位は光学式モーションキャプチャ技術を採用しており、WiFiネットワークを介してマルチマシンおよびマルチワークショップ通信を実現しており、ユーザーは開発したUAVおよび無人車両編隊シミュレーション制御アルゴリズムによって生成されたコードを直接For社にダウンロードすることができます。ドローンと無人車両の複数のマシンと複数の車両の分散フォーメーションアルゴリズムが屋内環境で検証されます。

UAV協調制御
2. 特徴と利点

(1) 屋内測位システム

屋内光学式モーション キャプチャ技術を使用し、測位範囲は 5m×5m (カスタマイズ可能に拡張可能) で、ミリ単位の測位をサポートし、最大 12 台のドローンまたは無人車両を同時にキャプチャできます。

(2) マルチエージェント

プラットフォームシステムは、フォーメーション実験用に4台のドローンと2台の無人車両をサポートします(実験室の特定の条件に応じて制御対象の数を拡張できます)。

(3) 基本的な開発基盤

制御アルゴリズムの研究は、自動コード生成と、無線 WiFi を介した UAV 飛行制御ボードおよび無人車両制御ボードへのダウンロードをサポートする MATLAB/Simulink ソフトウェア プラットフォーム上で実行できます。

(4) 拡張開発言語

このシステムは C、C++、Python プログラミングをサポートしており、一定のコード開発能力を持つ学生がコード プログラミング能力をさらに磨くのに適しています。

(5) ROS の学習と開発
ROS システムコードに対する Simulink 制御モデルの自動生成を実現し、ROS システム制御モデルの開発難易度を軽減し、人気の学部教育実験に適した ROS サポートパッケージを提供します。

(6) 塗布方向

無人工具の動的モデリングや制御研究、動作計画、障害物回避制御、多情報融合、フォーメーション制御、マルチエージェント協調制御、無人工具の自律制御などに利用できます。

UAV の編隊経路計画は複雑な問題であり、
特定のシナリオや要件に応じてさまざまなアルゴリズムを選択する必要があります。
比較的一般的なアルゴリズムを以下に示します。これには、
各 UAV と最も近いパス ポイント間の距離と偏角を計算するステップが含まれます。
最短距離と最小角度誤差の間のバランスを達成するために、ターゲットの加速度と角速度を計算します。
目標の姿勢を達成するために、目標の速度と加速度に従ってドローンの x 軸速度 vx、y 軸速度 vy、機首角方位を計算します。
すべてのドローンが目標のポーズに達するまで、上記の手順を繰り返します。

ここに画像の説明を挿入



#include <stdio.h>
#include <math.h>

#define MAX 100

struct drone {
    double x; //无人机的x坐标
    double y; //无人机的y坐标
    double vx; //无人机的x轴速度
    double vy; //无人机的y轴速度
    double ax; //无人机的x轴加速度
    double ay; //无人机的y轴加速度
    double heading; //无人机的航向角
    double speed; //无人机的速度
    double distance; //无人机和目标点的距离
    double angle; //无人机和目标点的偏角
};

struct path {
    double x; //路径点x坐标
    double y; //路径点y坐标
};

void path_planning(struct drone drones[], int num_drones, struct path paths[], int num_path) {
    for (int i = 0; i < num_drones; i++) {
        //计算每个无人机和最近路径点之间的距离和偏角
        int nearest_index = -1; //最近的路径点索引
        double nearest_distance = INFINITY; //到最近路径点的距离
        for (int j = 0; j < num_path; j++) {
            double distance = sqrt(pow(drones[i].x - paths[j].x, 2) + pow(drones[i].y - paths[j].y, 2));
            double angle = atan2(paths[j].y - drones[i].y, paths[j].x - drones[i].x);
            angle -= drones[i].heading;
            if (distance < nearest_distance) {
                nearest_index = j;
                nearest_distance = distance;
                drones[i].distance = distance;
                drones[i].angle = angle;
            }
        }
        //计算目标速度和角速度
        double k1 = 1.0, k2 = 1.0; //调节参数
        drones[i].ax = k1 * drones[i].distance * cos(drones[i].angle);
        drones[i].ay = k1 * drones[i].distance * sin(drones[i].angle);
        double heading_error = atan2(drones[i].ay, drones[i].ax);
        double w = k2 * heading_error;
        //计算目标速度
        double max_speed = 10.0; //最大速度
        drones[i].speed = fmin(max_speed, k1 * drones[i].distance);
        //计算目标速度和角速度
        drones[i].vx = drones[i].speed * cos(drones[i].heading) + drones[i].ax;
        drones[i].vy = drones[i].speed * sin(drones[i].heading) + drones[i].ay;
        drones[i].heading += w; //更新无人机的航向角
    }
}

int main() {
    struct drone drones[MAX] = {
        {1.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
        {3.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
        {2.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
    };
    struct path paths[MAX] = {
        {5.0, 1.0},
        {4.0, 4.0},
        {1.0, 6.0}
    };
    path_planning(drones, 3, paths, 3);
    for (int i = 0; i < 3; i++) {
        printf("Drone %d: x=%lf, y=%lf, vx=%lf, vy=%lf\n", i + 1, drones[i].x, drones[i].y, drones[i].vx, drones[i].vy);
    }
    return 0;
}

上記のコードは、ドローンを現在の位置から指定された一連のウェイポイントに移動する方法を示しています。ご覧のとおり、このアルゴリズムでは、各ドローンはリスト内のウェイポイントから最も近いウェイポイントを見つけ、最も近いウェイポイントでのターゲットの x、y 座標と機首角を更新します。さらに、チューニングパラメータと現在の機首角を用いて、目標加速度、目標角速度、目標速度を計算する。
この単純な例は実現可能な経路計画アルゴリズムですが、実際のアプリケーションでは、現実世界のさまざまな複雑で変わりやすいシナリオやニーズに適応するために、より複雑で高度なアルゴリズムが必要になる場合があります。

より複雑な状況では、深層強化学習 (DeepRL) アルゴリズムなどの一部の強化学習アルゴリズムを使用して、よりインテリジェントで適応性のある UAV 編隊経路計画を実現することもできます。これらのアルゴリズムは、ニューラル ネットワーク モデルを使用してドローンの動作と環境の関係を学習し、位置、速度、角速度などの戦略を最適化し、最適な経路計画ソリューションを実現します。
深層強化学習アルゴリズムを使用する場合、通常は次の手順が必要です。
1. エージェントの状態、アクション、および報酬関数を定義します。2. シミュレーターまたは実際のシーンで一連のトレーニングを実行し、ニューラル ネットワークの重みを調整して損失関数を最適化します。3. シミュレータまたは実際のシーンで一連のテストを実行して、パフォーマンス指標を評価し、調整と改善を行います。
深層強化学習アルゴリズムは、UAV 編隊経路計画のためのより柔軟で適応性のある方法を提供します。実際のシナリオとアプリケーション要件に従って、対応する報酬関数と学習戦略を定式化し、より理想的な形成パス計画スキームを実現できます。

おすすめ

転載: blog.csdn.net/AQRSXIAO/article/details/132048380