六自由度机械臂参数化设计
摘要
在现代工业机械产品的结构设计中,高性能、轻质化与可靠性成为其关键需求.将机械臂作为工程机械设施的关键部件之一,优化其动力学性能后可显著提升工程机械的整体质量、运行效率以及安全性.针对六自由度(6-DOF)机器人arm的研究,在采用SolidWorks进行建模并开发可视化操作界面后可构建一个功能完善的参数化设计系统.该系统能够根据结构设计计算出的参数自动调整模型零件的尺寸大小,并实现机器人模型的自装配功能.该系统不仅能够确保产品开发的质量标准得到严格遵守,在提高设计效率的同时还能降低研发成本.
0 引言
通常情况下,工程机械臂是一种具有多输入输出特性的复杂系统,在机械动力学中表现出高度的非线性和强耦合性。依靠自身的动力和结构配置实现多种作业需求,在装备制造、焊接检测以及重型装配等多个生产环节中发挥着重要作用(见文献[1])。随着现代工业技术的快速发展和社会生产规模不断扩大以及自动化水平日益提高,在矿山机械应用、智慧交通建设以及航空航天制造等领域展现出越来越广泛的应用前景(见文献[2])。机械臂作为各种工程机械设备的核心组件之一,在其运行效能方面受到动力学特性显著影响(见文献[3])。在常规工作条件下,机械臂所处工况通常较为恶劣且所承受负荷种类繁多。因此,在确保机械臂长期可靠运行的同时保证作业安全性和提高运行效率方面提出更高的技术要求(见文献[4])。
在机械臂结构设计领域中,在进行产品方案的设计时,则是基于具体的设计需求,并参考同类产品的经验数据,在依据一定的理论指导之下来选择合适的参数,并通过校核计算来验证这些参数的适用性[3]。这样的传统方案存在一定的局限性:如果对每一个零部件进行个性化的定制,则将会导致工作量增大、开发周期延长以及效率下降等问题[4]。随着现代计算机技术的快速发展与普及,在产品设计领域中已逐渐成熟的各种技术手段逐渐成为推动制造业进步的重要动力之一;其中 Parameterized Design 技术作为一种新兴的方向而备受关注[5]。Parameterized Design 的基本概念是指通过将模型中的约束信息转换为可调节的参数形式,并赋予这些参数不同的数值值域,在此基础之上生成不同尺寸与形状的产品模型;这种设计理念不仅具有较高的效率优势与简便的操作流程特点,并且也展现出很强的移植适应能力;因此在涉及形状或功能相似的产品类型的设计过程中具有重要的应用价值[6]。在 CAD 技术的实际运用过程中,则可以让用户无需进行精确的定位与定形操作;只需勾勒出整体轮廓形状之后即可通过修改标注所设定尺寸值的方式来实现最终的产品形态;或者也可以通过对关键部位定义为若干个可调节参数的方式来进行产品方案的设计;通过这种方式不仅能够显著提高设计效率还能实现对细节部分的精准把控[7]。特别是在机械臂机械结构的具体应用当中Parameterized Design 技术不仅可以大幅提高设计方案与绘图工作的效率而且也展现出了极高的实用价值与商业前景[8]
当前,Chugunov及其团队[8]深入探讨了SolidWorks二次开发程序在实际应用与优化方面的挑战与问题,并对参数化建模技术及界面实现方案进行了系统性的总结。 Yu[9]则详细介绍了基于SolidWorks的参数化设计原理、智能化装配机制及其基础开发方法。这些方法虽然提供了参数化设计的理论框架与思路,但在实际应用层面尚有不足。 Reddy团队[10]则利用SolidWorks API构建了一个智能化的轴承设计数据库系统。张小鹏及其团队[11]成功实现了基于SolidWorks平台的球阀阀体参数化设计技术,并显著解决了parameterized design中零部件自动生成的技术难题。然而,在复杂的装配关系处理方面仍存在一定的局限性。
综上所述,在机械设计领域中引入参数化技术已得到广泛应用,并显著提升了产品设计效率与企业竞争力。然而,在工程机械臂结构设计方面这一技术仍处于初步应用阶段。因此本研究聚焦于六自由度工程机械臂的设计优化问题并开发了一款具有可视化操作界面的参数化设计系统。该系统允许设计师通过输入相关零部件的基本参数自动生成机构的零部件装配体三维模型以及工程图纸从而大幅减少了繁琐的建模工作量成功实现了高效的快速设计系统显著缩短了产品开发周期并降低了研发成本同时降低了对专业人才的需求满足了当前机械臂结构设计中个性化与定制化的多样化需求为解决此类复杂机械结构提供了通用的设计方案
1 SolidWorks二次开发技术
参数化设计主要通过各种主流的CAD软件(包括SolidWorks, Pro/Engineer, CATIA, UG等)进行二次开发工作[13]。
旨在实现输入基础参数后自动生成完整的三维模型[13].
其中,
以其友好的人机交互界面和快速上手的特点著称的一套优秀的CAD工具。
它采用了特征建模和变量化驱动技术能够方便地完成三维建模和装配任务,
并自动生成工程图纸。
1.1 SolidWorks二次开发方法
在SolidWorks的二次开发中,尺寸驱动法与程序驱动法被视为两大核心策略。其中,在零件模型结构固定的基础上,尺寸驱动法则通过编程语言对现有模型的尺寸进行调整来实现参数化建模;而程序驱动法则按照严格步骤完成从三维建模到原型制作的全过程(亦称作模型引导法)。两者均能有效实现参数化建模,并各自具有独特的优势:前者代码量简洁且编程门槛较低(无需重复编译以适应相似的产品设计需求),后者则具备较强的适应性(能够动态生成外形结构以满足设计需求)。
1.2 SolidWorks二次开发原理
基于对象链接与嵌套技术OLE(Object Linking and Embedding)和基于对象模型重组技术COM(Component Object Model)是基于SolidWorks进行二次开发的两种核心原理。OLE技术由微软公司开发并采用嵌入技术和数据链接方法实现应用程序间的高效数据交换;而COM技术则以面向对象的方式将系统功能划分为独立的功能模块,在模块间以及模块与开发人员之间建立统一的通信规范,并通过有机整合各功能模块从而形成完整的系统架构。
基于OLE或COM技术构建的API功能是SolidWorks提供的二次开发编程接口SDK。开发人员能够方便地使用SolidWorks API SDK来创建特定的应用程序。用户通过应用程序界面与SolidWorks API交互实现操作效果与直接在软件中操作一致[14]。
1.3 SolidWorks二次开发工具
基于OLE和COM技术的VB、VB.net、C++、C#等是常用的计算机程序设计开发语言[15]。这些编程语言均支持SolidWorks二次开发功能,并且开发者可以根据个人需求选择合适的编程语言作为开发工具。C#作为一种语法简单明了且类型系统完善的面向对象编程语言,在工程领域具有广泛的应用基础。作为当前广泛应用于工程领域的常用编程工具之一,在SolidWorks二次开发中发挥着重要的作用,并展现出良好的应用前景和发展潜力。
2 机械臂参数化设计系统
该机械臂参数化设计系统采用尺寸驱动法和程序驱动法的组合方式,并以_C#_作为编程工具。其整体架构包含以下三个主要组成部分:
- 用户层:负责人机交互并传递设计参数。
- 开发层:连接用户层与数据层并提供技术支撑。
- 数据层:负责存储产品信息并提供数据支持。
通过构建三者之间的逻辑关联实现参数化设计功能,并为用户提供便捷的人机交互界面(如图2所示)。

Fig. 2 Parametric design flow
图2参数设计流程

下载: 原图 | 高精图 | 低精图
该方案的设计流程如图3所示。具体实施步骤如下:首先, 通过登录进入可视化界面以获取关键特征参数; 接着, 在所需模型的基础上调整设计参数后点击生成模型, 系统将自动验证输入的参数是否符合规范要求; 若不符合, 则会提示错误并要求上层重新输入; 若符合规范, 则会立即更新设计参数并生成新的三维模型; 最后, 在完成新零件模型后将其与现有结构配合生成装配体并保存; 最终导出机械臂工程图完成整个设计流程

Fig. 3 Overall structure of manipulator
图3机械臂整体结构

下载: 原图 | 高精图 | 低精图
2.1 机械臂模型结构
本文致力于开发机械臂模型的参数化设计系统。其整体结构如图3所示,在本研究中所提出的6自由度机械臂由底座、前臂、上臂、手腕、手爪、肩关节、腰关节、肘关节以及腕关节等主要部件组成。其中底座用于安装与固定机器;手爪用于抓取物体;运动机构则由前臂、上臂、腕部等部分共同构成,并可使手爪完成移动、转动及复合运动以实现改变物体抓持姿势及位置的目标。此外需要明确的是该机械臂的自由度数量是由其独立运动坐标轴的数量决定的以确保能够抓取空间中任意方位的目标物至少需要6个自由度才能满足基本需求而随着自由度过高可能导致结构过于复杂因此在实际应用中应权衡灵活性与复杂性之间的关系
2.2 机械臂零件模块设计
本文采用尺寸驱动法与程序驱动法相结合的方式实现机械部件的参数化建模。在分析系统中各零部件的结构特征时,可将其分为两类:一类为固定参数型零部件;另一类为关键型零部件。前者无需任何修改即可直接调用;后者则需根据具体情况调整尺寸与结构[17]。在机械臂参数化设计系统的框架下完成关键组件的新建模过程,则是模型尺寸参数修改的核心环节。
将关键尺寸参数设置为全局变量直接影响零件模型的形态变化。这些关键零件的设计参数包含以下几项:底座直径的高度与厚度;前臂的高度与三度(宽度与长度)及厚度;上臂的高度与三度(同样包括宽度与长度)及厚度等指标。为了确保设计合理性符合工程规范要求需制定相应的参数规范以进行监控。
Table 1 Key parameters
表1关键参数
| 零件参数名称 | 尺寸名称 |
|---|---|
| 底座直径 | R |
| 底座高度 | A |
| 底座厚度 | B |
| 前臂高度 | H1 |
| 前臂宽度 | D1 |
| 前臂长度 | L1 |
| 前臂厚度 | S1 |
| 上臂高度 | H2 |
| 上臂宽度 | D2 |
| 上臂长度 | L2 |
| 上臂厚度 | S2 |

下载: 导出 CSV
零级模型参数设计部分代码如下:
solidModel = ModelDoc2; swApp.CreateDocument('gb_part.prtdoc', 0, 0, 0); // 创建一个新的零件模型
swModel=(ModelDoc2)swApp.ActiveDoc;//激活零件
swModelDocExt=(ModelDocExtension)swModel.Extension;
swSketchMgr=(SketchManager)swModel.SketchManager;
bool boolstatus = swModelDocExt.SelectByFrontViewPlane("前方基准面",“PLANE" ,0 ,0 ,0 ,true ,0 ,null ,0);//根据前方基准面进行参数设置
swSketchMgr.InsertSketch(true);//进入草图
swModel.ClearSelection2(true);
Object part=swSketchMgr.CreateCenterRectangle(0,0,0,0.02,0.06,0);//创建中心矩形
swModel.ClearSelection2(true);
bool status = swModel.Extension.SelectByID2("编号为Line4的边线",
"曲线类型",
1.76497498282325E-02,
1.78694778146317E-02,
无,
false,
无,
null,
无); //用于选择一条指定的边线
objectmydisplaydim=swModel.AddDimension2(5.86090023471636E-02,3.01170974403903E-03,0);
swModel.ClearSelection2(true);
object mydimension=swModel.Parameter(“D1@草图1”);

Fig. 1 System overall architecture
图1系统总构架

下载: 原图 | 高精图 | 低精图
swModel.Parameter(“D1@草图1”)。systemvalue=0.262;//添加一条边线尺寸
赋值状态为swModel.Extension.SelectByID2函数调用,并传递以下参数:"Line3"、“SKETCHSEGMENT"、9.55679814283927E-03、1.10518085737645、整数零(表示无效)、布尔值false(表示关闭)、整数零、“空值null”以及整数零;随后对该函数执行操作以设置选中边线的状态;注:选择另一条边线
mydisplaydim=swModel.AddDimension2(-8.48216616792685E-04,1.17355666865403,0);
2.3 机械臂装配体模块设计
基于底层组件的模块化方法(Bottom-Up)与系统整体架构的角度展开(Top-bottom)构成了模型装配的主要策略。在实际应用中, Bottom-Up方法主要以模块化策略为基础,在确保各模块独立性的同时实现整体结构的构建;而 Top-bottom方法则采取分层递进的方式,在保证系统完整性的同时实现功能系统的优化配置[18,19]。
系统内的零件模型已实现参数化配置。因此,在本文研究中将采用基于自底向上的方法构建零组件体结构。具体而言,在建模过程中将优先选择接触面数量最多的组件作为固定对象(以避免因单个错误导致后续流程出现问题)。该过程主要包含三个关键阶段:首先导入零组件体并建立初始连接关系;其次根据部件间的相对位置通过基准坐标系、基准点、基准线、基准轴及基准面等特征建立约束关系网络;最后根据部件间的相对位置及结合设计需求逐步建立完整的体结构体系[20]。其中常用配合关系包括垂直方向对齐、平面完全重合以及平行排列等多种形式;对于选定的待配对表面需严格按照设计规定完成精确配对操作。
装配具体步骤和部分相关代码如下:
该函数调用选中基面ID2右视基准面[六自由度机械臂]、平面[PLANE]、坐标值[0,0,0]、布尔值true、数值1、空参数null()、默认值0()。
status=swModel.Extension.SelectByID2(“右视@底座”,“PLANE”,0,0,0,true,1,null,0);
MateFeature = swAssemblydoc.insertFace((int) swMateType_e.swMateDISTANCE, 0, true, 0.248, 16 * (double)swVertexPosition[3], -16 * (double)swVertexPosition[3], -16 * (double)swVertexPosition[3], -16 * (double)swVertexPosition[3], -16 * (double)swVertexPosition[3], false & out_errors); // 添加面间距离配合
swModel.ClearSelection2(true);//面位置配合
status=swModel.Extension.SelectByID2(“右视基准面@关节”,“PLANE”,0,0,0,true,1,null,0);
状态字段由软件模型的扩展方法SelectByID2获取,并传入参数包括前方基准面@六自由度机械臂、平面以及一系列数值和布尔值。
mateFeature = swAssemblyDoc.ExecuteFunction( (int) sw MateType_e.Sw MateDistance ,
4,
false,
{double} _tolerance = {double} _tolerance,
{double} _tolerance = {double} _tolerance,
{double} _tolerance = {double} _tolerance,
true,
true,
true,
true,
true,
false,
false
) , into OutErrors );
//用于配置面之间的距离关系
swModel.ClearSelection2(true);
status赋值为swModel.Extension.SelectByID2(基准轴 2, 轴, 0, 0, 0, false, 1, 空值);
status=swModel.Extension.SelectByID2(“基准轴2@关节”,“AXIS”,0,0,0,true,1,null,0);
MateFeature = (Feature) swAssemblydoc.Add Mate5 ( [ 0, 1, false,
0, 0, 0, 0, 0, 0, false,
false,
false,
out errors
] ) ; // 注解说明:该代码用于实现基准轴重合
swModel.ClearSelection2(true);
2.4 机械臂工程图模块设计
在整体设计系统架构中占据末尾部分的位置的是工程图模块,在其主要功能在于将三维立体模型转换为二维工程图纸文件的基础上,并用于指导后续产品的制造与加工流程。因此可以说该模块的重要性不容忽视。生成的图纸质量直接影响成品的质量水平,在该模块中,默认情况下会预先建立好各组件及其装配体模板信息;当用户输入新的模型设计参数时,则会触发自动更新机制,并随后完成相应的工作流程——即自动更新相关参数并进行标注工作。
其部分代码如下:
open_swfile(“”,getProcesson(“SLDWORKS”),“SldWorks.Application”);//打开文档
string filepath2=ModleRoot+@“\ 机械臂。SLDDRW”;//文件目录赋值
文件路径2
文件路径2
文件路径2
SwDrawDoc.EditRebuild3();重新编辑工程图
2.5 可视化界面设计
在Visual Studio环境中构建可视化界面,在各个部分(包括零件、装配体和工程图纸)均设有各自的可视化操作界面(如图4至图6)。系统登录后会引导用户进入机械臂关键部件module以获取其详细parameter信息。当user input并 adjust相关parameter后再click 'generate' button即可立即rebuild corresponding mechanical arm components.all mechanical arm components完成后将导入到assembled body module并且此时click 'mechanical arm assembly' generate button即可启动整体mechanical arm assembly process.finally switch to engineering drawing view system will automatically output complete 3D structure drawing

Fig. 4 Part module
图4零件模块

下载: 原图 | 高精图 | 低精图

Fig. 5 Assembly module
图5装配体模块

下载: 原图 | 高精图 | 低精图

Fig. 6 Engineering drawing module
图6工程图模块

下载: 原图 | 高精图 | 低精图
在系统各功能模块的主要步骤中(如表2所示),人工绘制所需的时间仅由作者本人负责。该方法较之前的方式大幅缩短了绘图时间,并使绘图效率提升了数十倍以上。值得注意的是:此表仅展示了每个零部件尺寸修改一次的情况(即单次修改对比),而实际设计过程中通常需要反复进行多次修改操作,在这种情况下效率提升会更加显著。
表2 系统运行效率与人工效率对比分析
表2系统运行效率与人工效率对比
| 功能模块 | 系统生成时长(s) | 人工绘制时长(min) | 效率提高倍数 |
|---|---|---|---|
| 底座模型 | 3.1 | 2 | 37.7 |
| 前臂模型 | 3.3 | 5 | 89.9 |
| 上臂模型 | 3.2 | 5 | 92.8 |
| 装配体生成 | 7.6 | 4 | 30.6 |
| 手爪工程图 | 5.2 | 7 | 79.7 |
| 底座工程图 | 4.9 | 6 | 72.5 |
| 肩关节工程图 | 4.6 | 3 | 38.1 |
| 上臂工程图 | 5.1 | 5 | 57.8 |
| 腕关节工程图 | 4.4 | 3 | 39.9 |
| 前臂工程图 | 5.0 | 5 | 59.0 |
| 肘关节工程图 | 4.3 | 3 | 40.8 |
| 爪关节工程图 | 4.0 | 3 | 44.0 |
| 装配体工程图 | 8.2 | 10 | 72.0 |

下载: 导出 CSV
3 结语
在Visual Studio 2012开发平台上采用C#语言并结合SolidWorks API接口技术对SolidWorks 2018进行了二次开发,并成功构建了一个基于尺寸驱动法的六自由度机械臂快速设计系统。该系统通过实现机械臂零部件的参数化建模、自动生成装配结构以及工程图纸的生成与导出等功能,在确保设计质量的前提下显著提升了设计效率和降低了开发成本,并为后续的动力学分析和轨迹规划奠定了基础。该研究方法具有良好的通用性,并可应用于同类产品的设计与优化研究,在未来的研究中将重点考虑提高系统运行效率、优化可视化界面界面体验以及扩展功能模块以满足更多应用场景的需求
