SolidWorks模型导出URDF准备
确保机械臂模型已完成装配体设计,各关节运动关系清晰。安装SolidWorks的URDF导出插件(如SW2URDF),在solidworks-工具-选项-导出-stl中,勾选图中框选的选项,避免插件导出模型时坐标系偏移的问题。

URDF文件导出                                                                                                                                solidworks-工具-Tools-Export as URDF,进入后按自己的模型设置各轴及关节,各轴坐标系插件会自动识别,若无特别需要可默认不修改。随后进入导出界面,需要选择关节运动类型(平移、固定、浮动、平面、旋转),在Axis设置运动轴,Limit设置运动范围。

URDF文件调整
mujoco无法直接打开URDF文件,需要对导出的URDF文件进行修改,在<robot
  name="myrobot">后添加。  <mujoco>
    <compiler meshdir="替换为真正的mesh路径" balanceinertia="true" discardvisual="false"/>
  </mujoco>

<robot
  name="myrobot">
  <mujoco>
    <compiler meshdir="D:\20250911Assembly1\meshes" balanceinertia="true" discardvisual="false"/>
  </mujoco>

将修改后的URDF使用mujoco打开(urdf文件拖动到muoco安装文件夹中的bin / simulate.exe上),然后你可以看到自己的机械臂在纯黑的背景中乱动。点击左上角save model,保存xml文件。这个xml文件将保存为bin / mjmodel.xml 。修改一下xml的文件名,这个就是你机械臂的mjcf文件啦,可以把它放到之前solidworks导出的文件夹中,便于寻找mesh文件。

STL转OBJ格式处理
由于mujoco默认stl格式的mesh文件面数不能大高,因此会产生凸包问题,无法处理孔或者精细的模型,可以使用Blender将STL文件转换为OBJ格式,使用obj格式的mesh文件就可以解决这个难题。

使用obj2mjcf处理obj文件
用pip安装obj2mjcf,在终端运行

obj2mjcf --obj-dir "D:/obj/OBJ文件路径" --obj-filter "OBJ文件名.obj"--overwrite --verbose --save-mjcf --compile-model

运行成功后obj文件路径中会出现与文件名相同的一个文件夹,里面有处理过后的obj文件与同名的xml文件。

修改mjcf文件
在此之前可以先把blender导出的obj文件都放到同一个文件夹里,之前用mujoco保存的xml文件也放进来,并且根据obj2mjcf生成的xml文件进行修改。主要修改

  <asset>
    <mesh name="base_link" content_type="model/obj" file="base_link.obj"/>
    <mesh name="p1" content_type="model/stl" file="p1.stl"/>
    <mesh name="p2" content_type="model/stl" file="p2.stl"/>
    <mesh name="r3" content_type="model/stl" file="r3.STL"/>
    <mesh name="r4" content_type="model/stl" file="r4.STL"/>
    <mesh name="r5" content_type="model/stl" file="r5.STL"/>
    <mesh name="r6" content_type="model/stl" file="r6.STL"/>
  </asset>

文件名替换为xx.obj
修改完后的xml文件就可以直接用mujoco打开啦,打开Rendering-Model Elements-Convex Hull,可以观察到,模型的mesh没有凸包了。

Logo

立足具身智能前沿赛道,致力于搭建全球化、开源化、全栈式技术交流与实践共创平台。

更多推荐