设计从A点到B点的道路,并使其曲率半径最小

时间:2019-02-07 11:16:56

标签: python optimization vector curve-fitting smoothing

建议一条道路通过(n)x,y,z个点。我试图找到从A点到Z点的最小平滑曲线,同时保持最小曲率半径。

我能够找到两点之间的平滑线,但不能将曲率限制为一定的曲率半径。

例如,在下图中,平滑线经过了短的曲率半径或高的曲率度,这在物理上是不可能的。如何使此转弯的曲率半径更长?

我对编程还比较陌生,因此尝试了以下代码。这些点表示点A,直到点Z之间的点。

enter image description here

points=[[3.08066667,3.25593333,-1.49958947],[3.08066667,3.25669780,-1.49898697],[3.08066667,3.25746226,-1.44859092],[3.08066667,3.25822673,-1.39266809],[3.08066667,3.25899119,-1.35914138],[3.08066667,3.25975565,-1.26570602],[3.08066667,3.26052012,-1.09785688],[3.08066667,3.26128458,-1.15140859]]  


Smooth = np.array(points)

x, y = Smooth.T
i = np.arange(len(Smooth))


interp_i = np.linspace(0, i.max(), 100 * i.max())
xi = interp1d(i, x, kind='cubic')(interp_i)
yi = interp1d(i, y, kind='cubic')(interp_i)
ax.plot(xi, yi, color='black',linewidth=2)

期望的结果是在不同的最小曲率半径下获得第一点[0]至点[n]之间的最小距离。为了获得最小曲率半径,在整个长度(例如1000米)上规定了一个曲率度(例如40度或60度)。可以调整点0和n之间的点以返回最小平滑线。

感谢您的帮助。

0 个答案:

没有答案