主要内容

使用轨迹对象模型平台运动

这一主题介绍如何使用三个不同的轨迹对象模型平台轨迹,以及如何在二者之间做出选择。

介绍

传感器融合和跟踪工具箱™提供了三个系统对象模型,您可以使用轨迹的平台包括地面车辆、船舶、飞机、航天器。你可以选择这些轨迹对象之间基于可用的轨迹信息和距离的轨迹。

  • waypointTrajectory——定义了一个使用一些路标点轨迹在笛卡尔坐标轨迹必须通过。轨迹假设参考坐标系是固定North-East-Down (NED)或East-North-Up ENU表示框架。自从轨迹插补假设中表达的重力加速度轨迹参考系是常数,waypointTrajectory通常用于轨迹中定义一个跨度只有数十或数百公里。

  • geoTrajectory——定义了一个使用一些路标点轨迹在大地坐标系(纬度、经度和海拔)轨迹必须通过。由于路径点表示在大地坐标系,geoTrajectory通常用于轨迹从几百美元到几千公里的距离。

  • kinematicTrajectory——定义了一个使用运动轨迹属性,如加速度和角加速度,车身骨架中表达平台。您可以使用kinematicTrajectory生成的轨迹距离跨度只要运动轨迹的信息是可用的。假设一个笛卡尔坐标参考系的对象。

这两个waypoint-based轨迹对象(waypointTrajectorygeoTrajectory)可以自动计算的线速度信息平台,但是你也可以显式地指定使用的线速度速度属性的组合课程,水平速度,ClimbRate属性。

平台由旋转运动的轨迹和平移运动。默认情况下,这两个waypoint-based轨迹对象(waypointTrajectorygeoTrajectory)自动生成平台在每一个路标的方向调整的路径轨迹的偏航角,但是您可以显式地指定使用的方向取向财产。或者,您可以使用AutoPitchAutoBank属性来启用自动俯仰和滚角,分别。为kinematicTrajectory,你需要使用取向财产和角速度输入指定的旋转运动轨迹。

waypointTrajectory

waypointTrajectory系统对象定义了一个轨迹,顺利通过锚点用笛卡尔坐标表示的。一般来说,您可以使用waypointTrajectory行驶数百公里范围内的车辆模型。这些车辆包括汽车、海洋表面工艺,商用飞机(直升机、飞机、和四轴飞行器)。你可以选择参考系作为固定ENU表示或NED框架使用ReferenceFrame财产。更多细节关于对象生成轨迹,看到算法的部分waypointTrajectory

waypointTrajectory示例飞机着陆

定义的轨迹着陆飞机使用waypointTrajectory对象。

路点= (-421 -384 2000;47 -294 1600;1368 174 1300;995 1037 900;-285 293 600;-1274 84 350;-2328 101 150;-3209 83 0];timeOfArrival = [0;16.71; 76.00; 121.8; 204.3; 280.31; 404.33; 624.6]; aircraftTraj = waypointTrajectory(waypoints,timeOfArrival);

创建一个theaterPlot对象形象化轨迹和飞机。

minCoords = min(锚点);maxCoords = max(锚点);tp = theaterPlot (“XLimits”,1.2 * [minCoords (1) maxCoords (1)]。“YLimits”,1.2 * [minCoords (2) maxCoords (2)),“ZLimits”,1.2 * [minCoords (3) maxCoords (3)));%创建一个轨迹绘图仪绘图机和一个平台tPlotter = trajectoryPlotter (tp,“DisplayName的”,“轨迹”);pPlotter = platformPlotter (tp,“DisplayName的”,“飞机”);

获得使用笛卡尔路径点的轨迹lookupPose对象的功能。

sampleTimes = timeOfArrival (1): timeOfArrival(结束);numSteps =长度(sampleTimes);(位置,方向)= lookupPose (aircraftTraj sampleTimes);plotTrajectory (tPlotter{职位})轴平等的

阴谋使用飞机网平台运动对象。

网=(旋转(tracking.scenario规模。airplaneMesh [0 0 180]) 15);%夸大规模为更好的可视化视图(20.545,-20.6978)i = 1: numSteps plotPlatform (pPlotter位置(我:),网状,方向(我))%取消下一行慢飞机运动动画%暂停(1 e)结束

动画中,飞机的偏航角与默认轨迹。

创建第二个飞机轨迹相同的路径点作为第一个飞机轨迹,但设置它AutoPitchAutoBank属性真正的。这生成一个更具代表性可能的飞机机动轨迹。

timeOfArrival aircraftTraj2 = waypointTrajectory(锚点,“AutoPitch”,真的,“AutoBank”,真正的);

情节第二轨道,观察飞机方向的变化。

[positions2, orientations2] = lookupPose (aircraftTraj2 sampleTimes);i = 1: numSteps plotPlatform (pPlotter positions2(我:),网状,orientations2(我));%取消下一行慢飞机运动动画%暂停(1 e)结束

图包含一个坐标轴对象。坐标轴对象包含2线类型的对象。这些对象代表轨迹,飞机。

可视化方向角的两个轨迹之间的区别。

距离= dist (orientations2方向);图绘制(sampleTimes,距离* 180 / pi)包含(的时间(秒))ylabel (“角距离(dge)”)标题(的定位区别两个航点的轨迹)

图包含一个坐标轴对象。坐标轴对象与标题取向差异两个航点轨迹包含一个类型的对象。

geoTrajectory

geoTrajectory系统对象生成一个轨迹在类似的方式,使用锚点waypointTrajectory对象,但它有两个主要的差异如何指定路径点和速度输入。

  • 当指定锚点geoTrajectory中每个路标,表达大地坐标的纬度,经度和海拔高于WG84椭球模型。使用大地坐标,您可以方便地指定远程轨迹,比如飞机飞行轨迹地球上一个现实的模型。

  • 当指定每个路标的方向和速度信息,方向和速度的参考系是当地NED或ENU表示帧定义在当前路径轨迹。例如,N1- - - - - -E1- - - - - -D1帧图中所示的是当地NED参考系。

geoTrajectory参考系

在图中,

  • Ex,Ey,Ez是地球的三轴固地坐标系(ECEF),固定在地上。

  • (λ1,ϕ1,h1)和(λ2,ϕ2,h2)是大地坐标平面的两个锚点。

  • (N1,E1,D1)和(N2,E2,D2)是两个地方NED帧对应两个锚点轨迹。

  • Bx,By,Bz是身体的三轴平台框架,这是固定在平台上。

geoTrajectory飞行轨迹的示例

载荷飞行轨迹的飞行数据从洛杉矶到波士顿。数据包含航班信息包括飞行时间,为每个路标大地坐标,当然,和地面的速度。

负载flightData.mat

创建一个geoTrajectory基于飞行数据的对象。

planeTraj = geoTrajectory (timeOfArrival(经度纬度高度),“课程”课程,“水平”、速度);

查找路径点的笛卡尔坐标ECEF框架。

sampleTimes = 0:1000:3600 * 10;positionsCart = lookupPose (planeTraj sampleTimes,“ECEF”);

显示,使用轨迹helperGlobeView类,它接近地球球体。

观众= helperGlobeView;plot3 (positionsCart (: 1) positionsCart (:, 2), positionsCart (:, 3),“r”)

你可以进一步探索的轨迹查询其他输出轨迹。

kinematicTrajectory

与两个航点轨迹对象不同,kinematicTrajectory系统对象使用运动属性指定一个轨迹。认为轨迹的数值积分的姿势(位置和姿态)和线速度的平台,基于线性加速度和角加速度信息。指定的姿势和线速度与尊重选择,固定场景框架,而指定的线性加速度和角速度与受人尊敬的车身骨架的平台。

kinematicTrajectory例子无人机路径

创建一个kinematicTrajectory对象模拟无人机路径。指定轨迹的时间跨度为120秒。

traj = kinematicTrajectory (“SampleRate”,1“AngularVelocitySource”,“属性”);tStart = 0;tFinal = 120;tspan = tStart: tFinal;numSteps =长度(tspan);位置=南(3、numSteps);速度=南(3、numSteps);韦尔=南(1、numSteps);

形成一个正方形路径覆盖一个小区域,单独的无人机轨迹分为六部分:

  • 起飞,在z方向提升

  • 朝着积极的方向

  • 在y方向上的移动

  • 在负方向移动

  • 在y方向上的负移

  • 降在z方向和着陆

在每一部分中,无人机加速向一个方向,然后减慢在这个方向上具有相同加速度大小。因此,每个环节结束时,无人机的速度是零。

segSteps =地板(numSteps / 12);numSteps加速度= 0(3日);acc = 1;% z方向加速起飞和提升加速度(3、1:segSteps) = acc;加速度(segSteps + 1:2 * segSteps) = acc;%加速度沿着x轴正方向移动加速度(1、2 * segSteps + 1:3 * segSteps) = acc;加速度(1,3 * segSteps + 1:4 * segSteps) = acc;%加速度在y方向上的移动加速度(2、4 * segSteps + 1:5 * segSteps) = acc;加速度(2、5 * segSteps + 1:6 * segSteps) = acc;%加速度在负方向移动加速度(1,6 * segSteps + 1:7 * segSteps) = acc;加速度(1 7 * segSteps + 1:8 * segSteps) = acc;在y方向上的- %加速移动加速度(2 8 * segSteps + 1:9 * segSteps) = acc;加速度(2 9 * segSteps + 1:10 * segSteps) = acc;%下降在z方向和着陆加速度(10 * segSteps + 1:11 * segSteps) = acc;加速度(3,11 * segSteps + 1:结束)= acc;

模拟轨迹通过调用kinematicTrajectory对象与指定的加速度。

i = 1: numSteps[职位(:,我)~,速度(:,我)]= traj(加速度(:,我)');韦尔(i) =标准(速度(:,i));结束

使用可视化轨迹theaterPlot

%创建theaterPlot对象并创建轨迹和策划者%无人机平台。图tp = theaterPlot (“XLimits”(-30 130),“YLimits”(-30 130),“ZLimits”130年[-30]);tPlotter = trajectoryPlotter (tp,“DisplayName的”,“无人机轨迹”);pPlotter = platformPlotter (tp,“DisplayName的”,“无人机”,“MarkerFaceColor”,‘g’);%绘制轨迹。plotTrajectory (tPlotter,{职位'})视图(-43.18,56.49)%使用一个立方体代表无人机平台。dim =结构(“长度”10“宽度”5,“高度”3,“OriginOffset”,0 0 0);%动画无人机平台位置。i = 1: numSteps plotPlatform (pPlotter位置(:,我)”,弄暗,眼(3))暂停(0.01)结束

图包含一个坐标轴对象。坐标轴对象包含2线类型的对象。这些对象代表无人机轨迹,无人机。

显示无人机平台的速度大小。

图绘制(tspan韦尔)包含(“时间(s)”)ylabel (“速度(米/秒)”)标题(无人机的速度的大小)

图包含一个坐标轴对象。坐标轴对象与标题无人机速度包含一个类型的对象的大小。

kinematicTrajectory例子航天器轨迹

使用kinematicTrajetory指定一个圆形的航天器轨迹。轨道有这些元素:

  • 轨道半径( r )- - - 7000公里

  • 倾向( )- - - 60度

  • 升交点的参数( Ω )- - - 90度。升交点的方向是一致的 Y 方向。

  • 真正的异常( ν )- - - -90度

在图中, X - - - - - - Y - - - - - - Z 是地球惯性(ECI)框架,它有一个固定的空间位置和姿态。 x - - - - - - y - - - - - - z 宇宙飞船车身骨架,固定在飞船。 r v 航天器的初始位置和速度。

指定使用圆形轨道kinematicTrajectory,您需要提供初始位置、初始速度和航天器的初始取向对ECI框架。选择正确的异常( v = - 90年 ),飞船速度是一致的 Y 方向。

倾向= 60;%度μ= 3.986 e14灯头;%标准地球重力参数= 7000 e3半径;%米v =√μ/半径);%的速度initialPosition = [* cosd半径(倾向),0,半径*信德(倾向)”;initialVelocity = (0 v 0) ';

假设x方向上飞船车身骨架的径向方向,z是轨道平面的法线方向,和y方向上完成右手法则。使用指定的方向的假设车身骨架在最初的位置。

取向=四元数([0 0]的倾向,“eulerd”,“zyx股票”,“帧”);

表达的角速度和角加速度轨迹的车身骨架的平台。

ω= v /半径;angularVelocity =[0 0ω)';= v ^ 2 /半径;加速度= (- 0 0)';

设置一个轨道周期的仿真时间。仿真步骤指定为2秒。

tFinal = 2 *π/ω;dt = 2;sampleRate = 1 / dt;tspan = 0: dt: tFinal;numSteps =长度(tspan);

创建航天器轨迹。自从飞船保持不变的加速度和角速度对航天器车身骨架,它们指定为常数。沿着轨迹生成位置和姿态输出使用kinematicTrajectory对象。

traj = kinematicTrajectory (“SampleRate”sampleRate,“位置”initialPosition,“速度”initialVelocity,“定位”取向,“AngularVelocity”angularVelocity,“加速”、加速度、“AccelerationSource”,“属性”,“AngularVelocitySource”,“属性”);%生成位置和姿态输出。位置=南(3、numSteps);方向= 0 (numSteps 1“四元数”);i = 1: numSteps[职位(:,我),取向(i)) = traj ();结束

使用helperGlobeView类和theaterPlot的轨迹。

观众= helperGlobeView (0, 60 [0]);tp = theaterPlot (“父”甘氨胆酸,,“XLimits”,1.2 *(半径半径),“YLimits”,1.2 *(半径半径),“ZLimits”1.2 *(半径半径));tPlotter = trajectoryPlotter (tp,“线宽”2);pPlotter = platformPlotter (tp,“MarkerFaceColor”,“米”);传奇(gca),“关闭”)plotTrajectory (tPlotter{职位'})%用夸张的尺寸一个立方体代表宇宙飞船。dim =结构(“长度”,8 e5,“宽度”4 e5,“高度”2 e5,“OriginOffset”,0 0 0);i = 1: numSteps plotPlatform (pPlotter位置(:,我)”,弄暗,方向(我))%因为参考系ECI框架,地球旋转对它。旋转(观众,dt)结束

总结

在这个主题,您学习了如何使用三个轨迹对象来定制自己的轨迹基于可用的信息。此外,您了解了在应用上的根本差异。这个表强调这些轨迹对象的主要属性。

轨迹对象 位置输入 线速度的输入 取向 加速度和角速度输入 推荐距离跨度
waypointTrajectory 笛卡尔路径点表示在一个固定的框架(NED或ENU表示)

这些选项之一:

  • 自动生成速度平滑的轨迹,默认情况下

  • 指定的速度固定帧在每一个路标

  • 指定课程,地面速度和爬升率固定帧在每一个路标

这些选项之一:

  • 自动偏航默认情况下,自动的选择,和汽车银行的选择

  • 指定方向的固定框架

不能指定 从内部数十到数百公里
geoTrajectory 大地中转地点ECEF框架

这些选项之一:

  • 自动生成速度平滑的轨迹,默认情况下

  • 指定速度在当地框架为每个路标(NED或ENU表示)

  • 指定课程,地面速度、和爬在当地框架为每个路标(NED或ENU表示)

这些选项之一:

  • 自动偏航默认情况下,自动的选择,和汽车银行的选择

  • 指定方向在当地的框架

不能指定 从几百美元到几千公里
kinematicTrajectory 初始位置表达选择、固定框架 只在固定框架初始速度 只在固定框架初始取向 在平台中指定加速度和角速度的身体框架 无限距离跨度