Kinova Gen3机械臂单部件模态和频响分析
这个例子展示了如何分析Kinova®Gen3超轻机械臂的肩连杆在压力下可能发生的变形。
机械臂在从工厂自动化到医疗手术的各种应用中执行精确操作。通常,机械臂由几个连接在一个串行链上的连杆组成,基座连接在桌面或地面上,末端执行器连接在尖端。这些链接必须在结构上牢固,以避免转子在负载下移动时产生任何振动。
机械臂尖端的载荷会对每个连杆的关节产生压力。压力的方向取决于载荷的方向。
本例通过模态分析和频响分析模拟计算了肩杆在施加压力下的变形。您可以找到helper函数animateSixLinkModes.m
还有几何文件Gen3Shoulder.stl
下matlab / R20XXx / / pde的主要例子
.
模态分析
假设机械臂的一端是固定的,求出固有频率和振型。
为模态分析创建结构模型。
模型= createpde(“结构性”,“modal-solid”);
要对结构进行无约束模态分析,必须指定几何形状、网格和材料属性。首先,导入机械臂肩部部分的几何结构。
importGeometry(模型,“Gen3Shoulder.stl”);
生成一个网格。
generateMesh(模型);pdemesh(模型)
以一致的单位指定杨氏模量、泊松比和材料的质量密度。通常,用于连接的材料是碳纤维增强塑料。假设材料是均匀的。
E = 1.5e11;Nu = 0.3;Rho = 2000;structuralProperties(模型,“YoungsModulus”, E,...“PoissonsRatio”ν,...“MassDensity”,ρ);
通过绘制带有面标签的几何图形来识别用于应用边界约束和负载的面。
pdegplot(模型,“FaceLabels”,“上”view([-1 2])“肩链几何与脸标签”)
肩部连杆固定在一端(面3),并连接到另一端(面4)的移动连杆。在面3上应用固定边界条件。
structuralBC(模型,“面子”3,“约束”,“固定”);
求解一个选定频率范围的模型。指定低于零的低频限制,以便所有频率接近零的模式(如果有的话)都出现在解决方案中。
RF = solve(模型,“FrequencyRange”[10000] * 2 *π);
默认情况下,求解器返回圆形频率。
modeID = 1:数字(RF.NaturalFrequencies);
将得到的频率除以,以Hz表示 .在表格中显示频率。
tmodalResults = table(modeID.',RF.NaturalFrequencies/2/pi);tmodalResults.Properties.VariableNames = {“模式”,“频率”};disp (tmodalResults);
模式频率____ _________ 1 1947.2 2 2662 3 4982.3 4 5112.6 5 7819.5 6 8037.1 7 9361
将模态振型可视化的最好方法是在它们各自的频率上对谐波运动进行动画化。的animateSixLinkModes
函数将前六个模式动画化。所得到的图显示了在荷载作用下主要变形的区域。
frames = animateSixLinkModes(RF);
要播放动画,使用这个命令:
电影(图(“单位”,“规范化”,“外置”,[0 0 1 1]),帧,5,30)
频率响应分析
模拟肩膀在面部压力载荷下的动态,假设所附的链接对面部的两半施加了相等和相反的压力。分析工作面某点的频响和变形。
首先,建立结构模型进行频响分析。
Fmodel = createpde(“结构性”,“frequency-solid”);
导入用于模态分析的肩部部分的相同几何图形。
importGeometry(车型,“Gen3Shoulder.stl”);
生成一个网格。
网格= generateMesh(fmodel);
指定杨氏模量、泊松比和质量密度。
structuralProperties(车型,“YoungsModulus”, E,...“PoissonsRatio”ν,...“MassDensity”,ρ);
肩部连杆固定在一端(面3),并连接到另一端(面4)的移动连杆。在面3上应用固定边界条件。
structuralBC(车型,“面子”3,“约束”,“固定”);
估计当手臂承载载荷时,移动连杆对面4施加的压力。这张图显示了脸4的两半,在中心沿y协调。
使用pressFcnFR
函数用于在面4上施加边界荷载。这个函数应用一个推压和一个扭压信号。推压分量均匀。扭曲压力组件对面部左侧施加正压,对右侧施加负压。的定义pressFcnFR
功能,请参阅压力函数.这个函数对频率没有明确的依赖关系。因此,在频域,这个压力负荷作用于溶液的所有频率。
structuralBoundaryLoad(车型,...“面子”4...“压力”,...@(地区、州)pressFcnFR(地区、州),...“矢量”,“上”);
定义解决方案的频率列表为0到3500hz,共200步。
Flist = linspace(0,35,200)*2*pi;
通过指定模态结果对象,使用模态频率响应求解器求解模型射频
作为输入之一。
R = solve(fmodel,flist,“ModalResults”、RF);
画出加载面上某一点的频率响应。面4上位于最大负压载荷处的点为(0.003;0.0436;0.1307)
.插值到这一点的位移并绘制结果。
queryPoint = [0.003;0.0436;0.1307);queryPointDisp = interpolateDisplacement(R,queryPoint);图(R.SolutionFrequencies/2/pi,abs(querypointdeploy .uy))载荷面上点横向位移)包含(“频率(赫兹)”) ylabel (“Y-Displacement”xlim([0.0000 3500])
响应峰值出现在2700 Hz附近,接近于第二振型。在接近1950赫兹的第一模态也发生较小的响应。
求得峰值响应频率指数马克斯
函数具有两个输出参数。第二个输出参数提供峰值频率的索引。
[M,I] = max(abs(queryPointDisp.uy))
M = 1.1256e-04
I = 152
求峰值响应频率值,单位为Hz。
R.SolutionFrequencies(152) / 2π
Ans = 2.655 e+03
画出峰值响应频率处的变形。所施加的载荷是这样的,它主要激发肩的打开模式和弯曲模式。
RD = struct();RD.ux = r .位移.ux(:,I);RD.uy = r .位移。uy(:,I);RD.uz = r .位移。uz(:,I);图(“单位”,“归一化”,“outerposition”,[0 0 1 1]);次要情节(2 2 1)pdeplot3D(车型,“ColorMapData”R.Displacement.ux(:我),...“变形”路,“DeformationScaleFactor”1);标题(“x-Displacement”) subplot(2,2,2) pdeplot3D(fmodel,“ColorMapData”R.Displacement.uy(:我),...“变形”路,“DeformationScaleFactor”1);标题(“y-Displacement”) subplot(2,2,3) pdeplot3D(fmodel,“ColorMapData”R.Displacement.uz(:我),...“变形”路,“DeformationScaleFactor”1);标题(“z-Displacement”) subplot(2,2,4) pdeplot3D(fmodel,“ColorMapData”R.Displacement.Magnitude(:我),...“变形”路,“DeformationScaleFactor”1);标题(“级”)
清晰的数字为未来的情节。
clf
方法也可以绘制相同的结果PDE结果可视化实时编辑器任务。方法创建一个新的活动脚本新的实时脚本按钮。文件章节首页选项卡。
在住编辑器选项卡上,选择任务>PDE结果可视化.该操作将任务插入到脚本中。
画出峰值响应频率处的位移分量和幅度。来绘制x-位移,遵循这些步骤。来绘制y- - -z-位移和幅度,遵循相同的步骤,但设置组件来Y,Z,级,分别。
在选择的结果部分的任务,选择
R
从下拉菜单中。在指定数据参数部分任务,设置类型来位移,组件来X,频率来2655.7789赫兹.
在指定可视化参数节的任务,清了变形复选框。
%要可视化的数据meshData = R.Mesh;nodedata = R.Displacement.ux(:,152);deformationData = [R.Displacement.ux(:,152)...R.Displacement.uy (:, 152)...R.Displacement.uz (:, 152)];phaseData = cospi(0) + 1i*sinpi(0);创建PDE结果可视化resultViz = pdeviz(meshData, nodedata *phaseData,...“DeformationData”, deformationData * phaseData,...“DeformationScaleFactor”0,...“ColorLimits”[-7.414 e-05 7.414 e-05]);
%清除临时变量clearvarsmeshDatanodalDatadeformationDataphaseData
压力函数
定义一个压力函数,pressFcnFR
,计算一个推压和一个扭压信号。推压分量均匀。扭曲压力组件对面部左侧施加正压,对右侧施加负压。扭压载荷值从最小值开始呈抛物线分布增加C
到正的峰值l
到负的峰值R
.得到了抛物线分布的扭转压力因子pressFcnFR
乘以一个幅度为0.1 MPa的正弦函数。均匀推压值为10kpa。
函数p = pressFcnFR(region,~) meanY = mean(region.y);absMaxY = max(abs(region.y));scaleFactor = 0 (size(region.y));查找左边点的id%和右半边脸%使用y坐标值。leftHalfIdx =区域。y <= meanY;rightHalfIdx =区域。y >= meanY;定义一个抛物线比例因子%为每半张脸。scaleFactor (leftHalfIdx) =...((region.y(leftHalfIdx) - meanY)/absMaxY).^2;scaleFactor (rightHalfIdx) =...-((region.y(rightHalfIdx) - meanY)/absMaxY).^2;p = 10E3 + 0.1E6*scaleFactor;结束