0.URDF简介
URDF全称(United Robotics Description Format)统一机器人描述格式,是一个XML语法框架下用来描述机器人的语言格式。URDF文件可以导入ROS或者Matlab进行仿真,但是事实不一定只能使用URDF,在Isaac gym 中不仅可以使用URDF文件定义机器人的信息,还可以使用MJCF文件。
1.URDF的修改
以下将简要记录,如何在SolidWorks中使用ROS插件导出URDF包之后,对URDF进行修改以适配合Isaac gym进行强化学习训练。
1.1插入头和尾(添加浮动的关节和foot部固定关节)
首先在原先的trunk(或者是base_link)的基础上,添加一个浮动关节:
<link name="base"><visual><origin rpy="0 0 0" xyz="0 0 0"/><geometry><box size="0.001 0.001 0.001"/></geometry></visual></link><joint name="floating_base" type="fixed"><origin rpy="0 0 0" xyz="0 0 0"/><parent link="base"/><child link="trunk"/></joint>
在机器人腿部添加foot固定关节,该关节虽然为固定关节,但是确实直接于地面接触的关节,对于适配当前大多数的机器人强化学习开源库都尤为重要。因此在每个机器人的末端关节添加一个固定关节(这里以四足机器人为例):
<joint name="FL_foot_fixed" type="fixed" dont_collapse="true"><origin rpy="0 0 0" xyz="0 0 -0.2"/><parent link="FL_calf"/><child link="FL_foot"/>
</joint>
<link name="FL_foot"><visual><origin rpy="0 0 0" xyz="0 0 0"/><geometry><sphere radius="0.01"/></geometry><material name="orange"/></visual><collision><origin rpy="0 0 0" xyz="0 0 0"/><geometry><sphere radius="0.02"/></geometry></collision><inertial><mass value="0.06"/><inertia ixx="9.6e-06" ixy="0.0" ixz="0.0" iyy="9.6e-06" iyz="0.0" izz="9.6e-06"/></inertial>
</link>
1.2 修改meshes文件的路径
例如原始的路径一般为:
<mesh filename="package://dogVLAI/meshes/base_link.STL" />
建议修改为相对路径:
<mesh filename="../meshes/RL_hip_Link.STL" />
1.3 检查关节的旋转轴
在的机械狗训练前,一个极为总要的点就是要检查你的关节旋转轴,这将决定了机器的关节的旋转方向。
Isaac Gym 作为物理仿真环境,其坐标系遵循右手定则,且默认坐标系方向通常为(具体取决于父链接的位姿定义):
x 轴:向前,机器人前进方向
y 轴:向左,与机器人前进方向垂直,指向左侧
z 轴:向上,垂直于地面向上
例如:
<joint name="FR_hip_joint" type="revolute">
<origin rpy="0 0 0" xyz="0.183 -0.047 0"/>
<parent link="trunk"/>
<child link="FR_hip"/>
<axis xyz="1 0 0"/> ##
...
<joint name="FR_thigh_joint" type="revolute">
<origin rpy="0 0 0" xyz="0 -0.08505 0"/>
<parent link="FR_hip"/>
<child link="FR_thigh"/>
<axis xyz="0 1 0"/> ##
...<joint name="FR_calf_joint" type="revolute">
<origin rpy="0 0 0" xyz="0 0 -0.2"/>
<parent link="FR_thigh"/>
<child link="FR_calf"/>
<axis xyz="0 1 0"/> ##
这里的 xyz 三个值是轴向量的分量,遵循右手坐标系规则(右手握住轴,拇指指向向量方向,四指弯曲方向为正旋转方向)。
1.4 碰撞体修改
collision碰撞的描述是在块中,包含
推荐安装使用 Meshlab 开源软件降低面数。
方法1.对于规则的部件,可以使用规则的几何体(如圆柱、长方体等代替)
例如 https://blog.csdn.net/weixin_42899627/article/details/141969910
使用meshlab软件进行几何体外形测量。
方法2.也可以直接对几何体的外形进行处理
这里依旧推荐使用meshes对几何体的外形面数进行简化,这样不需要额外创新新的文件,而且新建的碰撞体更兼顾复杂的形状也在加载和训练机器人时使用较小的资源,具体步骤如下。
加载STL文件
对STL进行截面简化:
为处理的文件大小:
经过处理后:
其次,为例简化机器人在isaac gym中训练的成功率,通常会取消一些关节的碰撞体。作者在对四足机器人进行训练时,会注释hip关节和thigh关节,仅仅保留calf关节与base_link的碰撞体。
最后,一些BUG处理和调试方法。
1.在你初次导出urdf模型到isaac gym出现这种状况时,不用慌张:
你只需要在config文件中配置一下即可。
class asset:flip_visual_attachments = True
2.几何可能用到的调试工具:
http://urdf.robotsfan.com/
3.ros 插件
一些ros检查URDF的插件能在你修改完URDF后快速定位错误的位置,以及检查link间父子是否正确。
check_urdf dog**.urdfurdf_to_graphiz dog***.urdf
例如: