Reeds-Shepp曲线基础运动公式推导过程
创始人
2024-05-09 11:46:36
0

   本文是对之前文章“Reeds-Shepp曲线学习笔记及相关思考【点击可跳转】”的补充,因小伙伴的提问,本文补充介绍上述文章第三部分中基础运动公式的推导过程。

   本文以上面的第一个公式为例进行介绍,即Reeds-Shepp曲线基础运动中的向前左转运动,其他五个可根据第一个的过程,以此类推。

   现假设机器人位于S点处横纵坐标分别为x、y,与x轴夹角为ψ,因此,机器人在S点的状态可以表示为(x,y,ψ),执行L+基础运动前行左转弧长t后,到达G点。求机器人在G点的状态,根据第一个公式可得G点的状态如下:。

   G:(x+sin⁡(ψ+t)−sin⁡(ψ),y−cos⁡(ψ+t)+cos⁡(ψ),ψ+t)G:\left(x+\sin(\psi+t)-\sin(\psi),y-\cos(\psi+t)+\cos(\psi),\psi+t\right)G:(x+sin(ψ+t)−sin(ψ),y−cos(ψ+t)+cos(ψ),ψ+t)

   现在我们来推导一下这个结果是怎么来的,为方便理解,我绘制了以下示意图,图中大写字母是为了方便对图中的边和角进行描述,图中的小写字母是角度。


   G点的第三个状态是与x轴的夹角,执行L+运动之前为ψ, 由于是向前左转,也就是逆时针运动,逆时针运动为正,又因为L+运动向前左转了弧长t,在之前的文章“Reeds-Shepp曲线学习笔记及相关思考【点击可跳转】”中已介绍过计算时会将最小转弯半径归一化为1,即上图中边FG和边FS的长度为1,弧长=弧长圆心角x半径,所以弧长t也对应转过的弧度制角度,因此G点与x轴的夹角为ψ+t

   接下来介绍稍微复杂一点的前两个状态的推导过程,由上图容易知道,G点的横纵坐标xg、ygx_g、y_gxg​、yg​满足下式:

   xg=x+GS∗cos ∠GSAyg=y+GS∗sin ∠GSA;x_g=x+GS*\text{cos ∠GSA} \hspace{1cm} y_g=y+GS*\text{sin ∠GSA} ; xg​=x+GS∗cos ∠GSAyg​=y+GS∗sin ∠GSA;

   所以我们只要求得边GS的长度和∠GSA即可求得xg、ygx_g、y_gxg​、yg​

   我们先来求边GS,现在我们已知∠GFS=t,边GF=边FS=1,由余弦公式c2=a2+b2−2abcos⁡γc^2=a^2+b^2-2ab\cos\gammac2=a2+b2−2abcosγ得,边GS的长度为:

   GS2=GF2+FS2−2∗GF∗FS∗cos ∠GFS=1+1−2∗cos t=2(1−cos t)GS^2=GF^2+FS^2-2*GF*FS*\text{cos ∠GFS}=1+1-2*\text{cos t}=2(1-\text{cos t})GS2=GF2+FS2−2∗GF∗FS∗cos ∠GFS=1+1−2∗cos t=2(1−cos t)

   由半角公式sin⁡α2=±1−cos⁡α2\sin\dfrac{\alpha}{2}=\pm\sqrt{\dfrac{1-\cos\alpha}{2}}sin2α​=±21−cosα​​得,上式可化为:

   GS2=2(1−cos t)=4∗sin⁡2t2GS^2=2(1-\text{cos t})=4*\sin^{2}\frac{t}{2}GS2=2(1−cos t)=4∗sin22t​
   所以:

   GS=4∗sin⁡2t2=2∗sint2GS=\sqrt{4∗\sin^{2}\frac{t}{2}}=2*sin\frac{t}{2}GS=4∗sin22t​​=2∗sin2t​


   我们再来求∠GSA,过程如下:
   ∠GSC=(π–∠GCS)/ 2 = (π–(π–t))/ 2=t2\text{∠GSC=(π--∠GCS)/ 2 = (π--(π--t))/ 2}= \frac{t}{2}∠GSC=(π–∠GCS)/ 2 = (π–(π–t))/ 2=2t​

   ∠GSA=∠GSC+∠CSA=t2+ψ\text{∠GSA=∠GSC+∠CSA}= \frac{t}{2}+ψ∠GSA=∠GSC+∠CSA=2t​+ψ


   将求得的边GS和∠GSA带入,可得G点的横纵坐标xg、ygx_g、y_gxg​、yg​的表达式:

   xg=x+GS∗cos ∠GSA=x+2∗sint2∗cos⁡(t2+ψ)x_g=x+GS*\text{cos ∠GSA} =x+ 2*sin\frac{t}{2} *\cos \left(\frac{t}{2}+\psi\right) xg​=x+GS∗cos ∠GSA=x+2∗sin2t​∗cos(2t​+ψ)

   yg=y+GS∗sin ∠GSA=y+2∗sint2∗sin⁡(t2+ψ)y_g=y+GS*\text{sin ∠GSA}=y+ 2*sin\frac{t}{2} *\sin \left(\frac{t}{2}+\psi\right) yg​=y+GS∗sin ∠GSA=y+2∗sin2t​∗sin(2t​+ψ)

   最后再运用一下如下所示的积化和差公式:

   利用积化和差公式,我们可以对xg、ygx_g、y_gxg​、yg​的表达式进一步化简,如下:

   xg=x+2∗sint2∗cos⁡(t2+ψ)=x+sin(t2+t2+ψ)+sin(t2−t2−ψ)=x+sin(t+ψ)−sin(ψ)x_g=x+ 2*sin\frac{t}{2} *\cos \left(\frac{t}{2}+\psi\right)=x+sin(\frac{t}{2} +\frac{t}{2}+ψ)+sin(\frac{t}{2} -\frac{t}{2}-ψ)=x+sin(t+ψ)-sin(ψ)xg​=x+2∗sin2t​∗cos(2t​+ψ)=x+sin(2t​+2t​+ψ)+sin(2t​−2t​−ψ)=x+sin(t+ψ)−sin(ψ)

   yg=y+2∗sint2∗sin⁡(t2+ψ)=y+cos(t2−t2−ψ)−cos(t2+t2+ψ)=y−cos(t+ψ)+cos(ψ)y_g=y+ 2*sin\frac{t}{2} *\sin \left(\frac{t}{2}+\psi\right) =y+cos(\frac{t}{2} -\frac{t}{2}-ψ)-cos(\frac{t}{2} +\frac{t}{2}+ψ)=y-cos(t+ψ)+cos(ψ) yg​=y+2∗sin2t​∗sin(2t​+ψ)=y+cos(2t​−2t​−ψ)−cos(2t​+2t​+ψ)=y−cos(t+ψ)+cos(ψ)


   到这里,我们已经得到了推导前给出的G点的状态表达式:

   G:(x+sin⁡(ψ+t)−sin⁡(ψ),y−cos⁡(ψ+t)+cos⁡(ψ),ψ+t)G:\left(x+\sin(\psi+t)-\sin(\psi),y-\cos(\psi+t)+\cos(\psi),\psi+t\right)G:(x+sin(ψ+t)−sin(ψ),y−cos(ψ+t)+cos(ψ),ψ+t)

   也就是,文章开头处给出的第一个Reeds-Shepp曲线的基础运动公式:

   Lt+(x,y,ψ)=(x+sin⁡(ψ+t)−sin⁡(ψ),y−cos⁡(ψ+t)+cos⁡(ψ),ψ+t)L_t^+(x,y,\psi)\quad=\big(x+\sin(\psi+t)-\sin(\psi),y-\cos(\psi+t)+\cos(\psi),\psi+t\big)Lt+​(x,y,ψ)=(x+sin(ψ+t)−sin(ψ),y−cos(ψ+t)+cos(ψ),ψ+t)

   恭喜小伙伴们(✪ω✪),到这里也就证明,或者说推导就完毕了,有兴趣的小伙伴,可以以此为例子,进行其余五个Reeds-Shepp曲线基础运动公式的推导(ง •_•)ง


相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...