制作URDF请看第一章:一、如何创建一个相对标准的URDF模型
打开URDF文件夹可以看到下面几个文件夹和文件:
主要的有
urdf:导出的.urdf文本文件和带有模型信息的.csv表格。
meshes:储存模型的外形信息,.stl格式,模型的可视模型或碰撞模型,但是做碰撞模型不推荐,因为stl面比较多,会加重仿真软件物理引擎的计算压力。比如四足机器人创建时分为17部分,里边就会有17个stl文件。
launch:用gazebo和rviz打开所用的launch文件
导出的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还可以可视化质心和惯量,大家自行开发
有时候当soildworks模型很复杂时,导出的meshes里的stl会很大,有时候几十兆,导入mujoco就会报错,所以可以给stl文件瘦身,做简化。简化stl时可以用blender简化,blender官网egde一搜就有。
File->import->Stl(.stl),导入要简化的stl文件。
把右上角默认的cube删除,就可以看到自己的模型,点击右侧扳手按钮
Add Modifier->Decimate在Ratio里输入参数,就会将模型相应简化,建议模型控制在1m以下,然后File->export导出就可以。
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>
上文中已经详细讲了导入vrep的过程,vrep还有一个好处就是可以在导入urdf是可以直接将碰撞模型简化为凸
将红框勾选就可以。
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提示。
下载好mujoco之后,进入bin文件夹
在此文件夹打开终端
./simulate
就会打开mujoco仿真UI
将处理好的.urdf拖入UI就可以
可以在终端里查看报错
点左上角可以转存为mujoco格式的xml文件,在bin文件夹就可以找到。