型号概述
在本教程中,您将使用6自由度联合块指定平面操纵器末端框架相对于世界框架的时变轨迹坐标。该块在两个框架之间提供了必要的自由度,但并不表示它们之间真正的物理连接。它代表的关节被认为是虚拟的。
时变坐标跟踪一个正方形模式,该模式是通过自动计算并在各个机械手关节处施加致动扭矩来实现的。在仿真过程中,可以输出自动计算扭矩和利用Simulink绘制出来®块或MATLAB ®命令,例如用于分析。
添加虚拟关节
-
在MATLAB命令提示符下,输入
smdoc_double_pendulum
。将打开一个双摆模型,您可以在本教程中将其作为简单的平面操纵器模型进行调整。有关如何创建此模型的说明,请参见为运动学运动链建模 -
从Simscape > Multibody > Joints库中,拖动一个6自由度Joint块,如图所示进行连接。该块表示虚拟关节,可用于指定相对于世界框架的操纵器末端框架。
-
注意
检查基本端口框架(B)是否已连接到世界框架。基本端口框架用作您提供的任何关节运动输入的参考框架。切换基础端口和从动端口框架会导致该块解释相对于不同框架的任何运动输入,可能会更改操纵器末端框架的轨迹。
-
在 6-DOF Joint block 对话框中,按照下面设置参数:
-
Parameter Select Y Prismatic Primitive (Py) > Actuation > Motion Provided by Input
Z Prismatic Primitive (Pz) > Actuation > Motion Provided by Input
- 该块暴露了两个物理信号端口,您可以通过这些端口提供关节运动输入。
- 将这些块拖动到模型中。
-
Library Block Quantity Simscape > Utilities Simulink-PS Converter 2 Simulink > Sources Signal Builder 2 - Signal Builder模块将运动输入作为Simulink信号提供。Simulink-PS Converter模块将Simulink信号转换为与Simscape Multibody™模块兼容的Simscape™物理信号。
- 如图所示连接块。
- 打开连接到6自由度联合块的端口py的Signal Builder块的对话框。指定此信号后,操纵器末端框架要遵循的方形轨迹的时变Y坐标。
- 这个设置信号有个小技巧。
- 双击这个
- new->custom
- 只需要按照时间节点和幅值输入对应的矩阵就行。matlab一定要养成矩阵思维的习惯。第二个信号模块同样。
- 打开与6-DOF联合块的端口pz连接的Signal Builder块的对话框。指定该信号后,机械手末端框架所遵循的方形轨迹的时变Z坐标。
- 在Simulink-PS Converter模块的对话框中,指定输入信号单位和滤波设置。Simscape Multibody要求您指定二阶过滤或提供轨迹坐标的前两个时间导数。
-
Parameter Value Units > Input signal unit cm
Input Handling > Filtering and derivatives Filter input
Input Handling > Input filtering order Second-order filtering
Input Handling > Input filtering time constant (in seconds) 0.1
- 较小的滤波常数会大大降低仿真速度。对于大多数Simscape Multibody模型,0.1秒的值是一个不错的选择。在本教程中,该值就足够了。
-
感应关节致动扭矩
-
在两个“旋转关节”块的对话框中,设置以下驱动和感应参数。
-
Parameter Setting Actuation > Torque Automatically Computed
Sensing > Actuation Torque Selected - Simscape Multibody需要使用运动输入的关节原始自由度的数量等于使用自动计算的关节致动力和扭矩的数量。如果模型不满足此条件,则模拟将失败并显示错误。
- 将这些块拖动到模型中。
-
Library Block Quantity Simscape > Utilities PS-Simulink Converter 2 Simulink > Sinks To Workspace 2 - PS-Simulink转换器模块将物理信号输出转换为与其他Simulink模块兼容的Simulink信号。
-
在两个“ to Workspace”块对话框中,输入变量名称
t1
和t2
。 -
如图所示连接块。
-
模拟模型
尝试运行模拟。由于模型中存在闭合运动回路而导致错误,导致模拟失败。Simscape Multibody要求该回路包含至少一个没有运动输入或自动计算的驱动力或转矩的关节块。
-
从Simscape > Multibody > Joints库中,拖动一个Weld Joint块并将其连接到Binary Link A子系统之一中。这个地方只需要在Binary Link A上右击,选择Open in new tab,插入进去就好了。
-
-
添加焊接接头块可确保现在的闭环系统包含至少一个没有运动输入或计算出的致动扭矩的接头块。
再次运行模拟。将打开Mechanics Explorer,并以动态3-D显示两杆式连接。
-
-
绘制计算出的作用在连杆中两个旋转关节上的致动扭矩。在MATLAB命令行中,输入以下代码:
-
figure; hold on; plot(t1.time, t1.data, 'color', [60 100 175]/255); plot(t2.time, t2.data, 'color', [210 120 0]/255); xlabel('Time'); ylabel('Torque (N*m)'); grid on;
- 该图显示了作用在两个旋转关节上的随时间变化的致动扭矩。这些扭矩使机械手的端部框架能够跟踪规定的方形轨迹。
-
-