在MATLAB中创建2点(缓动)之间的S曲线

时间:2016-08-02 12:16:56

标签: matlab

我正在为机器人项目制作一些轨迹。它在步态周期中上下移动机器人的躯干。

当我更改躯干的设定点时,我当前使用linspace()在当前位置和所需位置之间创建一条直线。但是我想要简化线的开始和结束。我想创建一条S曲线来防止线路起点和终点的冲击。

我已经看过使用sigmoid函数sigmf(x,[a c])但我不知道ac变量对2点之间距离的依赖性。

如何使用MATLAB在2个点之间生成平滑的S曲线以简化线的端点?

示例:

我有2分:y = 0.9y = 0.3。我需要创建一条从x=0开始到x=1000

结束的S曲线

x轴始终位于01000之间,y轴始终位于[0 1][1 0]

之内

1 个答案:

答案 0 :(得分:0)

MATLAB文档为您提供了一些线索:

http://www.mathworks.com/help/fuzzy/sigmf.html?requestedDomain=www.mathworks.com

一点点玩弄应该清楚,但参数a似乎意味着"开始上升/下降"和c表示转换的中点,其中S曲线的值为0.5"。

最重要的是,它为您提供了使用的确切公式。您可以轻松地将其绘制成不同的值,并查看其行为。

您真正的问题可能是您需要在给定起点和终点的情况下重复求解适当的常数a和c。两个未知数a和c;两个方程式,每个方程式用于起点和终点。您应该为给定的起点和终点的a和c求解闭合表格式,然后使用结果曲线在它们之间平滑过渡。