kinematicTrajectory
描述
的kinematicTrajectory
系统对象使用指定的加速度和角速度™生成轨迹。
从利率生成轨迹:
创建
kinematicTrajectory
对象并设置其属性。调用对象的参数,就好像它是一个函数。
了解更多关于系统对象是如何工作的,看到的系统对象是什么?
创建
属性
如果一个属性可调在任何时候,你可以改变它的值。
SampleRate
- - - - - -采样率的轨迹(赫兹)
One hundred.
(默认)|积极的标量
采样率的轨迹在赫兹,指定为一个积极的标量。
可调:是的
数据类型:单
|双
位置
- - - - - -位置在当地导航坐标系(m)
(0 0 0)
(默认)|转换行向量
在当地导航坐标系位置状态米,指定为一个三元素行向量。
可调:是的
数据类型:单
|双
速度
- - - - - -速度在当地导航坐标系(米/秒)
(0 0 0)
(默认)|转换行向量
速度状态在当地导航坐标系在m / s,指定为一个三元素行向量。
可调:是的
数据类型:单
|双
取向
- - - - - -在当地导航坐标系取向状态
四元数(1,0,0,0)
(默认)|标量四元数|3×3的矩阵
取向状态在当地导航坐标系,指定为一个标量四元数矩阵或3 x3的真实。方向是一个从本地导航坐标系旋转坐标系到当前的车身骨架。
可调:是的
数据类型:四元数
|单
|双
AccelerationSource
- - - - - -加速度的来源国家
“输入”
(默认)|“属性”
来源的加速状态,指定为“输入”
或“属性”
。
“输入”
——指定加速度状态运动轨迹作为输入参数对象“属性”
——通过设置指定加速状态加速度
财产
可调:没有
数据类型:字符
|字符串
加速度
- - - - - -加速度状态(m / s2)
(0 0 0)
(默认)|三元素行向量
AngularVelocitySource
- - - - - -角速度的状态
“输入”
(默认)|“属性”
角速度的状态,指定为“输入”
或“属性”
。
“输入”
——指定角速度运动轨迹作为输入参数状态对象“属性”
——国家通过设置指定角速度AngularVelocity
财产
可调:没有
数据类型:字符
|字符串
AngularVelocity
- - - - - -角速度状态(rad / s)
(0 0 0)
(默认)|三元素行向量
SamplesPerFrame
- - - - - -每个输出的样本数量
1(默认)|正整数
每个输出的样本数量,指定为一个正整数。
可调:没有
依赖关系
要启用这个特性,设置AngularVelocitySource来“属性”
和AccelerationSource来“属性”
。
数据类型:单
|双
使用
语法
描述
(
输出轨迹的状态,然后更新基于轨迹状态位置
,取向
,速度
,加速度
,angularVelocity
)=轨迹(bodyAcceleration
,bodyAngularVelocity
)bodyAcceleration
和bodyAngularVelocity
。
这个语法只是有效的如果AngularVelocitySource
被设置为“输入”
和AccelerationSource
被设置为“输入”
。
(
输出轨迹的状态,然后更新基于轨迹状态位置
,取向
,速度
,加速度
,angularVelocity
)=轨迹(bodyAngularVelocity
)bodyAngularVelocity
。
这个语法只是有效的如果AngularVelocitySource
被设置为“输入”
和AccelerationSource
被设置为“属性”
。
(
输出轨迹的状态,然后更新基于轨迹状态位置
,取向
,速度
,加速度
,angularVelocity
)=轨迹(bodyAcceleration
)bodyAcceleration
。
这个语法只是有效的如果AngularVelocitySource
被设置为“属性”
和AccelerationSource
被设置为“输入”
。
(
输出轨迹状态轨迹,然后更新状态。位置
,取向
,速度
,加速度
,angularVelocity
]=轨迹()
这个语法只是有效的如果AngularVelocitySource
被设置为“属性”
和AccelerationSource
被设置为“属性”
。
输入参数
bodyAcceleration
- - - - - -加速身体坐标系统(m / s2)
N3矩阵
加速体内坐标系在米每秒的平方,指定为一个N3矩阵。
N在当前帧的样本数量。
bodyAngularVelocity
- - - - - -角速度的身体坐标系统(rad / s)
N3矩阵
角速度在弧度/秒身体坐标系统,指定为一个N3矩阵。
N在当前帧的样本数量。
输出参数
位置
位置在当地导航坐标系(米)
N3矩阵
位置在当地导航坐标系米,作为一个返回N3矩阵。
N在当前帧的样本数量。
数据类型:单
|双
取向
——在当地导航坐标系方向
N元四元数列向量| 3-by-3-by -N真正的数组
定位在当地导航坐标系,作为一个返回N1四元数或3-by-3-by -列向量N真正的数组。每个四元数或3 x3的旋转矩阵是一个从本地导航坐标系旋转坐标系到当前坐标系统。
N在当前帧的样本数量。
数据类型:单
|双
速度
——速度在当地导航坐标系(米/秒)
N3矩阵
速度在当地导航坐标系在米每秒,作为一个返回N3矩阵。
N在当前帧的样本数量。
数据类型:单
|双
加速度
——加速本地导航坐标系(m / s2)
N3矩阵
加速度在当地导航坐标系在米每秒的平方,作为一个返回N3矩阵。
N在当前帧的样本数量。
数据类型:单
|双
angularVelocity
——角速度在当地导航坐标系(rad / s)
N3矩阵
角速度在当地导航坐标系在弧度/秒,作为一个返回N3矩阵。
N在当前帧的样本数量。
数据类型:单
|双
例子
创建默认的kinematicTrajectory
创建一个默认的kinematicTrajectory
系统对象™和探索输入之间的关系,属性和生成的轨迹。
轨迹= kinematicTrajectory
轨迹= kinematicTrajectory属性:SampleRate: 100位置:[0 0 0]取向:[1 x1四元数]速度:[0 0 0]AccelerationSource:“输入”AngularVelocitySource:“输入”
默认情况下,kinematicTrajectory
对象的初始位置(0 0 0)和(0 0 0)的初始速度。方向是由一个四元数描述的(1 + 0 + 0 j + 0 k)。
的kinematicTrajectory
对象保持可见和可写状态的属性位置
,速度
,取向
。当你调用的对象,国家输出,然后更新。
例如,调用对象通过指定一个加速度和角速度相对于身体坐标系统。
bodyAcceleration = (5 5 0);bodyAngularVelocity = [0, 0, 1];(位置,方向,速度,加速度,angularVelocity] =轨迹(bodyAcceleration bodyAngularVelocity)
位置=1×30 0 0
取向=四元数1 + 0 + 0 j + 0 k
速度=1×30 0 0
加速度=1×35 5 0
angularVelocity =1×30 0 1
的位置、方向和速度的输出轨迹
对象对应于状态报告的属性之前调用对象。的轨迹
状态更新后被调用,可观测的属性:
轨迹
轨迹= kinematicTrajectory属性:SampleRate: 100位置:[2.5000 e-04 2.5000 e-04 0]取向:[1 x1四元数]速度:0.0500 - 0.0500 [0]AccelerationSource:“输入”AngularVelocitySource:“输入”
的加速度
和angularVelocity
的输出轨迹
对象对应于bodyAcceleration
和bodyAngularVelocity
返回,除非他们在导航坐标系。使用取向
输出旋转加速度
和angularVelocity
对身体坐标系统并验证它们大约相当于bodyAcceleration
和bodyAngularVelocity
。
rotatedAcceleration = rotatepoint(定位、加速度)
rotatedAcceleration =1×35 5 0
angularVelocity rotatedAngularVelocity = rotatepoint(方向)
rotatedAngularVelocity =1×30 0 1
的kinematicTrajectory
系统对象™使您能够通过属性修改轨迹状态。将位置设置为(0,0,0),然后调用指定的加速度和角速度的对象身体坐标系统。为便于说明,克隆轨迹
对象之前修改位置
财产。调用对象和观察到不同的位置。
trajectoryClone =克隆(轨迹);轨迹。位置= [0,0,0]; position = trajectory(bodyAcceleration,bodyAngularVelocity)
位置=1×30 0 0
clonePosition = trajectoryClone (bodyAcceleration bodyAngularVelocity)
clonePosition =1×3103×0.2500 - 0.2500 0
创建摆动轨迹
这个例子展示了如何创建一个轨迹沿着北轴振动的地方NED坐标系统使用kinematicTrajectory
系统对象™。
创建一个默认的kinematicTrajectory
对象。默认的初始取向与当地NED坐标系统。
traj = kinematicTrajectory
traj = kinematicTrajectory属性:SampleRate: 100位置:[0 0 0]取向:[1 x1四元数]速度:[0 0 0]AccelerationSource:“输入”AngularVelocitySource:“输入”
定义一个轨道组成的10秒的持续时间在东轴旋转(沥青)和一个振荡当地NED沿着北轴坐标系统。使用默认的kinematicTrajectory
采样率。
fs = traj.SampleRate;时间= 10;numSamples = * fs持续时间;cyclesPerSecond = 1;samplesPerCycle = fs / cyclesPerSecond;numCycles =装天花板(numSamples / samplesPerCycle);maxAccel = 20;三角= [linspace (1 / fs-maxAccel maxAccel, samplesPerCycle / 2),…linspace (-maxAccel maxAccel - (1 / fs), samplesPerCycle / 2)];振荡= repmat(三角形numCycles 1);振荡=振荡(1:numSamples);accNED = [0 (numSamples, 2),振动);angVelNED = 0 (numSamples, 3);angVelNED(:, 2) = 2 *π;
情节加速度控制信号。
timeVector = 0:1 / fs: (duration-1 / fs);图(1)情节(timeVector振荡)包含(“时间(s)”)ylabel (“加速度(m / s) ^ 2”)标题(NED坐标系的加速度在当地的)
在一个循环中生成轨迹连续取样。的kinematicTrajectory
系统对象假设加速度和角速度输入在本地传感器坐标系。旋转加速度和角速度控制信号从NED坐标系到传感器的身体坐标系统使用rotateframe
和取向
状态。更新一个3 d位置在每个时间的情节。添加暂停
模拟的实时处理。循环完成后,随着时间的推移图位置。旋转accNED
和angVelNED
身体控制信号向当地坐标系统保证了运动保持沿轴。
图(2)plotHandle = plot3 (traj.Position (1) traj.Position (2), traj.Position (3),“波”);网格在包含(“北”)ylabel (“东”)zlabel (“下来”)轴([1 1 1 1 0 1.5])在q = 1 (numSamples 1“四元数”);为2 = 1:numSamples accBody = rotateframe (traj.Orientation, accNED (ii):));angVelBody = rotateframe (traj.Orientation angVelNED (ii):));(pos (ii):), q (ii),或者,ac) = traj (accBody angVelBody);集(plotHandle,“XData”pos (2, 1),“YData”pos (2, 2),“ZData”、pos(2, 3))暂停(1 / fs)结束图(3)情节(timeVector pos (: 1),“波”,…timeVector, pos (:, 2),“r”。,…timeVector, pos (:, 3),“g”。)包含(“时间(s)”)ylabel (“位置(m)”)标题(NED的位置随着时间的)传说(“北”,“东”,“下来”)
记录方向转化为欧拉角和阴谋。虽然定位平台的改变随着时间的推移,加速度总是沿着北轴。
图(4)eulerAngles = eulerd (q,“ZYX股票”,“帧”);情节(timeVector eulerAngles (: 1),“波”,…timeVector eulerAngles (:, 2),“r”。,…timeVector eulerAngles (: 3)“g”。)轴([0,持续时间,-180180])传说(“偏航”,“节”,“滚”)包含(“时间(s)”)ylabel (的旋转(度))标题(“定位”)
生成一个线圈轨迹
这个例子展示了如何生成一个线圈使用轨迹kinematicTrajectory
系统对象™。
创建一个圆形轨迹为一个1000秒的持续时间和采样率10赫兹。圆的半径设置为5000米和80米每秒的速度。爬升率设置为每秒100米,距15度。指定初始取向作为指向运动的方向。
时间= 1000;%秒fs = 10;%赫兹N = * fs持续时间;%的样本数量半径= 5000;%米速度= 80;%米每秒climbRate = 50;%米每秒initialYaw = 90;%度距= 15;%度initPos =(半径,0,0);initVel =[0,速度,climbRate];initOrientation =四元数([initialYaw球场0],“eulerd”,“zyx股票”,“帧”);轨迹= kinematicTrajectory (“SampleRate”fs,…“速度”initVel,…“位置”initPos,…“定位”,initOrientation);
指定一个恒定的加速度和角速度的身体坐标系统。旋转身体占框架。
accBody = 0 (N, 3);accBody(:, 2) = ^ 2 /速度半径;accBody (: 3) = 0.2;angVelBody = 0 (N, 3);angVelBody(:, 3) =速度/半径;pitchRotation =四元数((0,0),“eulerd”,“zyx股票”,“帧”);angVelBody = rotateframe (pitchRotation angVelBody);accBody = rotateframe (pitchRotation accBody);
调用轨迹
与指定的加速度和角速度的身体坐标系统。情节的位置、方向和速度。
(位置、方向、速度)=轨迹(accBody angVelBody);eulerAngles = eulerd(取向,“ZYX股票”,“帧”);速度=√和速度。^ 2,2));timeVector = (0: (n - 1) / fs;图(1)plot3(位置(:1),位置(:,2),位置(:,3))包含(“北(m)”)ylabel (“东(m)”)zlabel (“下来(m)”)标题(“位置”网格)在
图(2)情节(timeVector eulerAngles (: 1),…timeVector eulerAngles (:, 2),…timeVector eulerAngles(: 3)轴([0,持续时间,-180180])传奇(“偏航(旋转)”,“音高(旋转约东)”,旋转辊(北)”)包含(“时间(s)”)ylabel (的旋转(度))标题(“定位”)
图(3)情节(timeVector、速度)包含(“时间(s)”)ylabel (“速度(米/秒)”)标题(“速度”)
没有输入生成螺旋圆轨迹
定义一个恒定的角速度和加速度恒定描述螺旋圆轨迹。
Fs = 100;r = 10;速度= 2.5;initialYaw = 90;initPos = (r 0 0);initVel = 0][0速度;initOrient =四元数([initialYaw 0 0],“eulerd”,“ZYX股票”,“帧”);accBody =(0.01 0速度^ 2 / r);angVelBody =[0 0速度/ r];
创建一个运动轨迹对象。
traj = kinematicTrajectory (“SampleRate”Fs,…“位置”initPos,…“速度”initVel,…“定位”initOrient,…“AccelerationSource”,“属性”,…“加速”accBody,…“AngularVelocitySource”,“属性”,…“AngularVelocity”,angVelBody);
在一个循环中调用运动轨迹对象和日志输出的位置。随着时间的推移图的位置。
N = 10000;pos = 0 (N, 3);为i = 1: N pos(我:)= traj ();结束plot3 (pos (: 1), pos (:, 2), pos(:, 3)标题(“位置”)包含(“X (m)”)ylabel (“Y (m)”)zlabel (“Z (m)”)
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
版本历史
介绍了R2021a
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。