本文以旋转关节为例,讲解simscape multibody中关节驱动的两种模式:
一种是运动参数(Motion)输入的驱动方式,自动计算力或力矩。这种驱动方式需要给定关节的(角度)位置或者(角度)位置、(角)速度、(角)加速度,另外还可以设置关节的初始位置和速度。这种驱动模式可以计算作用在开环、闭环模型上的力和扭矩,也叫逆动力学,关节设置如下如图所示:
另一种是力或力矩(Torque,Force)输入的驱动方式,自动计算运动参数((角度)位置、(角)速度、(角)加速度)。这种驱动方式需给定驱动关节的力和扭矩,另外同样可以设置关节的初始位置和速度。这种驱动模式可以计算物体的运动参数,也叫正动力学。关节设置如下图所示:
下面以平面二连连杆为例进行建模:
逆动力学的建模如下图所示:
如上图所示,该模型总共有六类模块,红色的是旋转关节模块(设置如下图一所示),用来连接两个实体(或者说两个Frame坐标系),并为它们提供一个旋转运动副;黄色的是sine wave模块(设置如下图二所示),生成一个正弦信号,作为运动参数的输入;蓝色的是Simulink-PS Converter模块(设置如下图三所示);粉色的是PS-Simulink Converter模块(设置如下图四所示);绿色的是scope模块(可根据需求自己设置相关属性),用来展示输出结果的波形图;黑色的是Brick Solid模块(设置如下图五所示),用来设置连杆的属性。
图一
图二
图三
图四
图五
点击运行后,可以在scope模块看旋转关节的力矩变化波形图,如下图六所示,可以看到旋转关节力矩变化在开始时刻会很大。
图六
我们通过更改Simulink-PS Converter模块的设置,使得关节的运动输入参数变为角度、角速度、角加速度(原本只是角度),Simulink-PS Converter模块的设置设置如下图七所示,完整的模型如下图八所示,可见图八中红色圈内的Simulink-PS Converter模块的输入端口变成了三个(原本只有一个),这三个端口自上而下分别代表角度、角速度、角加速度。另外,图八中的黄色圈内的六个模块是求导数模块,通过求角度对时间的一阶导数、二阶导数来获取旋转关节的角速度、角加速度,从而作为Simulink-PS Converter模块的输入。
图七
图八
通过这种方式再点击模型运行,再点击scope模块,可以看到关节力矩的变化波形图如下图九所示,在开始时刻波动还是比较大。
图九
那么接下来,我们再更换一种输入方式,如下图10所示,其中红色圈内的六个模块是clock模块,黄色圈内的六个模块是MATLAB Function模块,用户可以双击此模块写数学表达式,Simulink-PS Converter模块的设置和图七中一样。
图十
MATLAB Function模块的数学表达式如图十一所示,自左往右依次是角度变化,角速度变化(一阶导数),角加速度变化(二阶导数),对应图十中黄色圈内自上而下三个MATLAB Function模块。
图十一
通过这种方式再点击模型运行,再点击scope模块,可以看到关节力矩的变化波形图如下图十二所示,此种输入方式可以看到力矩变化波形在开始时刻已经没有很大波动。
图十二
正动力学的建模如下图所示:
其中旋转关节模块的设置如图十三所示。
图十三
点击运行,即可查看scope模块中旋转关节的角度、角速度、角加速度的变化率。另外注意Simulink-PS Converter模块、PS-Simulink Converter模块的单位设置要正确。
另外,对于旋转关节模块,我们可以给定关节的初始位置(30),和初始速度(100),设置如下图十四所示,
图十四
设定好初始角度和初始速度后,点击运行,可以看到scope模块中角度和速度的变化从设定值开始(逆动力学也可以这样设置旋转关节的初始值),如下图十五、十六所示。
图十五(初始角度为设定值30)
图十六(初始速度为设定值100)