本项目旨在通过MATLAB平台实现航位推算(Dead-Reckoning)算法,为位置估算提供一种无需依赖外部信号的自主导航方法。
任务要求重新实现功能。速度条目需以米每秒(m/s)的形式给出而非节制单位。因此,在确定DR点(xi±dxi, yi±dyi)的变化量di后,需要计算每个DR点的比例因子fi来反映位置变化的大小。
通过使用缩放系数,可以利用IconScale对wmmarker使用的图标进行调整,以图形化的方式展示DR变化的影响。这会导致一系列可能的路径:最佳情况下的路径与正常的drecon路径重合;最坏情况下,则是到达一个偏离目标终点最大的点,即火车站。需要计算出这种最糟糕情形下偏移量的具体数值(单位为米)。
修改后的Drecon工作原理如下:
1. 首先将速度条目从节制单位转换成m/s;
2. 然后确定每个DR点的变化di,并根据变化大小计算比例因子fi;
3. 利用缩放系数调整图标,直观展示位置变动的影响;
4. 最终生成一系列可能路径并评估最坏情况下的偏移量。
以下是修改后的Drecon部分源代码示例:
```python
def convert_speed_to_mps(speed_in_knots):
# 将速度从节转换为米每秒
return speed_in_knots * 0.5144
def calculate_dr_change(dr_points, original_speed):
for point in dr_points:
di = calculate_di(point)
fi = compute_factor(original_speed, convert_speed_to_mps(di))
scale_icon(fi)
def main():
# 假设dr_points为DR点列表,original_speed为原始速度(节)
dr_points = [(x1,y1), (x2,y2)]
original_speed_in_knots = 30
calculate_dr_change(dr_points, original_speed_in_knots)
if __name__ == __main__:
main()
```
以上代码示例说明了如何将速度单位从节转换为m/s,计算每个DR点的变化量以及相应的比例因子,并利用这些信息调整图标大小以反映位置变化的影响。