机器人纯跟踪算法 Base Pure Pursuit

这篇具有很好参考价值的文章主要介绍了机器人纯跟踪算法 Base Pure Pursuit。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

纯跟踪算法是一种路径跟踪算法,他通过改变角速度指令将机器人当前位置移动到前面的某个路径点,并不断的跟随路径前进。适用于很多机器人运动学模型,包括阿克曼和全向轮。
本文简单分析求解运动学之后的纯跟踪算法

原理介绍

机器人 pure pursuit,算法,机器学习,人工智能
如果把机器人当做驴,上图形象的解释了纯跟踪算法的原理,纯跟踪算法需要一直更新“胡萝卜”的位置,让机器人朝着路径的方向前进。

算法

纯跟踪算法的步骤是

  1. 定位当前机器人的位置。
  2. 找到路径中匹配的目标点。
  3. 改变机器人移动的角度。

如何找到匹配点

为了解决这个问题,我们需要先定义路径,我们是在什么样的路径里找到匹配点?

路径

描述一个路径一般是用一些离散的点,如:`(x,y) 。一般而言机器人的移动轨迹是连续的,我们也应该使在路径中找到的匹配点连续, 在算法里我们将这些离散的路径点相连接,变成连续的路径。

前瞻距离

和上图中人拿着杆子吸引机器人前进一样,我们的算法中也需要一个一定长度的杆子,在此我们定义“杆子”为前瞻距离。
前瞻距离的选取应该与机器人移动的速度相关,太大或太小都不行。如下图就是太长和太短的效果。
机器人 pure pursuit,算法,机器学习,人工智能

匹配点

当我们定义完路径和前瞻距离,接下来就应该解决匹配点。这个问题本质就是直线与圆的交点。
具体而言为路径中连续的两点连接成一直线,而前瞻距离绕机器人当前位置一圈为圆。求这两几何的交点。
机器人 pure pursuit,算法,机器学习,人工智能

圆与直线交点求解

机器人 pure pursuit,算法,机器学习,人工智能
这里可以用公式法或者向量法求解交点,公式法可能会遇到斜率为0的情况,需要分类讨论,在这里我介绍向量法,只需要考虑一种情况。
已知,路径点分别为(x1,y1),(x2,y2) 当前机器人位置为(currentX,currentY),前瞻距离为l
为了简化计算,我们将当前所有的路径点减去机器人的坐标,算出来的交点再加回来即可。
则路径两点变为(x1-currentX,y1-currentY)(x2-currentXmy2-currentY)
圆的方程为: x 2 + y 2 = l 2 x^2+y^2 = l^2 x2+y2=l2
直线的方程为: ( y 1 − y 2 ) x − ( x 1 − x 2 ) y + x 1 y 2 − x 2 y 1 = 0 (y_1-y_2)x-(x_1-x_2)y+x_1y_2-x_2y_1=0 (y1y2)x(x1x2)y+x1y2x2y1=0 (化为一般式不用考虑斜率为0的情况)
直线到点的距离公式为:
机器人 pure pursuit,算法,机器学习,人工智能
我们可求得此路径两点所成的直线到圆心(0,0)的距离d,
d>l则没有交点
d=l则有且仅有一个交点
d>l则有两个交点
下面用向量法求当有交点的时候如何得到交点。
机器人 pure pursuit,算法,机器学习,人工智能
记AB为当前两路径点,其方向向量为 a ⃗ = ( x a , y a ) \vec{a} = (x_a,y_a) a =(xa,ya)
则与AB垂直的OC 方向向量为 b ⃗ = ( − y a , x a ) \vec{b}=(-y_a,x_a) b =(ya,xa)
可求得 O C ⃗ = d ∗ b ⃗ \vec{OC} = d* \vec{b} OC =db
机器人 pure pursuit,算法,机器学习,人工智能
∣ C E ⃗ ∣ = l 2 − d 2 \left| \vec{CE} \right| = \sqrt[ ]{l^2 - d^2} CE =l2d2
CE方向向量为: A B ⃗ ∣ A B ⃗ ∣ \frac{\vec{AB}}{ \left| \vec{AB} \right| } AB AB
则: C E ⃗ = l 2 − d 2 ∣ A B ⃗ ∣ A B ⃗ \vec{CE} = \frac{\sqrt[ ]{l^2 - d^2} }{ \left| \vec{AB} \right| } \vec{AB} CE =AB l2d2 AB
O E ⃗ = O C ⃗ + C E ⃗ \vec{OE} = \vec{OC} + \vec{CE} OE =OC +CE
同理可得 O F ⃗ \vec{OF} OF
得到的向量加上机器人的位置坐标即可得交点。

只取路径间的解

机器人 pure pursuit,算法,机器学习,人工智能
这种情况虽然直线与圆有两个交点,即有两个匹配点,但在算法中,我们只取在路径间线段的点。

  • 情况一:无交点
    机器人 pure pursuit,算法,机器学习,人工智能

  • 情况二:无交点
    机器人 pure pursuit,算法,机器学习,人工智能

  • 情况三:一交点
    机器人 pure pursuit,算法,机器学习,人工智能

  • 情况四:两交点
    机器人 pure pursuit,算法,机器学习,人工智能

匹配点的判断

机器人 pure pursuit,算法,机器学习,人工智能
这种情况下,两条线段我们都能寻得解,那哪个点跟合适?
很明显,我们需要参考机器人当前的位置,如果 机器人到路径点1的距离小于匹配点到路径点1的距离,则我们跟应该去寻找下一个点。
所有在我们的遍历循环中,找到匹配点之后,应该再加入当前位置和匹配点、路径点的判断,通过这个判断才能知道是否是真的匹配点。

机器人控制

不同的机器人运动学在这一步可能会有所不同,我在此举的是舵轮,需要输入速度方向和底盘角度,在此我输入的是速度方向和底盘角度
x c u r r r e n t − x m a t c h {x_{currrent}} -x_{match} xcurrrentxmatch,大小为定值1。

效果:

黄色为前瞻距离,红色小球为匹配点

舵轮纯跟踪 ROS2 Control Gazebo 仿真

引用

[1]: base pure pursuit
[2]: mathworks pure puresuit controller
[3]: autoware
[4]: pure pursuit papaer文章来源地址https://www.toymoban.com/news/detail-773561.html

到了这里,关于机器人纯跟踪算法 Base Pure Pursuit的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 目标检测与跟踪 (1)- 机器人视觉与YOLO V8

    目录 1、研究背景 2. 算法原理及对比  2.1 点对特征(Point Pairs)  2.2 模板匹配  2.3 霍夫森林  2.4 深度学习  3、YOLO家族模型演变 4、YOLO V8         机器人视觉识别技术 是移动机器人平台十分关键的技术,代表着 机器人智能化、自动化及先进性的条件判定标准 。  如何在

    2024年02月14日
    浏览(34)
  • MotoSimEG-VRC教程:安川机器人输送带同步跟踪

    目录 概述 机器人输送带同步跟踪功能注意事项 安川机器人虚拟系统创建 机器人与输送带通信接口配置 机器人输送带条件文件设置 输送带模型创建 输送带示教编程 机器人输送带同步跟踪指令介绍 机器人输送带同步跟踪示教编程 仿真运行 在现实应用中,有些工况需要安川

    2024年02月15日
    浏览(56)
  • RobotStudio教程:ABB机器人TCP路径轨迹跟踪功能介绍与使用方法

    目录 功能介绍 机器人工作站创建 TCP路径轨迹全局跟踪 基于事件管理器的TCP路径轨迹局部跟踪 基于Smart组件的TCP路径轨迹局部跟踪 仿真运行 干涉检查是虚拟仿真工作中非常重要的一个步骤,尤其是机器人工具与工件、工装夹具之间的碰撞干涉,更是重中之重。 在RobotStudio中

    2024年02月10日
    浏览(148)
  • 文献学习-16-基于MRI引导机器人平台的心导管形状跟踪和反馈控制(用于房颤消融)

    Shape Tracking and Feedback Control of Cardiac Catheter Using MRI-Guided Robotic Platform—Validation With Pulmonary Vein Isolation Simulator in MRI Authors: Ziyang Dong , Xiaomei Wang , Member, IEEE, Ge Fang , Zhuoliang He, Justin Di-Lang Ho , Chim-Lee Cheung, Wai Lun Tang, Xiaochen Xie , Member, IEEE, Liyuan Liang , Hing-Chiu Chang , Chi Keong Ching, and

    2024年03月11日
    浏览(33)
  • Pure-admin框架 Pure-table中获取所选中的内容的信息

    最近在尝试使用Pure-admin框架来进行开发,正好遇到了多选表格需要获取选中项的id的情况,因为平台介绍说是二次封装 element-plus 的 Table ,直接拿el-table的方法来试 在table上设置属性ref=\\\"multipleTableRef\\\" 出现了报错,原因是没找到方法getSelectionRows() 没有兼容方法,只能去看看框

    2024年01月18日
    浏览(45)
  • Solidity中的pure和view修饰符的区别是什么?什么时候添加pure和view修饰符?

    Solidity是一种用于编写智能合约的编程语言,它被广泛应用于以太坊区块链上的智能合约开发。在Solidity中,有两种函数修饰符,即“pure”和“view”,它们被用来指示函数的行为。这篇文章将深入探讨“pure”和“view”的含义,以及它们在Solidity中的应用。 “pure”是一种函数

    2024年02月09日
    浏览(33)
  • 使用mid360从0开始搭建实物机器人入门级导航系统,基于Fast_Lio,Move_Base

    本文原本只是自己在拿到mid360后,开始进行开发过程的一些问题和学习的记录。毕竟实物和仿真还是有很多不同,且由于碰到的问题也比较多,READEME也越来越详细,所以就干脆整合起来,做成了一篇使用mid360的搭建入门的导航系统全流程分享。里面用到的都是主流的开源的框

    2024年02月05日
    浏览(30)
  • ROS学习笔记08、机器人导航仿真(slam、map_server、amcl、move_base与导航消息介绍)

    马上开学,目前学校很多实验室都是人工智能这块,大部分都是和机器人相关,然后软件这块就是和cv、ros相关,就打算开始学习一下。 本章节是虚拟机安装Ubuntu18.04以及安装ROS的环境。 学习教程:【Autolabor初级教程】ROS机器人入门,博客中一些知识点是来源于赵老师的笔记

    2023年04月12日
    浏览(33)
  • 机器人控制算法——移动机器人横向控制最优控制LQR算法

    1.Introduction LQR (外文名linear quadratic regulator)即线性二次型调节器,LQR可得到状态线性反馈的最优控制规律,易于构成闭环最优控制。LQR最优控制利用廉价成本可以使原系统达到较好的性能指标(事实也可以对不稳定的系统进行整定) ,而且方法简单便于实现 ,同时利用 Matlab 强

    2024年02月04日
    浏览(36)
  • 说说过量 tcp pure ack 的利弊

    tcp 的 ack 实在太多了,如果互联网上 80% 报文是 tcp,那么其中 1/3 的报文都是 ack,此前写过几篇短文,比如 丢弃一些 pure ack 和 注入或利用 pure ack。 简单说,tcp 依靠 ack 提供 self-clock,发送 data 越多,ack 越多,如果 ack 与 data 不同步,将出现各种问题,详见 rfc2525-Stretch ACK

    2024年02月05日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包