# cvmeasjac
匀速运动测量函数的雅可比
函数库: TyRadar
# 语法
measurementjac = cvmeasjac(state)
measurementjac = cvmeasjac(state, frame)
measurementjac = cvmeasjac(state, frame, sensorpos)
measurementjac = cvmeasjac(state, frame, sensorpos, sensorvel)
measurementjac = cvmeasjac(state, frame, sensorpos, sensorvel, laxes)
measurementjac = cvmeasjac(state, measurementParameters)
# 说明
measurementjac = cvmeasjac(state) 返回直角坐标系中等速卡尔曼滤波器运动模型的测量雅可比。state 指定跟踪筛选器的当前状态。示例
measurementjac = cvmeasjac(state, frame) 还指定了测量坐标系,frame。示例
measurementjac = cvmeasjac(state, frame, sensorpos) 还指定了传感器位置 sensorpos。示例
measurementjac = cvmeasjac(state, frame, sensorpos, sensorvel) 还指定了传感器速度 sensorvel。
measurementjac = cvmeasjac(state, frame, sensorpos, sensorvel, laxes) 还指定了本地传感器轴的方 laxes。
measurementjac = cvmeasjac(state, measurementParameters) 指定测量参数 measurementParameters。示例
# 示例
直角坐标系下匀速物体的雅可比测量矩阵
定义物体在二维匀速运动中的状态。状态是每个空间维度上的位置和速度。在矩形坐标中构建测量雅各布。
using TyRadar
state = [1; 10; 2; 20]
jacobian = cvmeasjac(state)
jacobian = 3×4 Matrix{Float64}:
1.0 0.0 0.0 0.0
0.0 0.0 1.0 0.0
0.0 0.0 0.0 0.0
球坐标系下匀速物体的雅可比测量矩阵
定义物体在二维匀速运动中的状态。状态是每个维度上的位置和速度。计算与球面坐标相关的测量雅各布。
using TyRadar
state = [1; 10; 2; 20]
measurementjac = cvmeasjac(state, "spherical")
measurementjac = 4×4 Matrix{Float64}:
-22.9183 0.0 11.4592 0.0
0.0 0.0 0.0 0.0
0.447214 0.0 0.894427 0.0
7.10543e-16 0.447214 1.42109e-15 0.894427
转移球坐标系下的匀速物体的测量雅可比矩阵
定义物体在二维匀速运动中的状态。状态是每个空间维度上的位置和速度。计算以 (5; -20; 0) m 为中心的球面坐标的测量雅各布。
using TyRadar
state = [1; 10; 2; 20]
sensorpos = [5; -20; 0]
measurementjac = cvmeasjac(state, "spherical", sensorpos)
measurementjac = 4×4 Matrix{Float64}:
-2.52101 0.0 -0.458366 0.0
0.0 0.0 0.0 0.0
-0.178885 0.0 0.98387 0.0
0.590322 -0.178885 0.107331 0.98387
利用测量参数创建匀速物体的雅可比测量矩阵
定义物体在二维匀速运动中的状态。该状态包括每个空间维度上的位置和速度。测量值是相对于位于 (20; 40; 0) m 处的框架的球面坐标。
using TyRadar
using TyBase: eye
state2d = [1; 10; 2; 20]
sensorpos = [20, 40, 0]
frame = "spherical"
sensorvel = [0; 5; 0]
laxes = eye(3)
measurementjac = cvmeasjac(state2d, frame, sensorpos, sensorvel, laxes)
measurementjac = 4×4 Matrix{Float64}:
1.20623 0.0 -0.603113 0.0
0.0 0.0 0.0 0.0
-0.447214 0.0 -0.894427 0.0
0.0470751 -0.447214 -0.0235376 -0.894427
将测量参数放入一个结构中,并使用替代语法。
measparm = MeasurementParameters(;
Frame=frame, OriginPosition=sensorpos, OriginVelocity=sensorvel, Orientation=laxes
)
measurementjac = cvmeasjac(state2d, measparm)
measurementjac = 4×4 Matrix{Float64}:
1.20623 0.0 -0.603113 0.0
0.0 0.0 0.0 0.0
-0.447214 0.0 -0.894427 0.0
0.0470751 -0.447214 -0.0235376 -0.894427
# 输入参数
state - 卡尔曼滤波器状态向量实值 2N 元素向量
卡尔曼滤波器的匀速运动状态向量,指定为实值的 2N 元素列向量,其中 N 是运动的空间自由度数。状态应为笛卡尔状态。对于每个空间运动自由度,状态向量的形式如表所示。
| 空间维度 | 状态矢量结构 |
|---|---|
| 1-D | [x; vx] |
| 2-D | [x; vx; y; vy] |
| 3-D | [x; vx; y; vy; z; vz] |
例如,x 代表 x 坐标,vx 代表 x 方向的速度。如果运动模型是一维的,则沿 y 轴和 z 轴的数值假定为零。如果运动模型为 2-D,则沿 z 轴的值假定为零。位置坐标单位为 m ,速度坐标单位为 m/s。
示例: [5; .1; 0; -.2; -3; .05]
数据类型: Float64
frame - 测量输出 frame"rectangular"(默认) | "spherical"
测量输出 frame,指定为 "rectangular" 或 "spherical"。当 frame 为 "rectangular" 时,测量结果由 x、y 和 z 笛卡尔坐标组成。指定为 "spherical" 时,测量结果由方位角、仰角、测距和测距率组成。
数据类型: String
sensorpos - 传感器位置[0;0;0](默认) | 实值 3 × 1 列向量
传感器相对于导航 frame 的位置,指定为实值 3 × 1 列向量。单位为 m 。
数据类型: Float64
sensorvel - 传感器速度[0;0;0](默认) | 实值 3 × 1 列向量
传感器相对于导航 frame 的速度,指定为实值 3 × 1 列向量。单位为 m/s。
数据类型: Float64
laxes - 本地传感器坐标轴[1,0,0;0,1,0;0,0,1](默认) | 3 × 3 正交矩阵
本地传感器坐标轴,指定为 3 × 3 的正交矩阵。每一列分别指定本地 x 轴、y 轴和 z 轴相对于导航 frame 的方向。也就是说,该矩阵是从全局 frame 到传感器 frame 的旋转矩阵。
数据类型: Float64
measurementParameters - 测量参数structure | 结构数组
以结构或结构数组形式指定的测量参数。结构的字段包括:
| 字段 | 说明 | 示例 |
|---|---|---|
| Frame | 用于报告测量结果的 frame,指定为其中一个值:
| "spherical" |
| OriginPosition | frame 原点相对于父 frame 的位置偏移,以 [x y z] 实值向量形式指定。 | [0 0 0] |
| OriginVelocity | frame 原点相对于父 frame 的速度偏移,以 [vx vy vz] 实值向量形式指定。 | [0 0 0] |
| Orientation | frame 旋转矩阵,指定为 3 × 3 实值正交矩阵。 | [1 0 0; 0 1 0; 0 0 1] |
| HasAzimuth | 逻辑标量,表示测量是否包含方位角。 当 frame 字段为 "Rectangular" 时,此字段无关。 | 1 |
| HasElevation | 逻辑标量,表示测量是否包含仰角信息。对于在矩形 frame 中报告的测量值,如果 HasElevation 为 false,则报告的测量值假定仰角为 0 度。 | 1 |
| HasRange | 表示测量中是否包含量程的逻辑标量。 当 frame 为 "Rectangular" 时,此字段无关。 | 1 |
| HasVelocity | 逻辑标量,表示报告的检测是否包含速度测量。对于在矩形 frame 中报告的测量值,如果 HasVelocity 为假,则测量值以 [x y z] 的形式报告。如果 HasVelocity 为 true,则以 [x y z vx vy vz] 的形式报告测量结果。对于在球形 frame 中报告的测量结果,如果 HasVelocity 为 true,则测量结果包含测距速率信息。 | 1 |
如果只想执行一个坐标变换,例如从主体 frame 到传感器 frame 的变换,则只需指定一个测量参数结构。如果要执行多个坐标变换,则需要指定一个测量参数结构阵列。
数据类型: struct
# 输出参数
measurementjac - 度量雅可比实值 3 × N 矩阵 | 实值 4 × N 矩阵
测量雅可比矩阵,指定为实数 3 × N 或 4 × N 矩阵。N 是状态向量的维数。第一个维度和意义取决于 frame 参数的值。
| frame | 测量雅可比 |
|---|---|
| "rectangular" | 测量值 [x; y; z] 相对于状态向量的雅可比。测量矢量是相对于局部坐标系的。坐标单位为 m 。 |
| "spherical" | 测量向量 [az; el; r; rr] 相对于状态向量的雅可比。测量矢量分量指定对象相对于本地传感器坐标系的方位角、仰角、范围和测距率。角度单位是度。量程单位为 m ,量程速率单位为 m/s。 |