基于几何关系的车辆轨迹计算


一、基于地面坐标系建模

如下图所示,车辆运动轨迹的计算建立在地面坐标系 O 1 X 1 Y 1 O_1X_1Y_1 O1X1Y1上。
定义车辆的 t 1 t_1 t1时刻的位置为 ( x 1 , y 1 ) (x_1,y_1) (x1,y1),偏航角为 ψ 1 \psi_1 ψ1 t 2 t_2 t2时刻车辆位置为 ( x 2 , y 2 ) (x_2,y_2) (x2,y2),偏航角为 ψ 2 \psi_2 ψ2
定义车辆转弯半径表示为 R R R,正值代表左转,负值代表右转。
定义车辆旋转中心点表示为 ( x 0 , y 0 ) (x_0,y_0) (x0,y0),如果向左行驶,旋转中心点落在车身左侧,如果向右行驶,旋转中心点落在车身右侧。
定义 R 01 R_{01} R01 X X X轴和 Y Y Y轴上的投影分别为 H 1 H_1 H1 L 1 L_1 L1 R 02 R_{02} R02 X X X轴和 Y Y Y轴上的投影分别为 H 2 H_2 H2 L 2 L_2 L2
假设车辆在 Δ t \Delta t Δt内的速度为 V V V,正值代表向前行驶,负值代表向后行驶,车辆在短时间内可以看作是匀速运动。


在这里插入图片描述


二、角度关系

假设车辆右向前行驶,则 V V V为正值, R R R为负值
ψ 2 = ψ 1 + Δ ψ \psi_2 = \psi_1 + \Delta\psi ψ2=ψ1+Δψ
其中 Δ ψ \Delta\psi Δψ计算如下:
Δ ψ = V ∗ Δ t R \Delta\psi = \frac{V*\Delta t }{R} Δψ=RVΔt

Δ ψ \Delta\psi Δψ为负值,及 ψ 2 < ψ 1 \psi_2 < \psi_1 ψ2<ψ1


三、计算投影

考虑到上述假设车辆往右侧行驶,及 R R R为负值,故需加上“ − - ”号以代表投影距离值。
计算 R 01 R_{01} R01 X X X轴和 Y Y Y轴的投影:
L 1 = − R ∗ sin ⁡ ( ψ 1 ) H 1 = − R ∗ cos ⁡ ( ψ 1 ) L_1 = -R*\sin(\psi_1)\\ H_1 = -R*\cos(\psi_1) L1=Rsin(ψ1)H1=Rcos(ψ1)
计算 R 02 R_{02} R02 X X X轴和 Y Y Y轴的投影:
L 2 = − R ∗ sin ⁡ ( ψ 2 ) H 2 = − R ∗ cos ⁡ ( ψ 2 ) L_2 = -R*\sin(\psi_2)\\ H_2 = -R*\cos(\psi_2) L2=Rsin(ψ2)H2=Rcos(ψ2)


四、计算车辆位置

x 2 = x 1 + L 1 − L 2 y 2 = y 1 + H 2 − H 1 x_2 = x_1 + L_1 - L_2\\ y_2 = y_1 + H_2 - H_1 x2=x1+L1L2y2=y1+H2H1
带入得:
x 2 = x 1 + R ∗ ( sin ⁡ ( ψ 2 ) − sin ⁡ ( ψ 1 ) ) y 2 = y 1 + R ∗ ( cos ⁡ ( ψ 1 ) − cos ⁡ ( ψ 2 ) ) x_2 = x_1 + R * (\sin(\psi_2) - \sin(\psi_1))\\ y_2 = y_1 + R * (\cos(\psi_1) - \cos(\psi_2)) x2=x1+R(sin(ψ2)sin(ψ1))y2=y1+R(cos(ψ1)cos(ψ2))


五、考虑相邻两个时刻的转弯半径不同的情况

假设相邻两个时刻的转弯半径分别为 R 1 R_1 R1 R 2 R_2 R2
计算 R 1 R_{1} R1 X X X轴和 Y Y Y轴的投影:
L 1 = − R 1 ∗ sin ⁡ ( ψ 1 ) H 1 = − R 1 ∗ cos ⁡ ( ψ 1 ) L_1 = -R_1*\sin(\psi_1)\\ H_1 = -R_1*\cos(\psi_1) L1=R1sin(ψ1)H1=R1cos(ψ1)
计算 R 2 R_{2} R2 X X X轴和 Y Y Y轴的投影:
L 2 = − R 2 ∗ sin ⁡ ( ψ 2 ) H 2 = − R 2 ∗ cos ⁡ ( ψ 2 ) L_2 = -R_2*\sin(\psi_2)\\ H_2 = -R_2*\cos(\psi_2) L2=R2sin(ψ2)H2=R2cos(ψ2)
根据几何关系
x 2 = x 1 + L 1 − L 2 y 2 = y 1 + H 2 − H 1 x_2 = x_1 + L_1 - L_2\\ y_2 = y_1 + H_2 - H_1 x2=x1+L1L2y2=y1+H2H1
带入得
x 2 = x 1 − R 1 ∗ sin ⁡ ( ψ 1 ) + R 2 ∗ sin ⁡ ( ψ 2 ) y 2 = y 1 + R 1 ∗ cos ⁡ ( ψ 1 ) − R 2 cos ⁡ ( ψ 2 ) x_2 = x_1 - R_1 * \sin(\psi_1) + R_2 * \sin(\psi_2)\\ y_2 = y_1 + R_1 * \cos(\psi_1) - R_2\cos(\psi_2) x2=x1R1sin(ψ1)+R2sin(ψ2)y2=y1+R1cos(ψ1)R2cos(ψ2)

### 使用霍夫变换实现车辆轨迹线检测 #### 车道线检测的重要性 在自动驾驶领域,车道线检测对于帮助车辆感知道路环境并作出相应驾驶决策至关重要。通过识别道路边缘和中心线的位置,可以有效提高行车安全性。 #### 霍夫变换原理概述 霍夫变换是一种广泛应用于计算机视觉领域的特征提取工具,主要用于从二值化后的图像中寻找特定几何形状的对象,如直线、圆等。该方法由Paul V.C. Hough于1962年首次提出,并逐渐发展成为一种强大的模式识别手段[^1]。 #### 基本流程描述 为了利用霍夫变换来完成车辆行驶路径上的轨迹线条定位任务,通常遵循以下几个方面的工作: - **预处理阶段** 对原始摄像头采集到的道路场景彩色图片执行灰度转换、高斯模糊滤波以及Canny边缘探测等一系列操作,从而获得只保留显著轮廓信息的新图样。 - **应用霍夫变换** 将上述得到的结果作为输入传递给标准形式下的极坐标系内表示的霍夫空间累加器阵列,在此过程中计算每条候选边沿对应参数的概率分布情况;当某个位置处累积计数值超过设定阈值时,则认为存在一条真实的轨迹线段。 - **筛选与分类** 经过初步判定之后还需进一步过滤掉不符合实际路况逻辑关系(比如平行间距太近或者倾斜角度异常)的部分假阳性结果,并最终依据所剩少数几组数据确定当前时刻下汽车应采取何种转向动作——向左还是继续前行。 ```matlab % MATLAB代码片段展示部分核心功能 function lines = detectLaneLines(imagePath) % 加载测试用例图像文件 img = imread(imagePath); % 图像预处理:转为灰度图 -> 应用Gaussian平滑去噪-> Canny算子找边界 grayImg = rgb2gray(img); blurredGrayImg = gaussianFilter(grayImg, sigma=1.5); edges = edge(blurredGrayImg,'canny',[0.1, 0.2]); % 执行Hough变换找出可能存在的直线集合 [H,T,R] = hough(edges); peaks = houghpeaks(H, 'threshold', ceil(0.3*max(H(:)))); lines = houghlines(edges,T,R,peaks); end ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

henry.zhu51

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

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

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

打赏作者

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

抵扣说明:

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

余额充值