2016-08-02 66 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

相關問題