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中取消勾選初始條件,不需要忽略冗余約束,模型也能成功跑起來了!此外,模型求解速度得到大幅度改善!