LOS循迹算法matlab实现

LOS算法相当于pid控制中的p控制,根据与目标轨迹的横向偏差来计算艏向角

%坐标点
x=[0,5,10,28,40,50,40,80];
y=[0,5,10,20,30,60,80,100];
len=length(x);
trace=[x',y'];
%船舶初始位置
ship_point=[0,5];
%船舶速度
ship_velocity=[1,1];
delta=1;
los_step=0.8;
point_storage=[];
angle_storage=[];
for i=1:len-1
    % 使用北东坐标系
    err_y=trace(i+1,1)-trace(i,1);
    err_x=trace(i+1,2)-trace(i,2);
    whole_angle=atan2(err_y,err_x);
    trans=[cos(whole_angle),-sin(whole_angle);sin(whole_angle),cos(whole_angle)];   
    rang=(ship_point(1)-trace(i+1,1))^2+(ship_point(2)-trace(i+1,2))^2;
    n=1;
    while rang>delta^2
        appendage_coordinate=trans'*[ship_point(2)-trace(i,2);ship_point(1)-trace(i,1)];
        %[ship_point(2)-trace(i,2);ship_point(1)-trace(i,1)]
        expect_path_angle=whole_angle-atan(appendage_coordinate(2)/delta);       
        ship_next_point=[ship_point(1)+sin(expect_path_angle)*los_step,ship_point(2)+cos(expect_path_angle)*los_step];
        point_storage=[point_storage;ship_point];
        ship_point=ship_next_point;
        rang=sqrt((ship_point(1)-trace(i+1,1))^2+(ship_point(2)-trace(i+1,2))^2);
        n=n+1;
    end
end
figure(1)
plot(trace(:,1),trace(:,2),'b.-');
hold on;
plot(point_storage(:,1),point_storage(:,2),'r');

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
【资源说明】 课程作业-USV路径跟踪LOS控制算法matlab仿真源码.zip课程作业-USV路径跟踪LOS控制算法matlab仿真源码.zip课程作业-USV路径跟踪LOS控制算法matlab仿真源码.zip课程作业-USV路径跟踪LOS控制算法matlab仿真源码.zip课程作业-USV路径跟踪LOS控制算法matlab仿真源码.zip课程作业-USV路径跟踪LOS控制算法matlab仿真源码.zip课程作业-USV路径跟踪LOS控制算法matlab仿真源码.zip课程作业-USV路径跟踪LOS控制算法matlab仿真源码.zip课程作业-USV路径跟踪LOS控制算法matlab仿真源码.zip课程作业-USV路径跟踪LOS控制算法matlab仿真源码.zip课程作业-USV路径跟踪LOS控制算法matlab仿真源码.zip课程作业-USV路径跟踪LOS控制算法matlab仿真源码.zip课程作业-USV路径跟踪LOS控制算法matlab仿真源码.zip课程作业-USV路径跟踪LOS控制算法matlab仿真源码.zip课程作业-USV路径跟踪LOS控制算法matlab仿真源码.zip课程作业-USV路径跟踪LOS控制算法matlab仿真源码.zip课程作业-USV路径跟踪LOS控制算法matlab仿真源码.zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
循迹控制可以用于无人驾驶、机器人等领域,通过在预定路径上准确地跟踪轨迹,使机械系统能够自主地完成导航任务。Matlab是一种广泛应用于科学计算和工程领域的高级编程语言和环境,也可以用于实现循迹控制算法Matlab实现循迹控制算法的主要步骤如下: 1. 定义目标路径:根据实际情况,可以使用预设的路径或者通过传感器等方式实时获取目标路径信息,将其表示为坐标点或曲线。 2. 获取系统当前位置:通过传感器获取机械系统当前位置信息,也可以通过其他方式获取。 3. 计算误差偏差:将目标路径与系统当前位置进行比较,计算系统实际位置与目标路径之间的偏差,包括横向偏差和纵向偏差。 4. 根据误差偏差进行控制:根据误差偏差,选择适当的控制策略来调整系统的控制输入,使系统能够准确地跟踪目标路径。常见的控制策略包括比例控制、积分控制和微分控制等。 5. 循环迭代控制:通过循环迭代,不断地更新误差偏差和控制输入,使机械系统逐渐接近目标路径并实现循迹控制。 在Matlab实现循迹控制算法,可以利用其提供的丰富的数值计算和控制工具箱,例如Control System Toolbox和Simulink等。通过使用这些工具箱,可以方便地进行系统建模、控制器设计和仿真等工作,大大简化了循迹控制算法实现过程。 总之,Matlab提供了强大的功能和工具,可以帮助工程师和研究人员实现循迹控制算法,并可根据实际需求进行优化和调整,进一步提高系统的性能和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值