2016-08-02 107 views
0

我正在研究机器人项目的一些轨迹生成。它在步态周期内上下移动机器人的躯干。在MATLAB中创建2点(缓动)之间的S曲线

当我改变躯干的设定值时,我使用linspace()在当前位置和所需位置之间创建一条直线。不过,我想减轻线的开始和结束。我想要创建一个S曲线,以防止线路开始和结束时的冲击。

我曾看过使用sigmoid函数sigmf(x,[a c]),但我不知道依赖关系是ac变量关于2点之间的距离。

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

实施例:

我有2点:y = 0.9y = 0.3。我需要创建一个S曲线开始于x=0,并结束于x=1000

x轴永远是01000之间的Y轴总是会内[0 1][1 0]

+0

查看我的回答。对于两个未知常数a和c,有两个方程。为了让它们在(x1,y1)和(x2,y2)之间平滑过渡,解决这个问题很容易。 – duffymo

回答

0

MATLAB的文档给你一些线索:

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

附近有一座小游戏应该明确,但参数似乎意味着和c“上升/下降的开始”的意思是“过渡,其中T的中点他的S曲线值是0.5“。

最重要的是,它给你它使用的确切公式。您可以轻松绘制出不同的值并查看它的行为。

你真正的问题可能是你需要重复求解适当的常量a和c给定的开始和结束点。两个未知数a和c;两个方程式,每个方程起点和终点各一个。对于给定的开始点和结束点,您应该求解a和c的闭式表达式,然后使用结果曲线在它们之间进行平滑过渡。

+0

我已经更新了我的问题,因为我只能让它减少一点。也许你可以给我一个小例子? – Ortix92

+0

我期望一个MATLAB用户能够精确地解出两个未知数的方程。 – duffymo