繁体   English   中英

Python中数据点的曲线弧长

[英]Arc length of curve from data points in Python

我正在做一个机器人模拟,并试图计算机器人沿着一些计划的轨迹与目标的距离。 避开障碍物的轨迹曲线,由坐标列表给出。 要找到进度,我需要找到从当前位置到目标的弧长。 我熟悉函数弧长的方程: 在此处输入图像描述

我计划使用的方法是使用 NumPy 的 polynomial.polyfit 从数据点创建轨迹函数的多项式近似,然后找到它的导数,平方,加 1,取平方根,最后积分。 但是,多项式的平方根并不总是存在,因此这种方法并不总是有效。

有没有更好的方法来解决这个问题? 我熟悉数值积分,但不确定它是否/如何应用于这个问题。

编辑:想出了如何以数字方式执行此操作,这要快得多。 使用 numpy.gradient/numpy.diff 计算数值导数,将该导数中的每个元素插入 sqrt(1 + (dy/dx)^2),然后使用 numpy.trapz/scipy.integrate.simpson 数值计算积分。

您的机器人将如何从一个点移动到另一个点?

如果它是一条直线就足够了

np.sum(np.sqrt(np.diff(x)**2 + np.diff(y)**2))

如果不是,您应该首先弄清楚您的机器人将遵循的路径。 然后有了这些方程,您可以分析积分或曲线中的采样点。 对于平滑路径,尺寸误差往往为O(1/n^2) ,其中 n 是您在插值中使用的点数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM