chasePlot
自己を中心とした射影パースペクティブのプロット
説明
chasePlot(
は、アクター ac
)ac
のパースペクティブからドライビング シナリオをプロットします。このプロットは "追跡プロット" と呼ばれ、自己を中心とした射影パースペクティブをもちます。ここでは、ビューはアクターのすぐ後ろに配置されます。
chasePlot(
は、1 つ以上の名前と値のペアを使用してオプションを指定します。たとえば、道路の中心とアクターのウェイポイントをプロット上に表示できます。ac
,Name,Value
)
例
S 字カーブ上を走行する自動車のシミュレーション
1 台の自動車が S 字カーブ上を走行するドライビング シナリオをシミュレートします。車線境界線を作成してプロットします。
S 字カーブをもつ 1 本の道路を使用して、ドライビング シナリオを作成します。
scenario = drivingScenario('StopTime',3);
roadcenters = [-35 20 0; -20 -20 0; 0 0 0; 20 20 0; 35 -20 0];
車線を作成して道路に追加します。
lm = [laneMarking('Solid','Color','w'); ... laneMarking('Dashed','Color','y'); ... laneMarking('Dashed','Color','y'); ... laneMarking('Solid','Color','w')]; ls = lanespec(3,'Marking',lm); road(scenario,roadcenters,'Lanes',ls);
自車を追加し、そのウェイポイントから軌跡を指定します。自動車は、既定で 30 メートル/秒で走行します。
car = vehicle(scenario, ... 'ClassID',1, ... 'Position',[-35 20 0]); waypoints = [-35 20 0; -20 -20 0; 0 0 0; 20 20 0; 35 -20 0]; smoothTrajectory(car,waypoints);
シナリオ、および対応する追跡プロットをプロットします。
plot(scenario)
chasePlot(car)
シミュレーション ループを実行します。
鳥瞰図プロットを初期化し、アウトライン プロッター、左車線と右車線の境界線プロッター、および道路境界線プロッターを作成します。
道路の境界線と四角形のアウトラインを取得します。
車両の左右にある車線境界線を取得します。
シミュレーションを進めてプロッターを更新します。
bep = birdsEyePlot('XLim',[-40 40],'YLim',[-30 30]); olPlotter = outlinePlotter(bep); lblPlotter = laneBoundaryPlotter(bep,'Color','r','LineStyle','-'); lbrPlotter = laneBoundaryPlotter(bep,'Color','g','LineStyle','-'); rbsEdgePlotter = laneBoundaryPlotter(bep); legend('off'); while advance(scenario) rbs = roadBoundaries(car); [position,yaw,length,width,originOffset,color] = targetOutlines(car); lb = laneBoundaries(car,'XDistance',0:5:30,'LocationType','Center', ... 'AllBoundaries',false); plotLaneBoundary(rbsEdgePlotter,rbs) plotLaneBoundary(lblPlotter,{lb(1).Coordinates}) plotLaneBoundary(lbrPlotter,{lb(2).Coordinates}) plotOutline(olPlotter,position,yaw,length,width, ... 'OriginOffset',originOffset,'Color',color) end
ドライビング シナリオ シミュレーションでのターゲット アウトラインの表示
ドライビング シナリオを作成し、シミュレーションの進行に伴うターゲット アウトラインの変化を示します。
2 つの交差する直線道路で構成されたドライビング シナリオを作成します。1 つ目の道路セグメントの長さは 45 メートルです。2 つ目の直線道路は、長さが 32 メートルで、両端にジャージ障壁があり、1 つ目の道路と交差します。1 つ目の道路に沿って秒速 12.0 メートルで移動している車が、秒速 2.0 メートルで交差点を現在渡っている歩行者に近づいていきます。
scenario = drivingScenario('SampleTime',0.1,'StopTime',1); road1 = road(scenario,[-10 0 0; 45 -20 0]); road2 = road(scenario,[-10 -10 0; 35 10 0]); barrier(scenario,road1) barrier(scenario,road1,'RoadEdge','left') ped = actor(scenario,'ClassID',4,'Length',0.4,'Width',0.6,'Height',1.7); car = vehicle(scenario,'ClassID',1); pedspeed = 2.0; carspeed = 12.0; smoothTrajectory(ped,[15 -3 0; 15 3 0],pedspeed); smoothTrajectory(car,[-10 -10 0; 35 10 0],carspeed);
車両の自己を中心とした追跡プロットを作成します。
chasePlot(car,'Centerline','on')
空の鳥瞰図プロットを作成し、アウトライン プロッターおよび車線境界線プロッターを追加します。次に、シミュレーションを実行します。各シミュレーション ステップは以下のとおりです。
追跡プロットを更新して、道路の境界およびターゲット アウトラインを表示する。
鳥瞰図プロットを更新して、更新した道路の境界およびターゲット アウトラインを表示する。プロットのパースペクティブは常に、自車が基準となっています。
bepPlot = birdsEyePlot('XLim',[-50 50],'YLim',[-40 40]); outlineplotter = outlinePlotter(bepPlot); laneplotter = laneBoundaryPlotter(bepPlot); legend('off') while advance(scenario) rb = roadBoundaries(car); [position,yaw,length,width,originOffset,color] = targetOutlines(car); [bposition,byaw,blength,bwidth,boriginOffset,bcolor,barrierSegments] = targetOutlines(car,'Barriers'); plotLaneBoundary(laneplotter,rb) plotOutline(outlineplotter,position,yaw,length,width, ... 'OriginOffset',originOffset,'Color',color) plotBarrierOutline(outlineplotter,barrierSegments,bposition,byaw,blength,bwidth, ... 'OriginOffset',boriginOffset,'Color',bcolor) pause(0.01) end
入力引数
ac
— アクター
Actor
オブジェクト | Vehicle
オブジェクト
drivingScenario
オブジェクトに属するアクター。Actor
オブジェクトまたは Vehicle
オブジェクトとして指定します。これらのオブジェクトを作成するには、関数 actor
および vehicle
をそれぞれ使用します。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。
R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: chasePlot(ac,'Centerline','on','RoadCenters,'on')
は、各道路セグメントのセンター ラインと道路の中心を表示します。
Parent
— プロットの描画に使用する座標軸
Axes
オブジェクト
プロットの描画に使用する座標軸。'Parent'
と Axes
オブジェクトで構成されるコンマ区切りのペアとして指定します。Parent
を指定しない場合は、新しい Figure が作成されます。
Centerline
— 道路のセンター ラインを表示
'off'
(既定値) | 'on'
道路のセンター ラインを表示します。'Centerline'
と 'off'
または 'on'
で構成されるコンマ区切りのペアとして指定します。センター ラインは各道路セグメントの中央に従います。交差点や道路の分岐などの領域では、センター ラインは不連続になります。
RoadCenters
— 道路の中心を表示
'off'
(既定値) | 'on'
道路の中心を表示します。'RoadCenters'
と 'off'
または 'on'
で構成されるコンマ区切りのペアとして指定します。道路の中心は、プロットに表示される道路を定義します。
Waypoints
— アクターのウェイポイントを表示
'off'
(既定値) | 'on'
アクターのウェイポイントを表示します。'Waypoints'
と 'off'
または 'on'
で構成されるコンマ区切りのペアとして指定します。ウェイポイントはアクターの軌跡を定義します。
Meshes
— アクターのメッシュを表示
'off'
(既定値) | 'on'
直方体の代わりにアクターのメッシュを表示します。'Meshes'
と 'off'
または 'on'
で構成されるコンマ区切りのペアとして指定します。
ViewHeight
— プロット視点の高さ
1.5 × アクターの高さ (既定値) | 正の実数スカラー
プロット視点の高さ。'ViewHeight'
と正の実数スカラーで構成されるコンマ区切りのペアとして指定します。高さはアクターの下部を基準とします。単位はメートルです。
ViewLocation
— プロット視点の位置
2.5 × アクターの長さ (既定値) | [x, y] 実数値ベクトル
プロット視点の位置。'ViewLocation'
と [x, y] 実数値ベクトルで構成されるコンマ区切りのペアとして指定します。位置はアクターの座標系における直方体の中心を基準とします。視点の既定の位置は、直方体の中心の背後、[2.5*actor.Length 0]
です。単位はメートルです。
ViewRoll
— プロット視点のロール角の向き
0
(既定値) | 実数のスカラー
プロット視点のロール角の向き。'ViewRoll'
と実数スカラーで構成されるコンマ区切りのペアとして指定します。単位は度です。
ViewPitch
— プロット視点のピッチ角の向き
0
(既定値) | 実数のスカラー
プロット視点のピッチ角の向き。'ViewPitch'
と実数スカラーで構成されるコンマ区切りのペアとして指定します。単位は度です。
ViewYaw
— プロット視点のヨー角の向き
0
(既定値) | 実数のスカラー
プロット視点のヨー角の向き。'ViewYaw'
と実数スカラーで構成されるコンマ区切りのペアとして指定します。単位は度です。
バージョン履歴
R2017a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)