当前位置:首页|资讯

二、创建URDF后,如何处理URDF,并导入mujoco、vrep和webots

作者:四脚包包发布时间:2024-09-05

 制作URDF请看第一章:一、如何创建一个相对标准的URDF模型

打开URDF文件夹可以看到下面几个文件夹和文件:

主要的有

urdf:导出的.urdf文本文件和带有模型信息的.csv表格。

meshes:储存模型的外形信息,.stl格式,模型的可视模型或碰撞模型,但是做碰撞模型不推荐,因为stl面比较多,会加重仿真软件物理引擎的计算压力。比如四足机器人创建时分为17部分,里边就会有17个stl文件。

launch:用gazebo和rviz打开所用的launch文件

2.1 检查URDF

导出的URDF有时候会出现模型错位,或者由于粗心导致模型信息输入错误,所以就需要检查URDF是否导出正确,这里推荐两个种方法检查:

1.vrep(CoppeliaSim)

vrep可以直接识别urdf文件并导入,优点:导入后自动创建关节,并可以在左侧模型树状图直接看模型的可视模型和碰撞模型,便于检查

点击vrep->Modules->Importers->urdf_importers,打开urdf文件的.urdf文件(不能有中文目录)

导入后可以看下模型是否有错位,点击树状图的关节,检查下关节回转重心,关节旋转方向是否正确,导入如图所示

2.rviz

因为会自动生成launch文件,也可以利用可视化工具rviz查看。

首先在ubuntu系统下建立一个文件夹,并在其中建立src文件夹,将生成的整个urdf文件包复制进src文件夹里

编译:

在src文件夹

catkin_make

source devel/setup.bash

注意换成自己的名字和路径

roslaunch sdkda display.launch model:=/home/bao/quad/src/sdkda/urdf/sdkda.urdf

3.ros2的rviz还可以可视化质心和惯量,大家自行开发


2.2 简化URDF

有时候当soildworks模型很复杂时,导出的meshes里的stl会很大,有时候几十兆,导入mujoco就会报错,所以可以给stl文件瘦身,做简化。简化stl时可以用blender简化,blender官网egde一搜就有。

File->import->Stl(.stl),导入要简化的stl文件。

把右上角默认的cube删除,就可以看到自己的模型,点击右侧扳手按钮

Add Modifier->Decimate在Ratio里输入参数,就会将模型相应简化,建议模型控制在1m以下,然后File->export导出就可以。

2.2 简化碰撞体

URDF里边的模型分为可视模型和碰撞模型,可视模型不参与计算,但碰撞模型参与引擎计算,所以简化碰撞模型很有必要。

可视模型可直接用stl模型,碰撞可以将每部分简化成长方体、球或者圆柱,当然像足式机器人这种仅仅在足端部分与地面做几何体简化也可以,但是如果用到ocs2这种机器人库,就需要全部简化。

下为几何体urdf碰撞体代码,在urdf里替换并调整

<collision>

      <origin rpy="1.5707963267948966 0 0" xyz="0 -0.0 0"/>

      <geometry>

        <cylinder length="0.03" radius="0.044"/>

      </geometry>

    </collision>

<collision>

      <origin rpy="0 0 0" xyz="0 0 0"/>

      <geometry>

        <sphere radius="0.03"/>

      </geometry>

    </collision>

<collision>

      <origin rpy="0 1.5707963267948966 0" xyz="0 0 -0.125"/>

      <geometry>

        <box size="0.25 0.0208 0.016"/>

      </geometry>

    </collision>

2.4 导入vrep

上文中已经详细讲了导入vrep的过程,vrep还有一个好处就是可以在导入urdf是可以直接将碰撞模型简化为凸

将红框勾选就可以。

2.4 导入webots

1.新建webots工程:

向导->新建项目目录

将红框勾选。

2.URDF转proto:

转换工具是python环境下的urdf2webots模组,需要电脑已经安装了python(我的是python 3)。在Webots项目文件夹里,有个protos文件夹,把前面SW导出的整个URDF文件夹放进去。进入urdf子文件夹,可以看到.urdf文件。按Shift+右键,在此处打开PowerShell窗口(等同于cmd窗口)。首次使用,需安装python的urdf2webots模组,执行以下命令:

pip install urdf2webots

输入以下命令,由urdf文件生成proto文件(注意改成自己的名):
python -m urdf2webots.importer --input=YOURNAME.urdf

由于我们是在urdf文件所在位置打开的命令窗口,所以这里直接把YOURNAME.urdf作为输入参数,不需要冗长的路径。

运行成功的话会返回机器人部件数量和关节数量,同时生成一个proto文件。(网图)


网图

proto文件是Webots采用的一种文件格式,可以理解为“预设”,实现仿真世界中机器人或模型的复用。

一个proto文件本质上就是文本文档,里面定义了机器人的组成结构,各个部件的属性,以及网格模型链接。

采用python模组生成的proto文件存在一些缺陷,用Notepad++或记事本打开proto文件,然后:

(1)修正STL路径格式错误(必做):按Ctrl+H调用替换窗口,把所有 \ 替换为 / ;

(2)把STL文件改为相对路径(可选),以便在其他电脑上运行。比如原本是:

url "D:/BAO/OneDrive/PipeRob/Webots/PipeRobWB23/protos/YOURNAME/meshes/body.STL"

替换为:

url "../meshes/body.STL"

(3)设置部件颜色:搜索baseColor,可以看到SW导出时,所定义的各种材料的颜色定义,是取值0-1的RGB。

修改完成后保存,可以暂时不用关闭。后面重新修改保存后,在Webots里重新载入场景,可以随时调整。

3.proto文件导入Webots

Webots里面点工具栏加号:

Webots会读取项目目录protos文件夹里所有的proto文件,不出意外会显示前面导出的机器人名称,机器人就进来了。如果导入错误会在Console提示。


调整了关节位置,正常导入应该是四腿拉直


2.4 导入mujoco

下载好mujoco之后,进入bin文件夹

在此文件夹打开终端

./simulate

就会打开mujoco仿真UI

将处理好的.urdf拖入UI就可以

可以在终端里查看报错

点左上角可以转存为mujoco格式的xml文件,在bin文件夹就可以找到。

如果大家觉得有帮助,请帮我点个关注或者点赞,感谢感谢,后面会发布更多机器人内容



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1