達成不可能なプロファイルのための「最適な」モーションカーブ


7

時間の経過に伴う空間の1D位置を表す離散関数があります。この曲線を実現したいモーションシステムがありますが、ジャーク(3次微分)と加速度(2次微分)の制約により、実際にはモーションを実現できません。これは、関数の不連続性が原因で発生し、フラットな信号から急激な上昇に移行します。

2次および3次導関数の大きさの上限に違反することなく、離散系列を取り、元の系列を近似する新しい系列を生成するアルゴリズムを探しています。位置の誤差を最小限に抑える方法について厳密な定義はありませんが、標準合計の平均二乗誤差の近似はおそらく妥当です。導関数については、標準の中心差を使用して近似しています。fバツ+1fバツ12Δt

私は単に制限を適用して目標位置に向けてできるだけ速く運転することを試みましたが、これは不安定です(ジャークと減速時間を適切に考慮していないため、目標をオーバーシュートして振動します)。制約が満たされるまで繰り返しローパスフィルターを適用しますが、これは少しハックのようであり、非常に良い適合を与えるとは思いません。信号の微分を特に制限するフィルターを作成する方法はありますか?


いくつかの追加のメモ:

  1. 新しいシリーズは元のシリーズと同じ長さでなければなりません。この動作は別の操作と同時に発生し、2つは厳密に同期されます。ただし、制約内で最終的な位置を達成できない場合は許容されます。これは、並行操作があまりにもアグレッシブであり、モーションが追従できないことを意味します。これは、適切に構成されていれば、実際には発生しません。

  2. 関数値の合計が保持されるように、制約に違反するポイントを特定し、エラーを調整し、2つの隣接するポイント間でエラーの負の値を分割する反復アプローチの調査を開始しました。次に、近傍でエラーを計算し、残りのエラーをそれぞれ左または右に転送します。関数の最後に到達してもエラーが発生する場合は、限界に達します。このアプローチに理論的な根拠があるかどうかはわかりませんが、信号を使用してどのように機能するかを実験して確認します。


その他のメモ:

ジャーク(3次導関数)関数を重複しないステップ関数とインパルス関数の線形結合として近似することは妥当です。典型的な入力シリーズの場合、これは次のようになります(青と赤は現在のフィルタリングの試みです。これは主に形状のアイデアを伝えるためです):

ジャークシリーズ

ここに典型的な加速プロファイルがあります:

Accelシリーズ

ここに典型的な速度プロファイルがあります(最初の上昇がすべての問題の原因になります。問題の物理的性質により、システムは最初から無限の速度に近い速度で動き始めることを好みますが、実際的な考慮事項が邪魔になります):

速度シリーズ

興味のある方のために、上記のグラフを作成するために中央差分導関数が近似された生のタブ区切りデータシリーズを次に示します。

x   4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.510544858 4.529570168 4.548595479 4.567620789 4.5866461   4.60567141  4.624696721 4.643722031 4.662747342 4.681772652 4.700797963 4.719823273 4.738848584 4.757873894 4.776899204 4.795924515 4.814949825 4.833975136 4.853000446 4.872025757 4.891051067 4.910076378 4.929101688 4.948126999 4.967152309 4.98617762  5.00520293  5.024228241 5.043253551 5.062278862 5.081304172 5.100329483 5.119354793 5.138380104 5.157405414 5.176430725 5.195456035 5.214481346 5.233506656 5.252531967 5.271557277 5.290582588 5.309607898 5.328633209 5.347658519 5.36668383  5.38570914  5.404734451 5.423759761 5.442785072 5.461810382 5.480714657 5.497626044 5.514537431 5.531448818 5.548360206 5.565271593 5.58218298  5.599094367 5.616005754 5.632917141 5.649828528 5.666739915 5.683651302 5.700562689 5.717474077 5.734385464 5.751296851 5.768208238 5.785119625 5.802031012 5.818942399 5.835853786 5.852765173 5.869676561 5.886587948 5.903499335 5.920410722 5.937322109 5.954233496 5.971144883 5.98805627  6.004967657 6.021879044 6.038790432 6.055701819 6.072613206 6.089524593 6.10643598  6.123347367 6.140258754 6.157170141 6.174081528 6.190992916 6.207904303 6.22481569  6.241727077 6.258638464 6.275549851 6.292461238 6.309372625 6.326284012 6.343195399 6.360106787 6.377018174 6.393929561 6.410840948 6.427752335 6.444663722 6.461575109 6.478486496 6.495397883 6.512309271 6.529220658 6.546132045 6.563043432 6.579954819 6.596866206 6.613777593 6.63068898  6.647600367 6.664511754 6.681423142 6.698334529 6.715245916 6.732157303 6.74906869  6.765980077 6.782891464 6.79783353  6.807698506 6.817563482 6.827428457 6.837293433 6.847158409 6.857023385 6.866888361 6.876753336 6.886618312 6.896483288 6.906348264 6.91621324  6.926078215 6.935943191 6.945808167 6.955673143 6.965538119 6.975403095 6.98526807  6.995133046 7.004998022 7.014862998 7.024727974 7.034592949 7.044457925 7.054322901 7.064187877 7.074052853 7.083917828 7.093782804 7.10364778  7.113512756 7.123377732 7.133242707 7.143107683 7.152972659 7.162837635 7.172702611 7.182567587 7.192432562 7.202297538 7.212162514 7.22202749  7.231892466 7.241757441 7.251622417 7.261487393 7.271352369 7.281217345 7.29108232  7.300947296 7.310812272 7.320677248 7.330542224 7.3404072   7.350272175 7.360137151 7.370002127 7.379867103 7.389732079 7.399597054 7.40946203  7.419327006 7.429191982 7.439056958 7.448921933 7.45668417  7.46311785  7.46955153  7.47598521  7.48241889  7.488852569 7.495286249 7.501719929 7.508153609 7.514587289 7.521020969 7.527454649 7.533888329 7.540322008 7.546755688 7.553189368 7.559623048 7.566056728 7.572490408 7.578924088 7.585357768 7.591791447 7.598225127 7.604658807 7.611092487 7.617471594 7.622952136 7.628432678 7.63391322  7.639393762 7.644874304 7.650354846 7.655835389 7.661315931 7.666796473 7.672277015 7.677757557 7.683238099 7.688718641 7.694199183 7.699679725 7.705160268 7.71064081  7.716121352 7.721601894 7.727082436 7.732562978 7.73804352  7.743524062 7.749004605 7.754485147 7.759965689 7.765446231 7.770926773 7.776407315 7.781828236 7.786267475 7.790706714 7.795145953 7.799585192 7.804024432 7.808463671 7.81290291  7.817342149 7.821781388 7.826220627 7.830659866 7.835099105 7.839538344 7.843977584 7.848416823 7.852856062 7.857295301 7.86173454  7.866173779 7.870613018 7.875052257 7.879491497 7.883930736 7.888369975 7.892809214 7.897248453 7.901687692 7.906126931 7.91056617  7.915005409 7.919444649 7.923883888 7.928323127 7.932762366 7.937201605 7.941640844 7.946080083 7.950519322 7.954958561 7.959397801 7.96383704  7.968276279 7.972715518 7.977154757 7.980384921 7.982851165 7.985317409 7.987783653 7.990249897 7.992716141 7.995182385 7.997648629 8.000114873 8.002581117 8.005047361 8.007513605 8.009979849 8.012446092 8.014912336 8.01737858  8.019844824 8.022311068 8.024777312 8.027243556 8.0297098   8.032176044 8.034642288 8.037108532 8.039574776 8.04204102  8.044507264 8.046973508 8.049439752 8.051905996 8.05437224  8.056838484 8.059304728 8.061633119 8.063606114 8.065579109 8.067552105 8.0695251   8.071498095 8.07347109  8.075444085 8.07741708  8.079390076 8.081363071 8.083336066 8.085309061 8.087282056 8.089255051 8.091228046 8.093201042 8.09410447  8.094332124 8.094559777 8.09478743  8.095015084 8.095242737 8.09547039  8.095698043 8.095925697 8.09615335  8.096381003 8.096608657 8.09683631  8.097063963 8.097291616 8.09751927  8.097746923 8.097974576 8.09820223  8.098429883 8.098657536 8.098885189 8.099112843 8.099340496 8.099568149 8.099795803 8.100023456 8.100251109 8.100478762 8.100706416 8.100934069 8.101161722 8.101389376 8.101617029 8.101844682 8.102072336 8.102299989 8.102527642 8.102755295 8.102982949 8.103210602 8.103438255 8.103665909 8.103893562 8.104121215 8.104348868 8.104576522 8.104804175 8.105031828 8.105259482 8.105487135 8.105714788 8.105942441 8.106170095 8.106397748 8.106625401 8.106853055 8.107080708 8.107308361 8.107536014 8.107763668 8.107991321 8.108218974 8.108446628 8.108674183 8.108899792 8.109120089 8.109331659 8.109531087 8.109714959 8.10987986  8.110022376 8.110139158 8.11022965  8.110297009 8.110344649 8.110375986 8.110394434 8.110403409 8.110406324 8.110406324

DSP.SEへようこそ。興味深い質問です。
Jason R

PIDコントローラーのいくつかのバリアントはどうですか?
ジム・クレイ

@ジム、それはうまくいくかもしれませんが、それはタスクにとって少し複雑に思われ、うまく機能させるためにチューニングが必要になります。また、単純な繰り返しローパスフィルターよりもはるかに優れているかどうかもわかりません。
ダンブライアント

1
この質問/回答で説明されいるシステムを採用し、カルマンフィルターループで、ジャークと加速を強制的に制限することで、適切な結果が得られるかどうか疑問に思っています。今は遊ぶ時間がない。チャンスが来る前に週末になります...モデルの状態は、ジャークと制約を含めるために増やす必要があります。
Peter K.

回答:


1

これは単なるアイデアです。それが機能するかどうかわからない。3次スプライン補間では、曲線は区分的3次多項式で構成されます。

Pバツ=a+bバツ+cバツ2+dバツ

の係数 jth キュービック(これは jthj+1th点)は、節点での1次導関数を直接指定し、曲線が点を通過する必要があることを指定することによっても見つかります。私はこれの専門家の近くにはいませんが、このようなものになります

Pjバツj=Pj1バツjPjバツj+1=Pj+1バツj+1Pjバツj=Pj1バツjPjバツj+1=Pj+1バツj+1

今あなたの問題にこのアイデアを使うと、多分あなたは使うことができるでしょう 5th このフォームの次数多項式

Pバツ=バツ2a+bバツ+cバツ2+dバツ

このような2次および3次導関数の制約を使用します

Pjバツj=Pj1バツjPjバツj+1=Pj+1バツj+1Pjバツj=Pj1バツjPjバツj+1=Pj+1バツj+1

編集:時間の経過に伴う空間の1d位置を表す離散関数から、acc値とjerk値が計算されます(あなたの場合それは可能ですか?)それらがいくつかの最大値を超えると、それらはその最大値に飽和します。次に、指定した時間にacc値とjerk値を持つ連続1D位置関数を作成します。次に、この曲線は対象の時間で評価され、それにより、時間の経過に伴う空間の1d位置を表す新しい離散関数が得られますが、目的のacc値とjerk値が含まれます。これがもっと理にかなっているのかわかりません。機能するかどうかをテストするには、多少の労力が必要です。試してみたい場合は、3次スプライン補間を検索して、位置と速度でどのように機能するかを確認することをお勧めします。次に、同じ原則を使用しますが、accとjerkのみを使用します。


これの目的は、離散系列に適合する区分的連続関数を計算することですか?もしそうなら、多項式でジャーク/アクセル制限演算を実行する方法のアイデアはありますか?その場合、連続関数から再サンプリングできますが、多項式係数をどのように変更して目的の最大制限制約を達成するかは不明です。
Dan Bryant
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.