2022数模国赛B题无人机第一题第一小问的简单编程

这篇具有很好参考价值的文章主要介绍了2022数模国赛B题无人机第一题第一小问的简单编程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

2022年国赛B题是关于无人机定位的抽象模型,总体难度不大。接下来简单介绍一下第一题第一小问的程序实现,当时国赛仓促,写的比较简略,仅供参考。

背景介绍

无源定位

第一个关键词是无源定位,无源定位可以理解为需要通过计算才能求解出具体位置,位置不能直接测出。具备隐蔽性,一般不需要电磁波的发射。

无源定位有三种普遍的方法:交叉测向定位法,时差定位法和开普勒定位法,交叉测向法是通过多个基站接收信号,获得信号方位的角度,根据欧式几何来计算对应距离的一种方式,本题采用的方式与之类似。时差定位法和开普勒定位法,一个是根据信号传播的时差,一个是根据开普勒效应,发射信号和接收信号的物体具有相对速度时,接收到的信号的频率会发生变化。

交叉测向和纯方位定位

传统的交叉测向定位,是用两个基站接收运动物体的信号,接收到的信号是方位角,建立三角形,通过两个角,基站间的距离来计算基站和运动物体之间的距离。

本题中用到的纯方位定位,是被测无人机接收两架及两架以上基准无人机的信号,获得信号的角度差,通过位置分布关系和欧式几何计算距离。

问题重述

题目要求

2022数模国赛B题无人机第一题第一小问的简单编程

 问题重述

 已知无人机编队的相对位置(即距离),位置有偏差的无人机接收三个基准无人机信号夹角,试建立一个模型,输入角度和相对位置信息可以计算出距离,确定有偏差无人机的位置。

建模思路

误差范围

题干中(本文章未载入题干的图片)无人机飞行的相对位置保持不变,因此可以确定最大误差范围:

2022数模国赛B题无人机第一题第一小问的简单编程

 设半径是R,圆周上9架无人机均匀分布,角度为40°。可以计算出最大偏差半径为Rsin20°。

同时任意圆周无人机任意两点之间的弦长也可以计算:2Rsin(n20°),(n为间隔数)。

定位模型

如何通过角度来计算呢?因为相对位置保持不变,基准无人机编号已知,可以判断相对位置,根据相对位置关系来判断某信号是某无人机发射的。

可以设置一个数组,储存位置编号,输入基准无人机的编号和待测无人机的编号,可以返回出三架基准无人机的相对位置关系(左,中,右)。本文代码为了简单,直接固定了基准无人机,判断过程也直接给出。当然,稍微修改一下就可以通用了;

具体计算公式是用余弦定理给出来的。未知量是接收无人机和三架发射无人机之间的距离,x,y,z三个变量。已知量是三个角度alpha,beta,gama(对应任意两条信号的夹角),以及基准无人机之间的相对距离L1,L2,L3。

分别建立3个方程,对应的是3个三角形和余弦公式(接收无人机和两个圆周上的无人机,接收无人机和圆周上的一个无人机和圆心的无人机)

3个变量,3个方程,可以求出解。

编程思路

偏差位置

设置偏差位置,需要先建立坐标系,建立以圆心的极坐标系,可以表示出基准位置的坐标。同时相对于标准位置的偏差圆,半径设置为0-Rsin20°的随机值,相对于标准位置的角度随机,即可生成偏差位置的坐标。

相对位置信息

储存编号信息,输入3架基准无人机的编号和接收无人机的编号可以返回相对位置关系。

校准集和非校准集

这里可以玩的花一些,设置校准集和未校准集,随机从校准集里面选择两个作为圆周上基准的无人机,随机从未校准集中选取接收无人机。属于炫技操作,可以尝试一下,我没写。

定位求解距离

编写定位模型的函数,输入角度值,和相对位置关系,用符号变量syms建立方程组,用solve求解可行解。

筛选可行解

因为solve求解出的是所有的解析解,包含复数解和不满足题目要求的解,因此需要排除。

求解基准位置

定位嘛,终极目标是计算出基准位置距离自己的距离和方向,即确定基准位置和现在的位置。这个我没写,可以练练手,求解一下基准位置相对于圆心无人机信号的夹角,以及距离。

代码

废话不多说,代码来啦

主函数question1_1.m

clc;clear;
%基准位置的点坐标,为了便于计算,圆半径R假设为1
angle = 2*pi/9.*(0:8);R = 1;
xi = R.*cos(angle);yi = R.*sin(angle);
%相对位置保持不变,可以确定对于接收无人机的其他无人机的相对位置关系
queue = zeros(9);sign = [1:9,1:9];
for i = 1:9
    queue(i,:) = [sign(i+1:i+4),0,sign(i+5:i+8)];
end
%选取两个位置的无人机作为接收无人机
BaseSet = [1,2];NonBaseSet = 3:9;
fprintf('选择FY00,FY01,FY02作为基准发射无人机。\n');
fprintf('--------------------------------------- \n');
x0 = 0;y0 = 0;x1 = xi(1);y1 = yi(1);x2 = xi(2);y2 = yi(2);L = 2*R*sin(pi/9);
%对未校准的无人机设置随机偏差
%偏差半径
r = R*sin(pi/9);
%偏差坐标
% x = rand()*r*cos(rand()*2*pi)+xi(n);
% y = rand()*r*sin(rand()*2*pi)+yi(n);
%校准过程
for n = 3:9
    fprintf(['校准FY0',num2str(n),'无人机:\n']);
    xm = rand()*r*cos(rand()*2*pi)+xi(n);
    ym = rand()*r*sin(rand()*2*pi)+yi(n); 
    %判断相对位置关系
    queue1 = queue(n,:);n1 = find(queue1==1);n2 = find(queue1==2);
    if((n1<5)&&(n2<5))
        flag = [3,1,2];
    elseif((n1>5)&&(n2>5))
        flag = [1,2,3];
    elseif((n1<5)&&(n2>5))
        flag = [2,1,3];
    elseif((n1>5)&&(n2<5))
        flag = 0;
    end
    %计算角度
    [beta1,beta2,beta3] = Calangle(xm,ym,x0,y0,x1,y1,x2,y2);
    fprintf('beta1 = %f,beta2 = %f,beta3 = %f(角度制)\n', ...
        rad2deg(beta1),rad2deg(beta2),rad2deg(beta3));
    %计算与基准发射无人机的距离
    %x对应与FY0,y对应FY1,z对应FY2
    [x,y,Z] = resolve1(beta1,beta2,beta3,R,L,n);
    fprintf('x = %fR,y = %fR,z= %fR\n',x,y,Z);
    %计算接收无人机的极坐标
    theta = resolve2(flag,x,y,R);p = x;
    fprintf('theta = %f,p = %f(角度制)\n',rad2deg(theta),p);
    %计算准确率
    xx = p.*cos(theta);yy = p.*sin(theta);
    unaccurate = mean([abs((xx-xm)/xm),abs((yy-ym)/ym)]);
    fprintf(['准确率为: %.2f','%%','\n'],(1-unaccurate)*100);
    fprintf(['FY0',num2str(n),'无人机已校准。\n']);
    fprintf('--------------------------------------- \n');
end

生成夹角函数Calangle.m

function [beta1,beta2,beta3] = Calangle(xm,ym,x0,y0,x1,y1,x2,y2)
t1 = (y1-ym)/(x1-xm);t2 = (y2-ym)/(x2-xm);t3 = (ym-y0)/(xm-x0);
tan1 = abs((t1-t3)/(1+t1*t3));tan2 = abs((t2-t3)/(1+t2*t3));
tan3 = abs((t1-t2)/(1+t1*t2));
beta1 = atan(tan1);beta2 = atan(tan2);beta3 = atan(tan3);

 计算与发射无人机的距离resolve1.m

function [x,y,z] = resolve1(beta1,beta2,beta3,R,L,n)
if(n>5)
    l1 = 2*sin((10-n)*pi/9);
    if(n>6)
        l2 = 2*sin((11-n)*pi/9);
    else
        l2 = 2*sin((n-2)*pi/9);
    end
else
    l1 = 2*sin((n-1)*pi/9);
    l2 = 2*sin((n-2)*pi/9);
end
syms x y z
eqns = [2*x*y*cos(beta1) == x^2+y^2-R^2,2*z*x*cos(beta2) == x^2+z^2-R^2, ...
2*z*y*cos(beta3) == z^2+y^2-L^2];
vars = [x,y,z];assume([x,y,z]>0);
sol = solve(eqns,vars,'IgnoreAnalyticConstraints',true,'ReturnConditions',true);
x = round(double(vpa(sol.x)),6);y = round(double(vpa(sol.y)),6);
z = round(double(vpa(sol.z)),6);
x = real(x);y = real(y);z = real(z);
col = [find(x<R*(1-sin(pi/9)));find(x>R*(1+sin(pi/9)))];
x(col) = [];y(col) = [];z(col) = [];
col = [find(y<(l1-R*sin(pi/9)));find(y>(l1+R*sin(pi/9)))];
x(col) = [];y(col) = [];z(col) = [];
col = [find(z<(l2-R*sin(pi/9)));find(z>(l2+R*sin(pi/9)))];
x(col) = [];y(col) = [];z(col) = [];

计算接收无人机相对与圆心极坐标的函数resolve2.m

function theta = resolve2(flag,x,y,R)
if(flag(1)>flag(2))
    flag = -1;
else
    flag = 1;
end
cosm = round((x.^2+R.^2-y.^2),6)/round((2.*x*R),6);
theta = flag.*acos(cosm);

运行结果

选择FY00,FY01,FY02作为基准发射无人机。
--------------------------------------- 
校准FY03无人机:
beta1 = 54.551826,beta2 = 71.317809,beta3 = 16.765983(角度制)
x = 1.044028R,y = 1.131464R,z= 0.482215R
theta = 67.181254,p = 1.044028(角度制)
准确率为: 100.00%
FY03无人机已校准。
--------------------------------------- 
校准FY04无人机:
beta1 = 36.564478,beta2 = 58.744293,beta3 = 22.179815(角度制)
x = 0.898470R,y = 1.566338R,z= 1.106549R
theta = 111.075167,p = 0.898470(角度制)
准确率为: 100.00%
FY04无人机已校准。
--------------------------------------- 
校准FY05无人机:
beta1 = 16.586498,beta2 = 40.803525,beta3 = 24.217027(角度制)
x = 0.703476R,y = 1.653833R,z= 1.420575R
theta = 151.828740,p = 0.703476(角度制)
准确率为: 100.00%
FY05无人机已校准。
--------------------------------------- 
校准FY06无人机:
beta1 = 2.562204,beta2 = 14.979231,beta3 = 17.541435(角度制)
x = 1.272246R,y = 2.269355R,z= 2.173401R
theta = -174.176871,p = 1.272246(角度制)
准确率为: 100.00%
FY06无人机已校准。
--------------------------------------- 
校准FY07无人机:
beta1 = 33.918911,beta2 = 14.002529,beta3 = 19.916382(角度制)
x = 1.006883R,y = 1.662772R,z= 1.946832R
theta = -111.896531,p = 1.006883(角度制)
准确率为: 100.00%
FY07无人机已校准。
--------------------------------------- 
校准FY08无人机:
beta1 = 48.476312,beta2 = 31.689534,beta3 = 16.786779(角度制)
x = 1.169586R,y = 1.258303R,z= 1.784202R
theta = -70.401922,p = 1.169586(角度制)
准确率为: 100.00%
FY08无人机已校准。
--------------------------------------- 
校准FY09无人机:
beta1 = 82.843083,beta2 = 57.542577,beta3 = 25.300506(角度制)
x = 0.915448R,y = 0.532339R,z= 1.126376R
theta = -31.883348,p = 0.915448(角度制)
准确率为: 100.00%
FY09无人机已校准。
---------------------------------------

B题其他问的思路浅析 

还记得去年第一次了解建模的时候,从网络上搜索相关国赛思路太难了,基本上搜不出来。所以,来年了解数模的学弟学妹们或许会如同我一开始的迷茫,因此这里给出其他题目的思路。助力一下~

第一题第二问

第一问发射无人机都在基准位置,且编号已知,即相对关系已知;第二问的话,发射无人机的编号未知,所以涉及到怎样判断圆心无人机和圆周无人机相对位置关系的问题。(核心)

怎么判断,思路可太多了~可以先基准无人机之间定位,确定基准无人机之间的相对位置关系;或者用接收无人机和基准无人机定位,建立三角形求出唯一解。

确定需要几个发射无人机,可以确定相对位置,求出唯一解。

第一题第三问

第三问,所有的发射无人机位置都不基准,编号未规定。(除了圆心的无人机和圆周的一架无人机)

可以用暴力破解的方法,用不基准的无人机当做基准来依次给其他无人机校准,校准之后的无人机再对其他无人机校准...存在随机性,主要是吸收态:一旦某一个无人机基准了,就可以把其他的都校准,同时所有的无人机都处于基准位置,就不会调整了。

也可以用别的思路。比如说,先用已确定的两架无人机对一个无人机进行校准,然后再依次校准。

第二题

锥形等距编队的定位方式。首先第一题的编队位置不会出现三点共线的问题,锥形编队是存在三点共线的,所以只能讨论不共线的定位模型。

用中心的三角形3的顶点作为基准无人机,来校准最近的非共线的顶点,就又构造了3各三角形,依次校准,需要6次,而且定位模型都一样。

结束

数学建模并不是很难,分析问题,建立模型,编写程序这些才是重要的能力,希望把数学建模当做是检验自己能力的测试,而不是定向研究套路取得高分的考试。最后,希望大家多了解了解看似枯燥其实特别精彩的数学和编程。瑞思拜~文章来源地址https://www.toymoban.com/news/detail-460144.html

到了这里,关于2022数模国赛B题无人机第一题第一小问的简单编程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 反无人机系统技术分析,无人机反制技术理论基础,无人机技术详解

    近年来,经过大疆、parrot、3d robotics等公司不断的努力,具有强大功能的消费级无人机价格不断降低,操作简便性不断提高,无人机正快速地从尖端的军用设备转入大众市场,成为普通民众手中的玩具。 然而,随着消费级无人机市场的快速增长,功能越来越先进的新式无人机

    2024年02月19日
    浏览(50)
  • 无人机数据链技术,无人机数据链路系统技术详解,无人机数传技术

    早期的无人机更多的为军事应用服务,如军事任务侦查等,随着技术和社会的发展,工业级无人机和民用无人机得到快速的发展,工业级无人机用于农业植保、地理测绘、电力巡检、救灾援助等;民用无人机用于航拍、物流等等领域。 无人机数据链 数据链系统是飞行器与地

    2024年02月20日
    浏览(41)
  • 无人机编程实战第1讲——无人机简介

    目录 前言 一、飞控是什么? 二、扫盲行动!!! 1.微控制器 2.传感器 3.处理? 4.无人机飞行姿态 总结         随着开源无人机飞行控制器的不断发展,越来越多优秀的代码与算法不断涌现,无人机领域的技术不断趋于成熟,也使得无人机领域的门槛一再降低,现在国内工

    2024年02月11日
    浏览(39)
  • 无人机巡检技术要点解读,无人机巡检方案实现

    随着技术的不断发展,无人机巡检已经成为一种新兴的技术,它为巡检提供了更加高效、安全且可持续的解决方案。无人机巡检源于人们对更高效、安全的巡检方式的需求,源自行业对于巡检数据的采集和传输有了更高的要求,以及传统巡检从业人员渴望更安全的操作环境。

    2024年02月14日
    浏览(46)
  • 无人机概述及系统组成,无人机系统的构成

    无人机的定义  无人驾驶航空器,是一架由遥控站管理(包括远程操纵或自主飞行)的航空器,也称遥控驾驶航空器,以下简称无人机。  无人机系统的定义 无人机系统,也称无人驾驶航空器系统,是指一架无人机、相关的遥控站、所需的指令与控制数据链路以及批准的型号

    2024年02月21日
    浏览(41)
  • (无人机方向)ros小白之键盘控制无人机(终端方式)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ubuntu 18.04 pycharm ros melodic 做一个在终端中键盘输入指令,控制飞机起飞以及进入offbaord File-Settings-Project Interpreter-右边小齿轮Show All-选中正在使用的python 点击右边最下面的图标,打开Interpreter Path 添加/

    2024年02月15日
    浏览(39)
  • 无人机快递(物流)技术方案,无人机快递(物流)基础知识

    无人机快递技术是一种利用无人机进行快递配送的先进技术。通过利用无人机,快递企业能够在偏远地区或难以通行的地区提供配送服务,同时提高配送效率并降低人力成本。 无人机基本情况 无人驾驶飞机简称“无人机”,是利用无线电遥控设备和自备的程序控制装置操纵

    2024年02月22日
    浏览(50)
  • 无人机基础知识:多旋翼无人机各模式控制框图

    无人机(Unmanned Aerial Vehicle),指的是一种由动力驱动的、无线遥控或自主飞行、机上无人驾驶并可重复使用的飞行器,飞机通过机载的计算机系统自动对飞行的平衡进行有效的控制,并通过预先设定或飞机自动生成的复杂航线进行飞行,并在飞行过程中自动执行相关任务和

    2023年04月09日
    浏览(114)
  • 力扣经典150题第一题:合并两个有序数组

    合并两个有序数组问题详解与解决方法 1. 介绍 在编程面试中,合并两个有序数组是一个经典的问题。它要求将两个有序数组合并为一个新的有序数组。本篇博客将深入讨论这个问题,并提供解决方法。 2. 问题描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两

    2024年04月23日
    浏览(41)
  • 无人机综合管控平台建设构想,无人机管控系统项目建议方案

    一、方案简介 目前,国内外政府部门都在探索有效的无人机管控方式,这个领域会有巨大的社会效益和经济效益。本方案的主要目标是在不影响无人机生产企业销售和无人机用户正常使用的前提下,采用安全高效的方式,把无人机的飞行情况严格监控起来,准确的收集无人机

    2024年02月21日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包