【路径规划】Dubins路径

news2024/9/30 15:23:16

简介

在无障碍物的情况下,路径规划中最简单的形式,就是将路径看作是由直线段和常曲率圆弧段组成,这就是Dubins路径。Dubins路径可以简单的理解为:在最大曲率限制下,平面内两个由方向的点间的最短可行路径是 CLC 路径或 CCC 路径(C表示圆弧段,L表示直线段,CLC表示先圆弧,后直线,后圆弧)。

Dubins路径总体来说有三种基本类型,其他的可以由这三种进行组合:

1)LSL型:表示左转、直行、左转的路径,其中第一个和第三个段为左转圆弧,中间段为直线段;

2)RSR型:表示右转、直行、右转的路径,其中第一个和第三个段为右转圆弧,中间段为直线段;

3)LSR型:表示左转、直行、右转的路径,其中第一个段为左转圆弧,中间段为直线段,第三个段为右转圆弧。

L表示向左转,R表示向右转。

在给定位姿的情况下,无人机可以向左或向右转,也就是弧线段的逆时针与顺时针转。关于转弯的方向,在上面的三种基本类型中,计算时的基本计算方法,一般是以下两种:

1)含有外公切线的两个带有方向的点,不能切换转弯的方向,也就是说起始点是向右,那终止点也是向右;

2)含有内公切线的两个带有方向的点,需要切换转弯方向,如果起始点是向右,则终止点是向左。

外公切线解法与内公切线解法。

两个带有方向的点在圆弧段如果要旋转的方向是相同的,则含有外公切线,如果圆弧段的旋转方向是不同的,则含有内公切线,如下图所示:

含有外公切线的两路径点,直线段路径与弧线段两圆心的连线线段不交叉,而含有内外公切线的两路径点,直线段路径与弧线段两圆心的连线线段交叉。

外公切线解

如果起始点与终止点使用的是外公切线的方式,那么要求解路径数据可按以下步骤:

1)根据运动约束,转弯半径等确定两圆弧段的半径R1,R2

2)根据起始点坐标以及起始点航向角度,转弯半径,计算起始弧线圆的圆心 O1 坐标

3)根据终止点坐标以及终止点航向角度,转弯半径,计算终止弧线圆的圆心 O2 坐标

4)计算起始圆与终止圆的切线角度

5)计算直线段的起始点与终止点坐标

这些步骤中,第4步求解切线角度会复杂一些,以下是求解过程的示意图:

1.根据起始角度α,可以求解出起始点 P1 与左侧圆心 O1 的夹角 b,∠b = ∠α ± 90°

2.之后根据角 b ,起始点 P1 以及左侧圆半径 R1,可以求解出 O1 坐标,右侧圆心 O2 坐标也可以用相同求法

3.做一个辅助圆在右侧圆 O2 上,半径是 abs(R2 - R1) ,与圆 O2 是同心圆,作一个辅助线,辅助线是辅助圆的切线,另一端连接左侧圆心 O1

4.切出点Px 与 切入点 Pn 的连线就是直线段,直线段与第 3 步做的辅助线是平行的

5.辅助圆的半径已知,为 |R2 - R1|,左右两圆的距离 d1 可以根据 O1 与 O2 的坐标计算得出,因此可以求解出 O1 到辅助圆的切线相对于 d1 的角度 a,∠a = arcsin(( |R2 - R1| ) / d1) (单位:角度)

6.根据O1,O2的坐标可以计算两者连线的角度 c,∠c = arctan( (O2.y - O1.y) / (O2.x - O1.y) )

7.根据角a,c,就可以计算出 Px 的角度 e,∠e = ∠a + ∠c + 90°

8.之后就可以计算出点 Px的坐标,Px.x = O1.x + R1 * cos(∠e) Px.y = O1.y + R1 * sin(∠e)

9.求解出了 Px 的坐标,并且已知直线段长度 d2,以及d2 的角度 ∠a+∠c,就可以计算出切入点 Pn 的坐标。

内公切线解

内公切线的情况求解路径数据的步骤与外切线解类似,也是一样的步骤,只是细节有些不同。

求解内公切线也是需要画一个辅助圆来辅助求解,不过辅助圆的半径是 R1 + R2,示意图如下:

1.根据起始点 P1 的坐标,起始角度,左圆的半径 R1,就可以求出左圆的圆心 O1 的坐标,∠e = ∠α ± 90°,O2的坐标同理求得

2.作一个辅助圆,以 O2 为圆心,半径为 R1 + R2,连接 O1 点与其在辅助圆上的切线点,记作 d2,d2与直线段 Px-Pn 平行

3.O1 与 O2 之间的距离可以计算出来,记作 d1,那么角 a 就可以计算出来 ∠a = arcsin( (R1+R2) / d1 ),d2也可以一起求解得出

4.角 b 可以通过 O1 与 O2 的坐标计算得出 ∠b = arctan( (O2.y - O1.y) / (O2.x - O1.y) )

5.∠c = 90° - ∠a,之后就可以求解出切出点 Px 的角度 = ∠c + ∠b

6.得到 Px 的角度,圆心 O1 的坐标,半径 R1,就可以求解出 Px 的坐标,之后已知 d2 的角度(∠a - ∠b),d2的长度,就可以求解出切入点 Pn 的坐标

最终路径的选取

通常情况下,给定起始点以及起始角度,终止点以及终止角度,最多可以有四种路径方式可以完成目标,我们选取其中距离最短的即可,示意图如下:

求解四种可行路径,计算其路径长度,之后取最小值,得到最终的路径。

如果起始点与终止点的角度都是自由的,则会产生更多的路径,最多有16条,此时计算量就比较大,也是同样的思路,计算所有可行路径的长度,取最小值。

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

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

相关文章

[STM32F103C8T6]基于LCD和DHT11、HC08的温湿度检测系统并上传服务器

项目实际图 本次项目需要整合LCD1602、DHT11、HC08、继电器 1.首先是LCD1602显示程序 封装管脚,这样的话写时序的时候不用随时都在哪儿HAL_GPIO_WritePin #define RS_GPIO_Port GPIOB #define RW_GPIO_Port GPIOB #define EN_GPIO_Port GPIOB #define RS_Pin GPI…

PP模块-生产主数据之一-物料主数据

物料主数据的配置主要在 MM 模块中进行管理,一般由MM顾问或MDM的顾问负责流程梳理、规则讨论、并主导完成数据收集工作。所以在SAP系统项目的实施过程中,根据系统对物料主数据数特有的配置对象要求,与业务负责人进行讨论并达成一致&#xff0…

FreeRTOS如何解决访问冲突/线程不安全(临界段、互斥锁、挂起调度、看门人任务)

在多任务(多线程)系统中,存在一个隐患,那就是多线程的访问(在FreeRTOS中就是任务)。当一个任务A开始访问一个资源(外设、一块内存等),但是A还没有完成访问,B任…

精通 TensorFlow 2.x 计算机视觉:第二部分

原文:Mastering Computer Vision with TensorFlow 2.x 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,…

【RabbitMQ学习日记】—— 再见RabbitMQ

一、发布确认高级篇 在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复如何才能进行 RabbitMQ 的消息可靠投递呢? 特别是在这样比较极端的情…

MYSQL:数据类型与运算符、MySQL函数

一.部分需要学会的操作(以举例形式列出): insert into tmp15 values(This is good,50); /*向tmp15插入note 为 “This is good”,price为50的元素*/ 注:需要严格对应字段和元素属性的位置 select * from tmp15 /*查…

【Diffusion Model】Learning notes

来自 扩散模型 Diffusion Model 1-1 概述 扩散模型是什么? 本质是生成模型,拟合目标分布,然后生成很多数据符合这个分布 训练测试阶段? 和 GAN 相比优势是什么? generator 和 discriminator 两者都得训练的比较均衡…

JDK8到JDK17有哪些吸引人的新特性?

作者:京东零售 刘一达 前言 2006年之后SUN公司决定将JDK进行开源,从此成立了OpenJDK组织进行JDK代码管理。任何人都可以获取该源码,并通过源码构建一个发行版发布到网络上。但是需要一个组织审核来确保构建的发行版是有效的, 这个组织就是J…

Excel VBA 之Interior 对象设置底色

Interior 对象 代表一个对象的内部 针对interior对象,我们用得最多的是它的颜色,下面就来讨论一下。 1.ColorIndex 索引颜色值 Sub 索引颜色值()For i 1 To 56Cells(i, 1).Interior.ColorIndex iCells(i, 2) iNext iFor i 1 To 56Cells(i, 3).Interi…

算法训练第六十天 | 84.柱状图中最大的矩形

单调栈part0384.柱状图中最大的矩形题目描述思路暴力解法双指针解法单调栈84.柱状图中最大的矩形 题目链接:84.柱状图中最大的矩形 参考:https://programmercarl.com/0084.%E6%9F%B1%E7%8A%B6%E5%9B%BE%E4%B8%AD%E6%9C%80%E5%A4%A7%E7%9A%84%E7%9F%A9%E…

《Kubernetes部署篇:Ubuntu20.04基于containerd二进制部署K8S 1.24.12集群(一主多从)》

一、架构图 如下图所示: 如下图所示: 二、环境信息 1、部署规划 主机名IP地址操作系统内核版本软件说明etcd01192.168.1.62Ubuntu 20.04.5 LTS5.15.0-69-genericetcdetcd02192.168.1.63Ubuntu 20.04.5 LTS5.15.0-69-genericetcdetcd03192.168.1.64Ubunt…

kettle链接mysql Public Key Retrieval is not allowed

kettle 报错信息页面: 出现 Public Key Retrieval 的场景可以概括为在禁用 SSL/TLS 协议传输切当前用户在服务器端没有登录缓存的情况下,客户端没有办法拿到服务器的公钥。具体的场景如下: 新建数据库用户,首次登录;数…

课程推荐 | 机器视觉与边缘计算应用

点击蓝字关注我们,让开发变得更有趣文案 | 李擎排版 | 李擎文案来源 | https://www.icourse163.org/course/FUDAN-1456632162OpenVINO™╱ 前言 ╱机器视觉是目前人工智能重要的应用领域,在很多领域都有丰富的成功应用案例。其中深度学习的目标检测算法是非常实用的…

ubuntu(20.04)-shell脚本(1)-基本概念

目录 1.概述 2.shell脚本调用形式 3.shell语法初识 3.1 定义以开头:#!/bin/bash 3.2 单个“#”号代表注释当前行 4.变量 4.1 只读变量 4.2 环境变量: env 4.3 预测变量: 4.4 变量扩展: 是否存在,字符串…

通过JMH框架 测试公平锁与非公平锁的性能(附测试代码和源码分析)

目录 先上测试代码: 上依赖: 输出结果:(注意不要debug运行,直接运行代码,否则报错) 源码-公平锁的 lock 方法: 源码-非公平锁的lock方法: 总结 非公平锁和公平锁的两处不同: …

docker入门之一:docker基础概念与安装

1. Docker简单介绍 1.1. 什么是docker?1.2. Docker和传统虚拟机1.3. 为什么使用docker1.4. docker架构 2. Docker安装 2.1. docker版本命名2.2. docker安装2.3. docker卸载2.4. docker镜像加速器 1. Docker简单介绍 1.1. 什么是docker? google go语言…

24-Tomcat

目录 1.Tomcat是什么? 2.版本号 3.下载 4.目录介绍 4.1.bin目录 4.2.conf目录 4.3.logs目录 4.4.webapps目录 5.启动服务器 PS:解决Tomcat乱码问题 PS:Tomcat点击启动,控制台一闪而过,啥也没有解决方案 PS…

【花雕学AI】4月5日,ChatGPT中国财经背景分析:昨天沪指重返3300点,这说明了什么?

在这里插入图片描述 附录: 一、ChatGPT是一个可以和你聊天的人工智能程序,它可以用文字回答你的问题,也可以根据你的提示写出文章、歌词、代码等内容。ChatGPT是由一个叫OpenAI的机构开发的,它使用了一种叫做GPT的技术&…

TCP协议的相关特性(续)

TCP协议的相关特性🔎滑动窗口🔎流量控制🔎拥塞控制🔎延时应答🔎捎带应答🔎面向字节流(粘包问题)🔎异常情况🔎总结关于 确认应答 超时重传, 连接管理 请参考: 点击这里 &#x1f50e…

IT知识百科:什么是基站?

一、基站介绍 基站(Base Station),也称为基站站点或基站设备,是无线通信网络中的关键设备之一。基站用于与移动设备(如手机、无线网卡等)进行通信和数据传输,实现无线通信覆盖。 二、基站的功…