日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于模型预测人工势场的船舶运动规划方法,考虑复杂遭遇场景下的COLREG(Matlab代码实现)

發(fā)布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于模型预测人工势场的船舶运动规划方法,考虑复杂遭遇场景下的COLREG(Matlab代码实现) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

💥💥💞💞歡迎來到本博客????💥💥

🏆博主優(yōu)勢:🌞🌞🌞博客內(nèi)容盡量做到思維縝密,邏輯清晰,為了方便讀者。

??座右銘:行百里者,半于九十。

目錄

💥1 概述

📚2 運行結(jié)果

🎉3 參考文獻

🌈4 Matlab代碼實現(xiàn)

💥1 概述

船舶運動規(guī)劃是海上自主水面艦艇(MASS)自主導(dǎo)航的核心問題。該文提出一種考慮避碰規(guī)則的復(fù)雜遭遇場景模型預(yù)測人工勢場(MPAPF)運動規(guī)劃方法。建立了一個新的船舶域,其中設(shè)計了一個閉區(qū)間勢場函數(shù)來表示船舶域的不可侵犯屬性。在運動規(guī)劃過程中,采用具有預(yù)定義速度的Nomoto模型來生成符合船舶運動學(xué)的可遵循路徑。為解決傳統(tǒng)人工勢場(APF)方法的局部最優(yōu)問題,保證復(fù)雜遭遇場景下的防撞安全,提出一種基于模型預(yù)測策略和人工勢場的運動規(guī)劃方法MPAPF。該方法將船舶運動規(guī)劃問題轉(zhuǎn)化為具有機動性、導(dǎo)航規(guī)則、通航航道等多重約束的非線性優(yōu)化問題。4個算例的仿真結(jié)果表明,與APF、A星和快速探索隨機樹(RRT)的變體相比,所提出的MPAPF算法能夠解決上述問題,并生成可行的運動路徑,避免復(fù)雜遭遇場景下的船舶碰撞。

文獻來源:

📚2 運行結(jié)果

輸入預(yù)測步長(我們建議應(yīng)該是1~10,在這個程序中,1步可能花費你120秒,而10步可能比1步高100倍。

?

?

部分代碼:

%% initialization
static_obs_num ? ? ? ? ? ? ? = [12;6];
mailme ? ? ? ? ? ? ? ? ? ? ? = 0;
% static_obs_area ? ? ? ? ? ?= [0.8, 2, 7, 8;
% ? ? ? ? ? ? ? ? ? ? ? ? 2, 0.2, 10, 2];
static_obs_area ? ? ? ? ? ? ?= [0.5, 0, 4.5, 4;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4.5, 2, 6.5 3.5];
dynamic_ships ? ? ? ? ? ? ? ?= [1;1;1;1];
parameter.waterspeed ? ? ? ? = 0/1852;
parameter.waterangle ? ? ? ? = 45;
parameter.water ? ? ? ? ? ? ?= [sind(parameter.waterangle) cosd(parameter.waterangle)]*parameter.waterspeed;
parameter.minpotential ? ? ? = 0.001;
parameter.minpotential4ship = 0.01;
parameter.minobstacle ? ? ? ?= 0.03;
parameter.maxobstacle ? ? ? ?= 0.2;
parameter.safeobstacle ? ? ? = 5;
parameter.amplification ? ? ?= 5;
parameter.safecv ? ? ? ? ? ? = 2.5;%n mile safety collision aviodance distance
parameter.dangercv ? ? ? ? ? = 0.5;% danger collision aviodance distance
parameter.shipdomain ? ? ? ? = 5;
parameter.tsNum ? ? ? ? ? ? ?= 1;
%% simulation environment
map_size ? ? ? ? ? ? ? ? ? ? = [8,4.5];
start_point ? ? ? ? ? ? ? ? ?= [1 1];
end_point ? ? ? ? ? ? ? ? ? ?= [7,4];
tmp_end_point ? ? ? ? ? ? ? ?= end_point;
parameter.endbeta ? ? ? ? ? ?= -log(parameter.minpotential)/(norm(end_point-start_point)*2)^2;
mat_point ? ? ? ? ? ? ? ? ? ?= init_obstacles(static_obs_num,static_obs_area); ?% Generate static obstacles randomly
ship.speed ? ? ? ? ? ? ? ? ? = 8.23; % meters per second equal to 16 knots?
ship.v ? ? ? ? ? ? ? ? ? ? ? = 0;
ship.data ? ? ? ? ? ? ? ? ? ?= [... ? ? ? ? ? ? ? ? ? ? ? ?data = [ U K T n3]
6 ? ? 0.08 ? ?20 ? ?0.4 ??
9 ? ? 0.18 ? ?27 ? ?0.6
12 ? ?0.23 ? ?21 ? ?0.3 ];
% interpolate to find K and T as a function of U from MSS toolbox 'frigate'
prompt ? ? ? ? ? ? ? ? ? ? ? = 'Prediction Step\n'; % input the prediction step, 1~10
parameter.prediction_step ? ?= input(prompt);
ship.k ? ? ? ? ? ? ? ? ? ? ? = interp1(ship.data(:,1),ship.data(:,2),ship.speed,'linear','extrap'); %ship dynamic model you can change the dynamic model in shipdynamic.m
ship.T ? ? ? ? ? ? ? ? ? ? ? = interp1(ship.data(:,1),ship.data(:,3),ship.speed,'linear','extrap');
ship.n3 ? ? ? ? ? ? ? ? ? ? ?= interp1(ship.data(:,1),ship.data(:,4),ship.speed,'linear','extrap');
ship.Ddelta ? ? ? ? ? ? ? ? ?= 10*pi/180; ?% max rudder rate (rad/s)
ship.delta ? ? ? ? ? ? ? ? ? = 30*pi/180; ?% max rudder angle (rad)
ship.length ? ? ? ? ? ? ? ? ?= 100;
ship.p_leader ? ? ? ? ? ? ? ?= -8;
ship.alpha_leader ? ? ? ? ? ?= 3;
ship.yaw ? ? ? ? ? ? ? ? ? ? = 45;
ship.yaw_rate ? ? ? ? ? ? ? ?= 0;
ship.rudder ? ? ? ? ? ? ? ? ?= 0;
ship.rudder_rate ? ? ? ? ? ? = 0;
ship.position ? ? ? ? ? ? ? ?= [1 1];
ship.gamma ? ? ? ? ? ? ? ? ? = 1;
ship.lamda ? ? ? ? ? ? ? ? ? = log(1/parameter.minpotential4ship-1)/((parameter.shipdomain)^2-1);
ship.prediction_postion ? ? ?= [];
tsPath{parameter.tsNum} ? ? ?= [];
ship1 ? ? ? ? ? ? ? ? ? ? ? ?= ship;
parameter.scale ? ? ? ? ? ? ?= 1852; ? ? ? ? ? ? ? ? ? ? % 1852m in real world ,1 in simulation;
parameter.time ? ? ? ? ? ? ? = 5; ? ? ? ? ? ? ? ? ? ? ? ?% time per step
parameter.searching_step ? ? = 3000; ? ? ? ? ? ? ? ? ? ? % max searching step
parameter.map_size ? ? ? ? ? = map_size; ? ? ? ? ? ? ? ? % map size for display
parameter.map_min ? ? ? ? ? ?= 0.05; ? ? ? ? ? ? ? ? ? ? % minmum map details
parameter.end1 ? ? ? ? ? ? ? = 0.05;?
% parameter.situs1 ? ? ? ? ? = [6.1 1.75 3.25 1.75]; ? ?
parameter.situs1 ? ? ? ? ? ? = [6.1 3.9 3.25 1.75]; % a quaternion ship domain proposed in Wang 2010,situs1 means in head-on situation
parameter.situs2 ? ? ? ? ? ? = [6.1 3.9 3.25 1.75]; ? ? ?% a quaternion ship domain proposed in Wang 2010,situs2 means in crossing and give-way situation
parameter.situs3 ? ? ? ? ? ? = [0.0 0.0 0.00 0.00]; ? ? ?% a quaternion ship domain proposed in Wang 2010,situs3 means in crossing and stand-on situation
parameter.situs0 ? ? ? ? ? ? = [6.0 6.0 1.75 1.75]; ? ? ?% a quaternion ship domain proposed in Wang 2010,situs0 means in norm naviation situation
ship_scale ? ? ? ? ? ? ? ? ? = 1;
leader_stop ? ? ? ? ? ? ? ? ?= 0;
tic
draw2();
set(gcf,'position',[200 200 1361/1.5 750/2]);
hold on
LB_follower = [];
UB_follower = [];
for i = 1 : parameter.prediction_step
? ? LB_follower = [LB_follower 0 -ship.delta];% lower limiting value
? ? UB_follower = [UB_follower 0 ship.delta];% upper limiting value
end
parameter.navars ? ?= 2*parameter.prediction_step;% number of navars
targetship=init_ship(ship,'others',1000);?

🎉3 參考文獻

[1]He, Zhibo, et al. “A Novel Model Predictive Artificial Potential Field Based Ship Motion Planning Method Considering COLREGs for Complex Encounter Scenarios.” ISA Transactions, Elsevier BV, Sept. 2022, doi:10.1016/j.isatra.2022.09.007.

🌈4 Matlab代碼實現(xiàn)

總結(jié)

以上是生活随笔為你收集整理的基于模型预测人工势场的船舶运动规划方法,考虑复杂遭遇场景下的COLREG(Matlab代码实现)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。