网站界面设计尺寸规范自媒体平台有哪些
采用差分定位方式的短基线仅需要4个水听器即可实现定位,同时还不需要同步时钟,简化了系统设计,这是它的优点;但是,它的缺点也是显而易见的,其定位精度很低,且存在定位误差极大的“死点”。本文笔者将详细的分析利用四个水听器实现差分定位的原理及其误差分析。
定位原理
首先我们假设水听器阵阵形为长方形,阵中心为坐标原点,四个水听器及信标的分布如图1所示。
我们列出关于斜距r1、r2、r3、r4的方程,有:
我们将式(1)-(2)、(1)-(3)、(1)-(4)得到如下结果:
其中,,我们利用(5)+(7)=(6)来首先求得r。即:
整理一下可得:,然后通过(7)式可得
,通过(5)式可得
。至此相关的推导已经完成。
Matlab仿真
% SBL 差分定位仿真 假设信标在指定深度内二维平面运行
% 全局坐标系为北东地(XYZ)坐标系
close all;
clear all;
clc;%%
%参数设置
w = 0.01;
point_num = 10000; %样本点数
R = 10; %变速圆周运动半径
depth = 10; %ROV运行深度
a = 2; %SBL基阵参数
b = 2; %
t = (0:point_num-1)/point_num*pi/(2*w); % + pi/(2*w)xigam_SR = 0.0001; %斜距测量精度1500*0.1e-3/sqrt(24)
%%
%运动数据生成
Fait = 2*pi*(1-cos(w*t)); %航向角 2*pi*sin(w*t)
x = R*cos(Fait); %机器人全局运动坐标
y = R*sin(Fait);
z = depth*ones(1,point_num);d1 = sqrt((x-a/2).^2 + (y-b/2).^2 + (z-0).^2); %斜距1
d2 = sqrt((x-a/2).^2 + (y+b/2).^2 + (z-0).^2); %斜距2
d3 = sqrt((x+a/2).^2 + (y+b/2).^2 + (z-0).^2); %斜距3
d4 = sqrt((x+a/2).^2 + (y-b/2).^2 + (z-0).^2); %斜距4
tao2 = d1-d2; %斜距1-斜距2
tao3 = d1-d3; %斜距1-斜距3
tao4 = d1-d4; %斜距1-斜距4%根据实际的仪器精度添加高斯白噪声
tao2 = tao2 + xigam_SR*randn(1,point_num);
tao3 = tao3 + xigam_SR*randn(1,point_num);
tao4 = tao4 + xigam_SR*randn(1,point_num);%%
% SBL直接求解
r = (tao3.^2-tao2.^2-tao4.^2)./(2*(tao3-tao2-tao4));
xx = tao4/(2*a).*(tao4-2*r);
yy = tao2/(2*b).*(tao2-2*r);
zz = sqrt(r.^2-(xx-a/2).^2-(yy-a/2).^2);
%%
figure;
plot(x,y,'r');
hold on;
grid on;
plot(xx,yy,'b');
figure;
plot(d1,'r');
hold on;
grid on;
plot(r,'b');
该仿真条件是信标在水下做变速圆周运动,然后生成了信标距离四个水听器的斜距,水听器阵是一个边长为2米的方阵,然后计算斜距差并加入噪声作为实际的观察量。运行一下程序可得到如下结果:
由上图结果可以看到,落在坐标轴上的四个位置附近定位误差非常的大,其它的位置定位效果还可以。但是其总体的定位效果是远不如直接测量斜距时的效果的,这个相关的讨论可以查看笔者之前的博客水下机器人二维变速圆周运动的SBL定位EKF滤波仿真分析,里面有具体的案例仿真分析。