当前位置: 首页 > article >正文

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

目录

  • 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深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》

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

相关文章:

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

目录 1 视线引导法介绍2 LOS制导原理推导3 Lyapunov稳定性分析4 LOS制导效果 1 视线引导法介绍 视线引导法(Line of Sight, LOS)作为无人水面艇(USV)自主导航领域的核心技术,通过几何制导与动态控制深度融合的机制&am…...

LeetCode LCR157 套餐内商品的排列顺序

生成字符串的全部排列(去重):从问题到解决方案的完整解析 问题背景 在编程和算法设计中,生成字符串的所有排列是一个经典问题。它不仅出现在算法竞赛中,也在实际开发中有着广泛的应用,比如生成所有可能的…...

3.2.2.3 Spring Boot配置拦截器

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

cryptozombies合约6

我们就快完成我们的随机僵尸制造器了,来写一个公共的函数把所有的部件连接起来。 写一个公共函数,它有一个参数,用来接收僵尸的名字,之后用它生成僵尸的DNA。 实战演习 创建一个 public 函数,命名为 createRandomZom…...

大模型文生图

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

.NET MCP 示例

服务器端示例 基础服务器 以下是一个基础的 MCP 服务器示例,它使用标准输入输出(stdio)作为传输方式,并实现了一个简单的回显工具: using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.H…...

daz dForce to UE 的原理分析

dForce是物理模拟,不是关键帧动画: dForce是一个物理引擎。当你运行模拟时,Daz Studio会根据你设置的物理属性(如裙子的重量、布料的硬度、摩擦力)、环境因素(如重力、风力)以及与角色的碰撞&am…...

LeetCode 118题解 | 杨辉三角

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

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

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

裂缝检测数据集,支持yolo,coco json,pasical voc xml,darknet格式的标注,1673张原始训练集图片,正确识别率99.4%

数据集详情: 裂缝检测数据集,支持yolo,coco json,pasical voc xml,darknet格式的标注,1673张原始训练集图片,正确识别率99.4% 2394总图像 数据集分割 训练集占比 70% 1673图片 有效集20% 477图片 测试集...

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

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

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

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

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

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

【3】k8s集群管理系列--包应用管理器helm之chart资源打包并推送到harbor镜像仓库

一、chart资源打包 helm package ./web-chart # 当前目录会生成一个tgz的压缩文件二、安装help push插件(用于推送前面打包的文件,到镜像仓库) .1 下载help-push二进制文件 wget https://github.com/chartmuseum/helm-push/releases/down…...

用 Python 从零构建异步回显服务器

简介 让我们从 0 开始,搭建一个异步服务输出服务器。 套接字 套接字(socket),是不同计算机中实现通信的一种方式,你可以理解成一个接口,它会在客户端和服务端建立连接,一台发送数据&#xff…...

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

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

QT Sqlite数据库-教程002 查询数据-上

【1】DQL语句: DQL语句(数据查询语言),用来查询数据记录。DQL 基本结构由 SELECT FROM、WHERE、JOIN 等子句构成。DQL 语句并不会改变数据库,而是让数据库将查询结果发送结果集给客户端,返回的结果是一张虚…...

Kubernetes Operator 是什么,以及它们的用途

最近一个朋友问我关于EKS的升级问题: 场景: 如果我有 100 个 EKS 集群需要升级,那么所有集群都安装了安全插件。由于我不想在升级后手动在每个EKS中重复安装此插件,如何实现EKS升级后自动安装这个安全插件? 答案有多…...

鸿蒙开发08-泛型类型和函数

泛型类型和函数允许创建的代码在各种类型上运行&#xff0c;而不仅支持单一类型&#xff0c;类型参数是一种特殊的变量&#xff0c;它代表类型而不是值。 泛型函数的基本语法如下&#xff1a; function 函数名<类型参数>(参数: 类型参数): 类型参数 {// 函数体return 参…...

C语言十大经典数学应用

C语言在解决数学问题方面非常有用&#xff0c;因为它提供了丰富的数学函数和运算符。以下是一些经典的C语言数学题&#xff0c;这些题目可以帮助你提高编程和数学能力。 1. 计算圆的面积 给定圆的半径&#xff0c;计算圆的面积。 #include <stdio.h> #include <mat…...

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

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

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

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

Domain Adaptation领域自适应

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

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

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

UNITY 屏幕UI自适应

1.主要就是根据屏幕的选择根据尺寸 和UI的锚点和中心点来选择&#xff0c;也可以通过代码来动态修改 2.参考视频&#xff1a;Unity UGUI屏幕自适应看这个就够了_哔哩哔哩_bilibili...

【信息系统项目管理师】高分论文:论信息系统项目的范围管理(投资信息化全流程管理项目)

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 1、规划范围管理2、收集需求3、定义范围4、创建wbs5、确认范围6、控制范围2018年2月,我有幸参加了 XX省自贸区财政投资信息化全流程管理项目的假设,作为项目发起单位,省自贸办经过审时度势,及时响应国家自贸…...

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

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

newbee商城购物车模块mapper.xml

1.浏览代码 1&#xff09;表 自定义 DROP TABLE IF EXISTS tb_newbee_mall_shopping_cart_item; CREATE TABLE tb_newbee_mall_shopping_cart_item (cart_item_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 购物项主键id,user_id bigint(20) NOT NULL COMMENT 用户主键id…...

SQL学习笔记-聚合查询

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

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

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