• 基于Matlab 实现螺旋线 轨迹曲线绘制


    效果如下:

    首先,先设计一个GUI 的界面

     在GUI 的界面内可以教导直线点位,然后基于直线的骨架生成螺旋线;

    首先我们知道3d 的螺旋线,在某个角度下可以看似成一个很好看的2d 螺旋线,并且在工业上打磨经常会用到类似的路径。

     但是由于这个轨迹的方程比较难以表示,其实需要用坐标 ×对应的转换矩阵;

    所以索性,直接采用暴力构造的方式:

    先上图:

     对于这个2D 的图像,可以看作两个方向的叠加,首先Y 方向很简单,就是一个简谐震荡;

    如图所示:

    然后就是X 方向,X方向可以看作是两个波形的叠加

    一个是一次函数,另外一个是一个简谐震荡

     

     因此两个函数叠加便成了X

    方程归纳

    y=A*sin(B*x);

    deltaX=-Ccos(D*x);

    绘制范围: xmin xmax

     根据上面调试可以得到如下的规律: B和D 属于频率的参数,且要保持相等,图像才会有规律,否则一团混沌

    设计参数:

    A 变量 表示曲线的振幅

    C 变量表示椭圆的短轴

    B和D 相当于频率,其实是用来控制步进的距离

    细节处理:

    问题1:在规划轨迹中会存在两个点位,如P1(0,0,0), P2=(10,10,0)
    一般问题为XY 平面内,不涉及Z 方向

    此时,如何保证螺旋线段的起点是P1 终点是P2? 如果无法正好到达需要如何处理?

    问题2: 在规划路径时存在多个点位,两条线段交点处的轨迹如何规划?

    首先处理问题1:

    实现两点之间的螺旋线的规划,这个比较简单,其实之手螺旋线的搬移而已,及 将螺旋线起始点移动到P1点位,将螺旋线按照P1 P2 直线的走向进行旋转。

    但是需要注意指定长度时,一定会存在一个问题,长度会受到短轴的影响,同时也会受到相位角的影响。

    所以暂时的解决办法时,争取保证每次曲线的形状都如下图:
    且保证长度和设定的一样,如果长度无法满足相位角,即做取整,拉伸处理。

    问题2 处理:

    问题2 为转角的轨迹如果规划,首先,我们知道一件事情,转角有很多种可能实现。
    但是我们只是希望转角的地方是 平滑过渡即可,并且平滑后的轨迹可以和原来的轨迹无缝对接。

    所以,这里想到的一个办法是使用衰减函数:

     

     

     从上图种可以看出,虽然使用这个办法可以实现转角的平滑,但是转角处的曲率以及图形轨迹比较难以控制。

    因此上面的方式以失败告终:

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    推倒从来:

    这次的想法是从大局观出发,首先先确定整体路径的骨架,然后按照平滑的参数,在转角的位置使用贝塞尔曲线

    先将骨架变得平滑,然后将骨架拆分成离散的小段线段进行计算轨迹;

    点位数得到了,确认线段离散步长,然后转角平滑

     

    接下来就是按照公式,按照每一段生成螺旋线

     

     告辞~

  • 相关阅读:
    Mybatis详解
    线程的状态与转换,组织与控制
    MATLAB读取图片时报错:“错误使用 fopen 找不到文件,确保文件存在且路径” 的原因及解决方法
    多GPU训练的实现
    mybatis中的XML文件配置->mybatis-config.xml+XxxxMapper.xml-SQL
    chatGPT教你算法(1)——常用的排序算法
    CVE-2020-14882、CVE-2020-14883 Weblogic 管理控制台未授权远程命令执行漏洞
    移动端自动化-Appium元素定位
    【Python数据库】MongoDB
    Educational Codeforces Round 136 (Rated for Div. 2) 补题题解 (A、B)
  • 原文地址:https://blog.csdn.net/qq_34995963/article/details/126650918