Simulink/SimScape問題解決:Targets or motion inputs are specified for every joint around a kinematic loop.


SimScape報錯——運動學過約束

  • 問題:本科畢設用到SimScape進行機器人仿真,導入CAD模型后,給定各驅動關節位置指令SimScape報錯,但在ADAMS中仿真無問題,報錯信息如下:
    Targets or motion inputs are specified for every joint around a kinematic loop.
    即運動學過約束,機構自由度為0。

  • Simulink自動給出的解決方案:
    Targets for Revolute Joint 'model/Leg2/Revolute1' are ignored. You can configure this diagnostic in the Simscape Multibody Configuration Parameters dialog

  • 解決方案1:
    按照提示,在求解器中設置忽略運動學過約束,將error改為warning或none,讓Simulink自動解除冗余約束
    這樣可以求解,但忽略冗余約束,個人感覺類似掩耳盜鈴...當然正常跑起來問題也不大,但一直還在找解決方案
    ++ 新問題:這樣只是忽略了自由度過約束,但會導致模型求解速度大幅度下降,耗時過長

  • 解決方案2:
    經過不斷的排查調試,發現可能是在CAD轉為SimScape模型時,會自定義模型初始位置(即joint中的State Targets),導致運動學奇異出現,無法求解
    在Joint中取消勾選初始條件,不需要忽略冗余約束,模型也能成功跑起來了!此外,模型求解速度得到大幅度改善!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM