我正在进行机器人模拟,并试图计算机器人沿着计划的轨道距离目标的距离。轨迹曲线是为了避免障碍物,它是由一个坐标列表给出的。要找到进展,我需要找到从当前位置到目标的弧长。我熟悉函数的弧长方程:

我计划使用的方法是用NumPy的polynomial.polyfit从数据点创建轨迹函数的多项式近似,然后找到它的导数,乘以1,取平方根,最后积分。然而,多项式的平方根并不总是存在的,所以这种方法并不总是有效的。
有什么更好的方法来解决这个问题吗?我对数值积分很熟悉,但不确定它是否/如何应用于这个问题。
编辑:弄清楚了如何在数字上做到这一点,这样做要快得多。使用numpy.grade/numpy.diff计算数值导数,将该导数中的每个元素插入sqrt(1 + (dy/dx)^2),然后使用numpy.trapz/sciy.Integrate.simson计算积分。
发布于 2022-05-26 08:26:26
你的机器人将如何从一个点移动到另一个点?
如果是一条直线,那就足够了。
np.sum(np.sqrt(np.diff(x)**2 + np.diff(y)**2))
如果没有,你应该先弄清楚你的机器人会走哪条路。有了这些方程,你就可以解析地积分,或者曲线上的取样点。对于光滑路径,大小上的误差往往是O(1/n^2),其中n是您在插值中使用的点数。
https://stackoverflow.com/questions/72386899
复制相似问题