无人船 | 图解基于视线引导(LOS)的无人艇制导算法

news2025/4/26 6:56:08

目录

  • 1 视线引导法介绍
  • 2 LOS制导原理推导
  • 3 Lyapunov稳定性分析
  • 4 LOS制导效果

1 视线引导法介绍

视线引导法(Line of Sight, LOS)作为无人水面艇(USV)自主导航领域的核心技术,通过几何制导与动态控制深度融合的机制,为复杂海洋环境下的高精度路径跟踪提供了鲁棒性解决方案。其核心原理建立在运动学几何投影与闭环反馈控制的双重架构上:系统实时计算无人船当前位置与预设航路点之间的视线角,通过航向控制器动态调整船体艏摇角使其精确对准该视线方向,同时配合自适应航速策略,形成兼具轨迹跟踪精度与运动稳定性的制导体系。

在这里插入图片描述

为实现视线角的精确跟踪,LOS制导与航向控制器形成级联控制架构:LOS制导系统首先根据全局路径规划生成的航路点序列构建虚拟参考路径,在每个控制周期内选取距离船体最近的路径点作为当前跟踪目标,通过几何投影建立船体坐标系与惯性坐标系间的空间映射关系,计算得到视线角 ψ l o s \psi_{los} ψlos,从而生成期望航向指令 ψ d \psi_{d} ψd,内环控制层则基于航向偏差 e ψ p ˉ s i d − ψ e_\psi\=psi_{d}-\psi eψpˉsidψ,通过控制算法输出转艏力矩τ_r,驱动推进系统调整船体方向,如下图所示

在这里插入图片描述

2 LOS制导原理推导

如图所示为LOS制导几何关系示意图

在这里插入图片描述

设上一个路点为 p i \boldsymbol{p}_i pi,下一个路点为 p i + 1 \boldsymbol{p}_{i+1} pi+1,USV当前位置为 p = [ x y ] T \boldsymbol{p}=\left[ \begin{matrix} x& y\\\end{matrix} \right] ^T p=[xy]T。以 p \boldsymbol{p} p为圆心作半径为 R k R_k Rk的圆交直线段 p i p i + 1 \boldsymbol{p}_i\boldsymbol{p}_{i+1} pipi+1于两点,距离下一个路点 p i + 1 \boldsymbol{p}_{i+1} pi+1较近的交点为当前跟踪的期望路点 p l o s \boldsymbol{p}_{\mathrm{los}} plos。定义前视距离 Δ \Delta Δ为USV在当前段路径投影点与LOS制导点 p l o s \boldsymbol{p}_{\mathrm{los}} plos的前向距离,在静态LOS制导律中, Δ \Delta Δ R k R_k Rk为定值(已知 Δ \Delta Δ R k R_k Rk中的一项可以求出另一项),一般设为USV长度 L L L n n n倍,即

Δ = n L \Delta =nL Δ=nL

由几何关系可得横纵向跟踪误差

{ x e = ( x − x i ) cos ⁡ α i + ( y − y i ) sin ⁡ α i y e = − ( x − x i ) sin ⁡ α i + ( y − y i ) cos ⁡ α i \begin{cases} x_e=\left( x-x_i \right) \cos \alpha _i+\left( y-y_i \right) \sin \alpha _i\\ y_e=-\left( x-x_i \right) \sin \alpha _i+\left( y-y_i \right) \cos \alpha _i\\\end{cases} {xe=(xxi)cosαi+(yyi)sinαiye=(xxi)sinαi+(yyi)cosαi

其中 α i = a r c tan ⁡ ( ( y i + 1 − y i ) / ( x i + 1 − x i ) ) \alpha _i=\mathrm{arc}\tan \left( {{\left( y_{i+1}-y_i \right)}/{\left( x_{i+1}-x_i \right)}} \right) αi=arctan((yi+1yi)/(xi+1xi))。在USV运动过程中,受到风浪或自身驱动等因素影响将产生横向速度 v v v,使船艏不一定沿着航向行驶,艏向和航向的差角称为漂角

β = a r c tan ⁡ ( v , u ) \beta =\mathrm{arc}\tan \left( v,u \right) β=arctan(v,u)

则USV当前航向角为 χ = ψ + β \chi =\psi +\beta χ=ψ+β,期望的航向角 χ d = α i − a r c tan ⁡ ( y e / Δ ) \chi _d=\alpha _i-\mathrm{arc}\tan \left( {{y_e}/{\Delta}} \right) χd=αiarctan(ye/Δ),令 χ = χ d \chi =\chi _d χ=χd可得

ψ d = α i − a r c tan ⁡ ( y e / Δ ) − β \psi _d=\alpha _i-\mathrm{arc}\tan \left( {{y_e}/{\Delta}} \right) -\beta ψd=αiarctan(ye/Δ)β

即控制USV艏向为 ψ d \psi_d ψd时可使其沿着期望航向运动

3 Lyapunov稳定性分析

下来验证当采用 ψ = ψ d \psi=\psi_d ψ=ψd制导时可使横向误差收敛为零。求横向误差的一阶导数

y ˙ e = − x ˙ sin ⁡ α i + y ˙ cos ⁡ α i \dot{y}_e=-\dot{x}\sin \alpha _i+\dot{y}\cos \alpha _i y˙e=x˙sinαi+y˙cosαi

根据运动学方程得到

y ˙ e = − ( u cos ⁡ ψ − v sin ⁡ ψ ) sin ⁡ α i + ( u sin ⁡ ψ + v cos ⁡ ψ ) cos ⁡ α i \dot{y}_e=-\left( u\cos \psi -v\sin \psi \right) \sin \alpha _i+\left( u\sin \psi +v\cos \psi \right) \cos \alpha _i y˙e=(ucosψvsinψ)sinαi+(usinψ+vcosψ)cosαi

根据辅助角公式展开

y ˙ e = u 2 + v 2 sin ⁡ ( ψ + β − α i ) \dot{y}_e=\sqrt{u^2+v^2}\sin \left( \psi +\beta -\alpha _i \right) y˙e=u2+v2 sin(ψ+βαi)

代入LOS制导律

y ˙ e = u 2 + v 2 sin ⁡ ( − a r c tan ⁡ ( y e / Δ ) ) = − u 2 + v 2 y e Δ 2 + y e 2 \begin{aligned} \dot{y}_e&=\sqrt{u^2+v^2}\sin \left( -\mathrm{arc}\tan \left( {{y_e}/{\Delta}} \right) \right) \\ &=-\sqrt{u^2+v^2}\frac{y_e}{\sqrt{\Delta ^2+y_{e}^{2}}}\end{aligned} y˙e=u2+v2 sin(arctan(ye/Δ))=u2+v2 Δ2+ye2 ye

设Lyapunov函数

V = y e 2 2 V=\frac{y_{e}^{2}}{2} V=2ye2

V ˙ = − u 2 + v 2 y e 2 Δ 2 + y e 2 ⩽ 0 \dot{V}=-\sqrt{u^2+v^2}\frac{y_{e}^{2}}{\sqrt{\Delta ^2+y_{e}^{2}}}\leqslant 0 V˙=u2+v2 Δ2+ye2 ye20

根据Lyapunov第二判据可知横向误差在LOS制导律下渐进稳定。

4 LOS制导效果

在下面的演示中,红色的是全局路径点,绿色的是LOS制导生成的模拟轨迹

在这里插入图片描述

直行场景

在这里插入图片描述

绕行场景

在这里插入图片描述

掉头场景


🔥 更多精彩专栏

  • 《ROS从入门到精通》
  • 《Pytorch深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2335142.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3.2.2.3 Spring Boot配置拦截器

在Spring Boot应用中配置拦截器(Interceptor)可以对请求进行预处理和后处理,实现如权限检查、日志记录等功能。通过实现HandlerInterceptor接口并注册到Spring容器,拦截器可以自动应用到匹配的请求路径。案例中,创建了…

大模型文生图

提示词分4个部分:质量,主体,元素,风格 质量:杰作,高质量,超细节,完美的精度,高分辨率,大师级的; 权重:把图片加括号,&am…

LeetCode 118题解 | 杨辉三角

题目链接: https://leetcode.cn/problems/pascals-triangle/description/ 题目如下: 解题过程如下: 杨辉三角就是一个不规则的二维数组,实际上是一个直角三角形。如图所示: 杨辉三角特点:每一行的第一个和最后一个都是…

『Kubernetes(K8S) 入门进阶实战』实战入门 - Pod 详解

『Kubernetes(K8S) 入门进阶实战』实战入门 - Pod 详解 Pod 结构 每个 Pod 中都可以包含一个或者多个容器,这些容器可以分为两类 用户程序所在的容器,数量可多可少Pause 容器,这是每个 Pod 都会有的一个根容器,它的作用有两个 可…

数据库索引深度解析:原理、类型与高效使用实践

🧠 一句话理解索引是什么? 索引就是数据库中的“目录”或“书签”,它能帮助我们快速找到数据的位置,而不是一页页地翻整本书。 🧩 一、为什么需要索引?(用生活化例子秒懂) 想象你在…

React 记账本项目实战:多页面路由、Context 全局

在本文中,我们将分享一个使用 React 开发的「记账本」项目的实战经验。该项目通过 VS Code 完成,包含首页、添加记录页、编辑页等多个功能页面,采用了 React Router 实现路由导航,使用 Context API 管理全局的交易记录状态,并引入数据可视化组件呈现不同月份的支出情况。项…

易路iBuilder智能体平台:人力资源领域AI落地,给“数据权限管控”一个最优解

近日,加拿大电子商务巨头Shopify的CEO Tobias Ltke分享了一份内部备忘录,明确表示有效使用AI已成为公司对每位员工的基本期望,并指出:各团队在招募新员工前,必须先确定是否能够利用AI完成工作。 而在全球范围内&#…

mybatis--多对一处理/一对多处理

多对一处理(association) 多个学生对一个老师 对于学生这边,关联:多个学生,关联一个老师[多对一] 对于老师而言,集合,一个老师有多个学生【一对多】 SQL: 测试环境搭建 1.导入依…

计算机视觉——图像金字塔与目标图像边缘检测原理与实践

一、两个图像块之间的相似性或距离度量 1.1 平方差和(SSD) 平方差和(SSD) 是一种常用的图像相似性度量方法。它通过计算两个图像在每个对应位置的像素值差的平方和来衡量两个图像之间的整体差异。如果两个图像在每个位置的像素值…

VRoid-Blender-Unity个人工作流笔记

流程 VRoid 选配模型>减面、减材质>导出vrm Blender(先有CATS、vrm插件) 导入vrm>Fix model>修骨骼>导出fbx Unity 找回贴图、改着色器、调着色器参数…… VRoid 减面 以模型不出现明显棱角为准。脸好像减面100也问题不大。 下…

Domain Adaptation领域自适应

背景与问题定义 传统监督学习假设:训练集与测试集数据分布一致。 Domain Shift:测试数据分布与训练数据不同,模型泛化性能骤降 。 例如在黑白图像上训练数字分类器,测试时用彩色图像,准确率骤降。 Domain Adaptatio…

从自动测量、8D响应到供应链协同的全链路质量管理数字化方案——全星QMS如何破解汽车行业质量困局

全星QMS如何破解汽车行业质量困局:从自动测量、8D响应到供应链协同的全链路数字化方案 在当今竞争激烈的市场环境中,企业要想脱颖而出,必须确保产品质量的稳定性和可靠性。 全星质量QMS软件系统凭借其强大的功能和灵活的架构,为企…

联想电脑开机出现Defalut Boot Device Missing or Boot Failed怎么办

目录 一、恢复bios默认设置 二、关机重启 三、“物理”方法 在图书馆敲代码时,去吃了午饭回来发现刚开机就出现了下图的问题(崩溃),想起之前也发生过一次 这样的问题,现在把我用到的方法写在下面,可能对…

SQL学习笔记-聚合查询

非聚合查询和聚合查询的概念及差别 1. 非聚合查询 非聚合查询(Non-Aggregate Query)是指不使用聚合函数的查询。这类查询通常用于从表中检索具体的行和列数据,返回的结果是表中的原始数据。 示例 假设有一个名为 employees 的表&#xff…

【Vue 3 + Element Plus 实现产品标签的动态添加、删除与回显】

🚀Vue 3 Element Plus 实现产品标签的动态添加、删除与回显 在后台管理系统中,我们经常需要对表单数据进行动态处理,尤其是类似“产品标签”这样的字段,它需要用户能够灵活添加、删除,并在编辑时自动回显。今天我们就…

IntelliJ 配置(二)配置相关类库(2)LineMarkerProvider

一、介绍 LineMarkerProvider 是 IntelliJ 平台插件开发中的一个接口,它的作用是在编辑器左侧的“行标记区域”(就是代码行号左边那一栏)添加各种图标、标记或导航链接。比如Java 类中看到的: 小绿色三角形(可以点击运…

从零开始学java--线性表

数据结构基础 目录 数据结构基础 线性表 顺序表 链表 顺序表和链表的区别: 栈 队列 线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表中的元素个数就是线性表的长度,表的起始位置称为表头&am…

AD917X系列JESD204B MODE7使用

MODE7特殊在F8,M4使用2个复数通道 CH0_NCO10MHz CH1_NCO30MHZ DP_NCO50MHz DDS1偏移20MHz DDS2偏移40MHz

Spring Cloud之远程调用OpenFeign最佳实践

目录 OpenFeign最佳实践 问题引入 Feign 继承方式 创建Module 引入依赖 编写接口 打Jar包 服务提供方 服务消费方 启动服务并访问 Feign 抽取方式 创建Module 引入依赖 编写接口 打Jar包 服务消费方 启动服务并访问 服务部署 修改pom.xml文件 观察Nacos控制…

【Python爬虫】详细入门指南

目录 一、简单介绍 二、详细工作流程以及组成部分 三、 简单案例实现 一、简单介绍 在当今数字化信息飞速发展的时代,数据的获取与分析变得愈发重要,而网络爬虫技术作为一种能够从互联网海量信息中自动抓取所需数据的有效手段,正逐渐走入…