路径跟踪之导航向量场——二维导航向量场

news2024/12/27 18:56:36

今天带来一期轨迹跟踪算法的讲解,首先讲解二维平面中的导航向量场[1]。该方法具有轻量化、计算简便、收敛性强等多项优点。该方法根据期望的轨迹函数,计算全局位置的期望飞行向量,将期望飞行向量转为偏光角,输入底层控制器,即可导引被控对象不断跟踪至期望轨迹。该方法适用于非全约束的移动机器人,如固定翼无人机、独轮车、小车(非全向麦克纳姆轮式)、船舶等。对于全约束的移动机器人,如四旋翼无人机、麦克纳姆轮式小车,仅控制前进方向和偏航方向,也是同样可以使用的。

在本期文章中,主要讲解向量场计算方式和使用,机器人根据向量场给出的方向最终会收敛至期望轨迹的相关证明过程可以参考原始论文。

轨迹表达式

考虑以(0,0)为圆心, r = 10 r=10 r=10为半径的期望圆轨迹,有如下轨迹方程:
x 2 + y 2 = 100 x^2+y^2=100 x2+y2=100
对上式等式两边开平方,移到一边,得到如下函数 φ ( x , y ) \varphi(x,y) φ(x,y)
φ ( x , y ) = x 2 + y 2 − 10 \varphi(x,y)=\sqrt{x^2+y^2}-10 φ(x,y)=x2+y2 10
如下图所示,当 φ = c = c o n s t \varphi=c=const φ=c=const时,期望轨迹为一个水平集。设无人机位置坐标为 r ⃗ = ( r x ,   r y ) \vec{r}=(r_x,\ r_y) r =(rx, ry),当 φ ( r ⃗ ) = 0 \varphi(\vec r)=0 φ(r )=0时,无人机坐标落在期望轨迹水平集上;当 φ ( r ⃗ ) > 0 \varphi(\vec r)>0 φ(r )>0,轨迹在期望轨迹水平集之上;当 φ ( r ⃗ ) < 0 \varphi(\vec r)<0 φ(r )<0,轨迹在期望轨迹水平集之下。因此 φ ( r ⃗ ) \varphi(\vec r) φ(r )的值可以被看作是无人机位置与期望轨迹之间的距离

通常,我们可以在此基础上定义跟踪误差
e = ψ [ φ ( r ⃗ ) ] e=\psi[\varphi(\vec r)] e=ψ[φ(r )]
ψ \psi ψ一阶连续单调递增函数 ψ ( 0 ) = 0 \psi(0)=0 ψ(0)=0 ∀ z ≠ 0 ,   ψ ( z ) z > 0 \forall z\neq0,\ \psi(z)z>0 z=0, ψ(z)z>0
函数 ψ \psi ψ可以看作为算法的参数,通过选取 ψ \psi ψ ϕ \phi ϕ自由组合,来定义跟踪误差,从而区分轨迹函数 φ ( r ⃗ ) \varphi(\vec r) φ(r ) e e e

导航向量场

下面给出导航向量场的形式
v ⃗ ( r ⃗ ) = τ ⃗ ( r ⃗ ) − k n e ( r ⃗ ) n ⃗ ( r ⃗ ) \vec v(\vec r)=\vec{\tau}(\vec r)-k_ne(\vec r)\vec n(\vec r) v (r )=τ (r )kne(r )n (r )
式中, n ⃗ ( r ⃗ ) \vec n(\vec r) n (r )梯度方向
n ⃗ ( r ⃗ ) = ( ∂ φ ∂ x , ∂ φ ∂ y ) = ( x x 2 + y 2 , y x 2 + y 2 ) \begin{aligned} \vec n(\vec r) &= (\frac{\partial \varphi}{\partial x},\frac{\partial \varphi}{\partial y}) \\ &=(\frac{x}{\sqrt{x^2+y^2}},\frac{y}{\sqrt{x^2+y^2}})\\ \end{aligned} n (r )=(xφ,yφ)=(x2+y2 x,x2+y2 y)
τ ⃗ ( r ⃗ ) \vec{\tau}(\vec r) τ (r )为与 n ⃗ ( r ⃗ ) \vec n(\vec r) n (r )垂直的方向, E E E旋转矩阵 E c w E_{cw} Ecw为顺时针旋转矩阵, E c c w E_{ccw} Eccw为逆时针旋转矩阵
{ τ ⃗ ( r ⃗ ) = E   n ⃗ ( r ⃗ ) E c w = [ 0 1 − 1 0 ] E c c w = [ 0 − 1 1 0 ] \begin{cases} \begin{aligned} \vec{\tau}(\vec r)&= E\ \vec{n}(\vec r)\\ E_{cw}&= \begin{bmatrix} 0 & 1 \\ -1 & 0 \end{bmatrix}\\ E_{ccw}&= \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \end{aligned} \end{cases} τ (r )EcwEccw=E n (r )=[0110]=[0110]
e ( r ⃗ ) e(\vec r) e(r )为误差,这里为了方便起见,令
e ( r ⃗ ) = φ ( r ⃗ ) = x 2 + y 2 − 10 e(\vec r)=\varphi(\vec r)=\sqrt{x^2+y^2}-10 e(r )=φ(r )=x2+y2 10
k n k_n kn为增益,我们暂且令 k n = 1 k_n = 1 kn=1

v ⃗ ( r ⃗ ) = τ ⃗ ( r ⃗ ) − k n e ( r ⃗ ) n ⃗ ( r ⃗ ) \vec v(\vec r)=\vec{\tau}(\vec r)-k_ne(\vec r)\vec n(\vec r) v (r )=τ (r )kne(r )n (r )中, τ ⃗ ( r ⃗ ) \vec{\tau}(\vec r) τ (r )为传播项, − k n e ( r ⃗ ) n ⃗ ( r ⃗ ) -k_ne(\vec r)\vec n(\vec r) kne(r )n (r )为收敛项。 ∣ − k n e ( r ⃗ ) n ⃗ ( r ⃗ ) ∣ |-k_ne(\vec r)\vec n(\vec r)| kne(r )n (r )项越大,产生的向期望轨迹方向的分量越大。 τ ⃗ ( r ⃗ ) \vec{\tau}(\vec r) τ (r )决定了跟踪期望轨迹的方向。

最终将 v ⃗ ( r ⃗ ) \vec v(\vec r) v (r )进行归一化操作

m ⃗ = v ⃗ ∣ ∣ v ⃗ ∣ ∣ \vec m = \frac{\vec v}{||\vec v||} m =∣∣v ∣∣v

∣ ∣ v ⃗ ∣ ∣ ||\vec v|| ∣∣v ∣∣为欧几里得范数(L2范数), m ⃗ \vec m m 即为导航向量场给出的期望飞行方向向量。

向量场结果

我们令增益 k n = 0.2 k_n = 0.2 kn=0.2 k n = 1 k_n = 1 kn=1 k n = 2 k_n = 2 kn=2 k n = 4 k_n = 4 kn=4,跟踪方向为顺时针方向,旋转矩阵为 E = [ 0 , 1 ; − 1 , 0 ] E=[0,1;-1,0] E=[0,1;1,0],绘制出向量场结果图像,可得

令旋转矩阵为逆时针方向,旋转矩阵为 E = [ 0 , − 1 ; 1 , 0 ] E=[0,-1;1,0] E=[0,1;1,0],可得

根据四个不同增益下的导航向量场结果,不难发现, ∣ − k n e ( r ⃗ ) n ⃗ ( r ⃗ ) ∣ |-k_ne(\vec r)\vec n(\vec r)| kne(r )n (r )越大,导航向量场方向往期望轨迹方向偏转越大。在距离期望轨迹较近的情况下,过大的偏转方向可能会产生震荡,但是距离较远的情况下有助于快速收敛至期望轨迹。

向量场使用

根据上面的讲解,对于任意给定的期望轨迹函数式,在全局任何位置,都可以计算得出一个期望飞行向量,将向量做反正切计算,得到期望的飞行航向角。将这个期望航向角,输入至底层控制器,即可导引无人机(或其他类型机器人)飞行收敛至期望轨迹。对于固定翼无人机,不建议直接使用航向角误差作为姿态控制器的偏航输入,建议将航向角误差对滚转做映射函数处理,作为姿态控制器的滚转输入,会有更好的效果。

总结

本期文章介绍了二维导航向量场,其简洁优雅的形式,在很多方面有着比较广泛的适用性,可以自行构建轨迹函数,来实现例如目标追踪、避障、对峙跟踪等功能。

在此留下一个思考题,如有兴趣,请尝试推导出直线 x = 5 x=5 x=5和椭圆轨迹 x 2 9 + y 2 4 \frac{x^2}{9}+\frac{y^2}{4} 9x2+4y2=1的导航向量场形式,尝试绘制导航向量场结果。如果推导出结果,可以尽快与我私信,有精美礼品和源码答疑。数量有限(5个名额),先到先得。

参考文献及链接

[1]KAPITANYUK, Yuri A.; PROSKURNIKOV, Anton V.; CAO, Ming. A guiding vector-field algorithm for path-following control of nonholonomic mobile robots. IEEE Transactions on Control Systems Technology, 2017, 26.4: 1372-1385.

END

迅翼SwiftWing致力于固定翼技术共享,汇聚固定翼领域技术极客,推动固定翼技术持续创新!

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

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

相关文章

gpg 密钥生成、导入、导出、自动输入密码

目录 一、系统环境 二、常用命令&#xff08;以签名密钥为例&#xff09; &#xff08;1&#xff09;生成密钥 &#xff08;2&#xff09;列出私钥 &#xff08;3&#xff09;列出公钥 &#xff08;4&#xff09;导出公钥 &#xff08;5&#xff09;导出私钥 &#xff…

5个免费ppt模板网站推荐!轻松搞定职场ppt制作!

每次过完小长假&#xff0c;可以明显地感觉到&#xff0c;2024这一年很快又要结束了&#xff0c;不知此刻的你有何感想呢&#xff1f;是满载而归&#xff0c;还是准备着手制作年终总结ppt或年度汇报ppt呢&#xff1f; 每当说到制作ppt&#xff0c;很多人的第一反应&#xff0c…

k8s 1.28.2 集群部署 MinIO 分布式存储

文章目录 [toc]MinIO 介绍MinIO 生产硬件要求MinIO 存储要求MinIO 内存要求MinIO 网络要求MinIO 部署架构分布式 MinIO复制的 MinIO 部署 MinIO创建目录节点打标签创建 namespace创建 pv创建 MinIO配置 ingress问题记录通过代理服务器访问 MinIO 的 Object Browser 界面一直显示…

51单片机的智能衣柜【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块光照传感器时钟模块温湿度传感器继电器按键、LED等模块构成。适用于智能衣柜、智能衣橱、紫外线定时消毒等相似项目。 可实现功能: 1、LCD1602实时显示北京时间、温湿度和开关门状态 2、时钟模块DS1302采集时间 …

实战逆向RUST语言程序

实战为主&#xff0c;近日2024年羊城杯出了一道Rust编写的题目&#xff0c;这里将会以此题目为例&#xff0c;演示Rust逆向该如何去做。 题目名称&#xff1a;sedRust_happyVm 题目内容&#xff1a;unhappy rust, happy vm 关于Rust逆向&#xff0c;其实就是看汇编&#xff…

制造业人工智能的场景应用落地现状、难点和建议

制造业应用人工智能可以提高制造业的生产效率&#xff0c;推动制造业高质量发展和竞争力提升&#xff0c;促进国民经济的持续稳定增长。近年来&#xff0c;制造业人工智能的场景化应用落地不断推进&#xff0c;但在落地过程中遇到一些难点。本文对于制造企业应用人工智能的场景…

AVL树如何维持平衡

1.AVL树的特性 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查 找元素相当于在顺序表中搜索元素&#xff0c;效率低下。因此&#xff0c;两位俄罗斯的数学家G.M.Adelson-Velskii 和E.M.Landis在1962年 发明了一种…

【工具使用】使用Docsify搭建个人文档网站

检查Node.js安装状态 首先&#xff0c;打开命令提示符&#xff08;CMD&#xff09;&#xff0c;输入以下命令以验证Node.js是否已经安装在您的电脑上&#xff1a; node -v安装Docsify CLI工具 接下来&#xff0c;通过以下命令全局安装Docsify的命令行工具&#xff1a; npm …

保护企业知识产权!推荐十款源代码加密软件

在现代软件开发中&#xff0c;源代码是企业最重要的资产之一。然而&#xff0c;源代码的泄露可能导致巨大的经济损失和知识产权问题。为帮助企业保护其源代码安全&#xff0c;以下推荐十种源代码加密软件&#xff0c;确保你的知识产权不受侵犯。 1. Ping32 Ping32不仅是一款终…

Biomamba求职| 国奖+4篇一作SCI

转眼间我也要参加秋招啦&#xff0c;认真的求职帖&#xff0c;各位老师/老板欢迎联系~其它需要求职的小伙伴也欢迎把简历发给我们&#xff0c;大家一起找工作。 一、基本信息 姓名&#xff1a;Biomamba 性别&#xff1a;男 出厂年份&#xff1a;1998 籍贯&#xff1a;浙江…

FileLink文件摆渡系统应用场景深入分析(一文读懂)

在现代企业的运营中&#xff0c;文件传输与管理的效率直接影响业务的流畅性与安全性。FileLink文件摆渡系统凭借其强大的功能和灵活的应用场景&#xff0c;成为企业信息流动的重要工具。本文将深入分析FileLink文件摆渡系统的几种典型应用场景&#xff0c;展示其在各行业中的价…

【docker】要将容器中的 livox_to_pointcloud2 文件夹复制到宿主机上

复制文件夹 使用 docker cp 命令从容器复制文件夹到宿主机&#xff1a; docker cp <container_id_or_name>:/ws_livox/src/livox_to_pointcloud2 /path/to/host/folder sudo docker cp dandong_orin_docker:/ws_livox/src/livox_to_pointcloud2 /home

AI时代AI提示词学习路线

AI时代&#xff0c;万丈高楼平地起&#xff0c;AI提示词就是基石&#xff01; AI提示词是工具&#xff0c;你不应该先学各种技巧再开始用&#xff0c;而应该先用起来再学习各种技巧。 AI时代AI提示词学习路线&#xff1a; 1、养成习惯&#xff1a;遇事不决问AI。 2、带着问题…

2024.10月7~10日 进一步完善《电信资费管理系统》

一、新增的模块&#xff1a; 在原项目基础上&#xff0c;新增加了以下功能&#xff1a; 1、增加AspectJ 框架的AOP 异常记录和事务管理模块。 2、增加SpringMVC的拦截器&#xff0c;实现登录 控制页面访问权限。 3、增加 Logback日志框架&#xff0c;记录日志。 4、增加动态验…

代码随想录算法训练营第四十六天 | 647. 回文子串,516.最长回文子序列

四十六天打卡&#xff0c;今天用动态规划解决回文问题&#xff0c;回文问题需要用二维dp解决 647.回文子串 题目链接 解题思路 没做出来&#xff0c;布尔类型的dp[i][j]&#xff1a;表示区间范围[i,j] &#xff08;注意是左闭右闭&#xff09;的子串是否是回文子串&#xff0…

【JavaEE】——回显服务器的实现

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;引入 1&#xff1a;基本概念 二&#xff1a;UDP socket API使用 1&#xff1a;socke…

zookeeper ——watcher

这应该不是目录 1.watcher定义和说明1.1定义1.2特性1.3watcher的通知状态Watcher.Event.KeeperState1.4watcher的事件类型Event.EventType1.5基本流程 1.watcher定义和说明 1.1定义 在ZooKeeper中&#xff0c;Watcher是一种机制&#xff0c;用于在节点&#xff08;znode&#…

2024百度云智大会|百度大模型内容安全合规探索与实践

9月25日&#xff0c;2024百度云智大会在北京举办。会上&#xff0c;百度智能云分别针对算力、模型、AI 应用&#xff0c;全面升级百舸 AI 异构计算平台 4.0、千帆大模型平台 3.0 两大 AI 基础设施&#xff0c;并升级代码助手、智能客服、数字人三大 AI 原生应用产品。 在大模型…

网络编程(17)——asio多线程模型IOThreadPool

十七、day17 之前我们介绍了IOServicePool的方式&#xff0c;一个IOServicePool开启n个线程和n个iocontext&#xff0c;每个线程内独立运行iocontext, 各个iocontext监听各自绑定的socket是否就绪&#xff0c;如果就绪就在各自线程里触发回调函数。为避免线程安全问题&#xf…

Auto-Animate:是一款零配置、即插即用的动画工具,可以为您的 Web 应用添加流畅的过渡效果

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 用户体验成为了检验产品成功与否的关键因素。而动画效果&#xff0c;作为提升用户体验的重要手段&#xff0c;在网页和应用开发中扮演着举足轻重的角色…