RoadRunner で衝突イベントによる​シミュレーション中断​を回避するにはどうす​ればよいですか

RoadRunner のシミュレーションでは、既定でアクター同士の衝突が終了イベントとして扱われ、シミュレーションが停止します。衝突時にもシミュレーションを中断させず、アクターの動作を継続させる方法はありますか。

 Accepted Answer

MathWorks Support Team
MathWorks Support Team about 7 hours ago

0 votes

R2025a以降では、RoadRunner APIコマンド「remove」を用いて、シナリオの終了条件である「FailCondition」から衝突条件を除去できます。これにより、衝突イベントでシミュレーションを停止させずに継続させることが可能です。
以下に例を示します。
>> rrApp = roadrunner;
>> rrApi = roadrunnerAPI(rrApp);
>> root = rrApi.Scenario.PhaseLogic.RootPhase;
>> collisionCondition = rootFailCondition;
>> remove(collisionCondition)
この処理の要点は、シナリオの失敗条件から「collisionCondition
を取り除くことにあります。その結果、アクターは衝突相手をすり抜ける形で動作を継続し、衝突を理由としたシミュレーション停止は発生しません。
一方で、この方法には注意点があります。衝突条件そのものを除去するため、衝突イベントも検出されなくなります。そのため、衝突の発生有無を別途確認したい場合は、次のような対応が必要です。
  - remove を適用しないシミュレーションを別途実行して衝突を確認する
  - 出力した CSV のアクター位置座標を用いて二次的に解析する
つまり、この方法は「衝突しても停止させたくない」場合には有効ですが、「衝突を検出しつつ停止だけ回避したい」用途には追加の解析が必要です。

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!