缓和曲线 |
您所在的位置:网站首页 › 公路曲线参数 › 缓和曲线 |
回旋曲线的计算
下午打算计算验证一下回旋曲线公式,想偷个懒从网上down个代码对比验证,但未检索到现成代码。关于回旋曲线离散点(x,y)的计算分析众多,但介绍并不详细,甚至公式和计算方法也都不同。为不枉费半天的查询、验证工作,也为方便同仁参考,本文介绍基础的回旋线计算过程及代码,本次计算未涉及坐标变换。 1、什么是回旋线本部分可忽略不看,直接看第二部分‘’回旋线的计算‘’。 缓和曲线指的是平面线型中,在直线与圆曲线、圆曲线与圆曲线之间设置的曲率连续变化的曲线。缓和曲线的线型多种多样,如回旋线、三次抛物线、七次四项式型、半波正弦型、一波正弦型、双纽线、多心复曲线…… 铁路上常用的缓和曲线是三次抛物线型。公路、匝道常用的缓和曲线是回旋线,也叫放射螺旋线。回旋线不仅线形美观,而且与驾驶员匀速转动方向盘由圆曲线驶入直线或者由直线驶入圆曲线的轨迹线相符合。 回旋线的本质特征是: 回旋线的计算主要依照以下公式进行,主要在于清晰公式中的变量定义。 2.1、计算公式:回旋曲线上任意点坐标计算公式: 根据公式,假定我们现在需要一条回旋线,(1)起点位置的曲率为0,(2)终点位置的曲率为 1/Rmin,Rmin为终点位置的曲率半径,(3)回旋线的长度为2m。 则, a = (0 - (1/Rmin)) / 2; 此时将a,l带入公式得到是回旋线最后一个点的x,y值。如何得到整条回旋线的x,y值呢?根据计算任意点的公式,我们将回旋线长度l离散化。0~L之间均匀取若干个值,a不变,带入计算公式即可得近似整条回旋线的x,y值。 在MATLAB中实现的具体计算过程: main.m %% 调用 clothoid函数,并将终点位置的曲率半径设置为 0.1:0.2:3 for i = 0.1:0.2:3 clothoid(i) endclothoid.m %%%% 计算回旋曲线,并绘图 function [] = clothoid(Rmin) N = 100; %% sk = 2; %% 曲线长 c = 1 / Rmin / sk; %% 曲率变化率,即上文中的曲率变化率 a x = zeros(1,N); y = zeros(1,N); for sk_i = sk / N : sk / N : sk result_x = 0; %% 初始化x坐标点的值 result_y = 0; %% 初始化y坐标点的值 for i = 0 : N %% 计算x result_x = result_x + ((-1) ^ i) * (c ^ (2 * i)) * (sk_i ^ (4 * i + 1)) / ((2 ^ (2 * i)) * (4 * i + 1) * fctorial(2 * i)); end x(int32(sk_i / sk * N)) = result_x; for i = 0 : N %% 计算y result_y = result_y + ((-1) ^ i) * (c ^ (2 * i + 1)) * (sk_i ^ (4 * i + 3)) / ((2 ^ (2 * i + 1)) * (4 * i + 3) * fctorial(2 * i + 1)); end y(int32(sk_i / sk * N)) = result_y; end hold on; plot(-x,-y); hold on; plot(-x(end),-y(end),'*'); %%回旋曲线的最后一个点 axis equal; endfctorial.m %% 阶乘函数 function y = fctorial(x) n = 1; for i = 1 : x n = n * i; end y = n ; end得到的结果为: 参考文献: 百度百科——缓和曲线 基于回旋曲线的平行泊车路径规划 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |