3D シミュレーションでの UAV ナビゲーション向けステレオ Visual SLAM
"Visual SLAM" とは、環境地図作成を行うのと同時に、周囲に対するカメラの位置と向きを計算する処理のことです。Visual SLAM アルゴリズムを開発し、さまざまな条件でそのパフォーマンスを評価することは、困難な課題です。最大の課題の 1 つは、特に屋外環境で、カメラ センサーのグラウンド トゥルースを生成することです。シミュレーションを使用することで、さまざまなシナリオやカメラ構成でテストを行って、正確なグラウンド トゥルースを得ることができます。
この例では、Unreal Engine® シミュレーションを使用して、ステレオ カメラを搭載した UAV の市街地シナリオにおける Visual SLAM アルゴリズムを開発する方法を示します。
シミュレーション環境の設定
まず、Visual SLAM アルゴリズムのテストに使用できるシミュレーション環境でシナリオを設定します。典型的な市街地を描いたシーンをテスト対象ビークルの UAV とともに使用します。
次に、UAV がシーン内でたどる軌道を選択します。Unreal Engine シミュレーションのウェイポイントの選択 (Automated Driving Toolbox)の例に従って、一連のウェイポイントを対話形式で選択した後、関数 helperSelectSceneWaypoints を使用して UAV の基準軌跡を生成できます。この例では、以下に示すように、記録済みの基準軌跡を使用します。
% Load reference path data = load("uavStereoSLAMData.mat"); pos = data.pos; % Position orientEuler = data.orientEuler; % Orientation

Simulation 3D Scene Configuration (UAV Toolbox)ブロックを使用して、米国の市街地シーンを組み込んだ UAVVisualSLAMIn3DSimulation Simulink® モデルが構成されます。モデルは、Simulation 3D UAV Vehicle (UAV Toolbox)ブロックを使用して UAV をシーンに配置します。2 つのSimulation 3D Camera (UAV Toolbox)ブロックで構成されるステレオ カメラが UAV に接続されます。Simulation 3D Camera (UAV Toolbox)ブロックのダイアログ ボックスで、[取り付け] タブを使用してカメラの位置を調整します。[パラメーター] タブを使用して、さまざまなカメラをシミュレートするようにカメラのプロパティを構成します。シミュレートするステレオ カメラの内部パラメーターを推定するには、ステレオ カメラ キャリブレーター アプリの使用アプリを使用します。
% Stereo camera parameters focalLength = [1109, 1109]; % In pixels principalPoint = [640, 360]; % In pixels [x, y] imageSize = [720, 1280]; % In pixels [mrows, ncols] baseline = 0.5; % In meters % Open the model modelName = 'UAVVisualSLAMIn3DSimulation'; open_system(modelName);

Warning: Unrecognized function or variable 'CloneDetectionUI.internal.CloneDetectionPerspective.register'.

ステレオ Visual SLAM シミュレーションの実行
Helper Stereo Visual SLAM System ブロックは、stereovslamクラスを使用してステレオ Visual SLAM パイプラインを実装するものです。モデルをシミュレートし、結果を可視化します。
% Set the random seed to get consistent results rng(0); % Run simulation sim(modelName);


モデルを閉じます。
close_system(modelName);
参考文献
[1] Mur-Artal, Raul, and Juan D. Tardós. "ORB-SLAM2: An open-source SLAM system for monocular, stereo, and RGB-D cameras." IEEE Transactions on Robotics 33, no. 5 (2017): 1255-1262.