【问题标题】:How do I connect a curve of fixed length between two points in space using Matlab?如何使用Matlab在空间中的两点之间连接一条固定长度的曲线?
【发布时间】:2009-10-03 05:00:02
【问题描述】:

我们在 3d 空间中有两个点 (x1,y1,z1) 和 (x2,y2,z2)。我们有一条固定长度的曲线,要在这些点之间连接(不是直线)。 Matlab中的代码如何继续?

【问题讨论】:

  • 你的问题对我来说没有意义...连接两点之间的曲线是什么意思?
  • 我们实际上是在为可变形的线性物体(蛇形机器人)规划起点和终点之间的路径。上面提到的两个是开始和目标配置,我们必须规划这些点之间的路径。蛇形机器人的长度是固定的。
  • 如果两个点正好或大于指定长度怎么办?从技术上讲,一条线是一种曲线。此外,即使不是数千种曲线类型,也有数百种。你喜欢哪一个?
  • 我们希望起点和目标点之间的能量曲线最小。我们在一个固定体积内规划路径,曲线长度总是大于长方体的对角线 sqrt(x^2+y^2+z^2),所以点不能用直线连接。
  • 你的问题比较模糊。如果您可以添加更多细节,特别是您可能已经开始编写的任何代码的示例,将会有所帮助。

标签: matlab


【解决方案1】:

在不知道您尝试使用蛇(即活动轮廓)的情况下,我能做的最好的就是建议这些链接:

我遇到的大多数活动轮廓的应用似乎更多地用于二维图像分割,但希望这些链接能给你一些起点。

【讨论】:

    【解决方案2】:

    如果您要尽量减少机器人关节处的弯曲角度,那么最好的曲线是圆弧。

    令 L 为圆弧的长度,d 为端点之间的距离,theta 为圆弧的角度 一半,r 为圆弧的半径。那么:

    d/L = sin(theta)/theta ==> 使用 Matlab 的求解器之一为 theta 数值求解

    一旦有了theta,圆弧的半径就是:r = L / (2 * theta)

    在这个 r 和 theta 的两个端点之间仍然有无限多的弧。您必须使用其他一些标准来选择要使用的点的滚动角度。

    【讨论】:

    • 如果 L 大于 pi*d/2(即如果 L 大于直径为 d 的圆的圆周的一半),这条曲线是否仍然有效?
    • 是的,它应该适用于(但不包括)1 和 0 之间的所有距离/弧长比率。
    猜你喜欢
    • 2016-05-16
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多