MATLAB ヘルプ センター
ドライビング シナリオにおけるアクターの位置、速度、および向き
poses = actorPoses(scenario)
poses = actorPoses(scenario) は、ドライビング シナリオ scenario におけるすべてのアクターの現在の姿勢 (位置、速度、および向き) を返します。アクターには、Actor オブジェクト、Vehicle オブジェクト、および Barrier セグメントが含まれます。これらはそれぞれ、actor、vehicle、および barrier の各関数を使用して作成できます。アクターの姿勢はシナリオ座標で表されます。
poses
scenario
Actor
Vehicle
Barrier
actor
vehicle
barrier
例
すべて折りたたむ
1 つの曲線道路、2 つの直線道路、2 つのアクター (車と自転車) が含まれたドライビング シナリオを作成します。どちらのアクターも 60 秒間道路に沿って移動します。
ドライビング シナリオ オブジェクトを作成します。
scenario = drivingScenario('SampleTime',0.1','StopTime',60);
半径 800 メートルの円弧に従う道路中心点を使用して、曲線道路を作成します。円弧は 0 度から開始して 90 度で終了し、5 度のインクリメントでサンプリングされます。
angs = [0:5:90]'; R = 800; roadcenters = R*[cosd(angs) sind(angs) zeros(size(angs))]; roadwidth = 10; cr = road(scenario,roadcenters,roadwidth);
両端の道路中央点を使用して、既定の幅をもつ 2 本の直線道路を追加します。最初の直線道路の両エッジに障壁を追加します。
roadcenters = [700 0 0; 100 0 0]; sr1 = road(scenario,roadcenters); barrier(scenario,sr1) barrier(scenario,sr1,'RoadEdge','left') roadcenters = [400 400 0; 0 0 0]; road(scenario,roadcenters);
道路の境界を取得します。
rbdry = roadBoundaries(scenario);
車と自転車をシナリオに追加します。1 つ目の直線道路の最初の位置に車を配置します。
car = vehicle(scenario,'ClassID',1,'Position',[700 0 0], ... 'Length',3,'Width',2,'Height',1.6);
道路を進んだ先に自転車を配置します。
bicycle = actor(scenario,'ClassID',3,'Position',[706 376 0]', ... 'Length',2,'Width',0.45,'Height',1.5);
シナリオをプロットします。
plot(scenario,'Centerline','on','RoadCenters','on'); title('Scenario');
アクターの姿勢とプロファイルを表示します。
allActorPoses = actorPoses(scenario)
allActorPoses=242×1 struct array with fields: ActorID Position Velocity Roll Pitch Yaw AngularVelocity
allActorProfiles = actorProfiles(scenario)
allActorProfiles=242×1 struct array with fields: ActorID ClassID Length Width Height OriginOffset MeshVertices MeshFaces RCSPattern RCSAzimuthAngles RCSElevationAngles
このシナリオには障壁があり、各障壁セグメントがアクターと見なされているため、関数 actorPoses および関数 actorProfiles は、すべての静止アクターと非静止アクターの姿勢を返します。車両や二輪車など非静止アクターの姿勢とプロファイルのみを取得するには、まず scenario.Actors.ActorID プロパティを使用して、それらの対応するアクター ID を取得します。
actorPoses
actorProfiles
scenario.Actors.ActorID
movableActorIDs = [scenario.Actors.ActorID];
次に、それらの ID を使用して、非静止アクターの姿勢とプロファイルのみをフィルター処理します。
movableActorPoseIndices = ismember([allActorPoses.ActorID],movableActorIDs); movableActorPoses = allActorPoses(movableActorPoseIndices)
movableActorPoses=2×1 struct array with fields: ActorID Position Velocity Roll Pitch Yaw AngularVelocity
movableActorProfiles = allActorProfiles(movableActorPoseIndices)
movableActorProfiles=2×1 struct array with fields: ActorID ClassID Length Width Height OriginOffset MeshVertices MeshFaces RCSPattern RCSAzimuthAngles RCSElevationAngles
drivingScenario
ドライビング シナリオ。drivingScenario オブジェクトとして指定します。
アクターの姿勢 (シナリオ座標)。構造体、または構造体の配列として返されます。"姿勢" とは、アクターの位置、速度、および向きです。
poses の各構造体には以下のフィールドが含まれます。
ActorID
シナリオで定義されているアクター識別子。正の整数として指定します。
R2024b において:
FrontAxlePosition
車両の前車軸の位置。[x y z] の形式の 3 要素行ベクトルとして指定します。単位はメートルです。
メモ
このフィールドは、少なくとも 1 つの車両の前車軸の軌跡がドライビング シナリオに含まれていないと ActorPoses 構造体に含まれません。
ActorPoses
Position
アクターの位置。[x y z] という形式の実数値ベクトルとして指定します。単位はメートルです。
Velocity
x 方向、y 方向、z 方向のアクターの速度 (v)。[vx vy vz] という形式の実数値ベクトルとして指定します。単位はメートル/秒です。
Roll
アクターのロール角。実数値スカラーとして指定します。単位は度です。
Pitch
アクターのピッチ角。実数値スカラーとして指定します。単位は度です。
Yaw
アクターのヨー角。実数値スカラーとして指定します。単位は度です。
AngularVelocity
x 方向、y 方向、z 方向のアクターの角速度 (ω)。[ωx ωy ωz] という形式の実数値ベクトルとして指定します。単位は度/秒です。
これらの構造体フィールドの完全な定義については、関数 actor、vehicle、および barrier を参照してください。
R2017a で導入
drivingRadarDataGenerator
visionDetectionGenerator
lidarPointCloudGenerator
targetPoses
targetOutlines
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
ヨーロッパ
アジア太平洋地域
最寄りの営業オフィスへのお問い合わせ