基础函数-圆弧路径生成-圆弧插值

圆弧轨迹的生成在泊车几何路径规划的领域中出现,在其他的路径规划的领域中应用不多,在泊车规划中常常是已知车辆的行驶方向、方向盘转角方向、方向盘转角大小、行驶距离这几个量,求出车辆行驶的圆弧上的离散点坐标或者行驶轨迹,这里面涉及的内容有如何获取车辆行驶的圆心坐标、如何将方向盘转角转为前轮转角以及如何插值出圆弧上的每个点,第二个问题单独讨论,本文介绍其余两个问题。

根据方向盘转角方向、大小计算转向中心

由下图可以得到,左转前进或者后退时:
o.x=p.x-|op|*sin(t);
o.y=p.y+|op|*cos(t);
在这里插入图片描述

右转前进或者后退时:
o.x=p.x+|op|*sin(t);
o.y=p.y-|op|*cos(t);

一点绕一点旋转一定角度后得到新的点

cos(α+β)=(p0.x-o.x)/R;
sin(α+β)=(p0.y-o.y)/R;
cos(β)=(p1.x-o.x)/R;
sin(β)=(p1.y-o.y)/R;
p1.x=o.x+(p0.x-o.x)*cos(α)-(p0.y-o.y)*sin(α);
p1.y=o.y+(p0.x-o.x)*sin(α)+(p0.y-o.y)*cos(α);
在这里插入图片描述

角度α的正负代表旋转的方向,逆时针为正,顺时针为负值。

泊车圆弧轨迹生成

圆弧轨迹的生成主要是根据车辆的行驶方向和方向盘转角方向、行驶的曲率(转弯半径)以及行驶距离或者角度变化来确定圆弧轨迹的中间点的过程。主要的计算逻辑是根据行驶方向和方向盘转角的方向确定旋转角度的正负,例如左转前进是逆时针旋转,左转后退是顺时针旋转,右转前进是顺时针旋转,右转后退时逆时针旋转,这样我们就确定了旋转角度的正负了。
例如左转前进,是逆时针方向,假设已知行驶方向和方向盘转角方向、转弯半径r以及行驶距离,那么就可将行驶距离按照步长step_size均分为num个点,每两个个点之间的旋转角度为step_size/r,那么就可以根据一点绕一点旋转一定角度后得到新的点的公式得到中间所有点的坐标。

// Steering direction
#define STEERING_LEFT (1)
#define STEERING_RIGHT (-1)

// Running direction
#define FORWARD (1)
#define BACKWARD (-1)
     typedef struct _Point3d_
    {
   
        double x;
        double y;
        double yaw;
        _Point3d_() : x(0), y(0), yaw(0) {
   }
        _Point3d_(double a, double b) : x(a), y(b) {
   }
        _Point3d_(double a, double b,
  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈喽汽车人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值