关于urdf/xacro/sdf区别

urdf和sdf都是模型文件,也都能在Gazebo中加载;
urdf只能表示单个机器人,而sdf则可以表达整个环境以及多个机器人,所以Gazebo在推sdf模型,但原来大部分工作都是基于urdf进行的;
sdf文件和urdf文件、xacro文件都可以加载dae等三维模型文件;
urdf不能定义变量,所以出现了xacro可以通过宏定义,定义一些“属性”;
sdf文件通常在一个文件夹里,其下一般还有一个model.config文件(模型名字在这里配置)、meshes文件夹、materials文件夹等。参考~/.gazebo/models/gas_station/;
urdf和xacro文件中都是以<robot>标签表示一个机器人的,而sdf文件则是用<model>标签,里面的其他标签也不尽相同,他们之间或许有一些可以相互转化的,比如pysdf,参考这里;
urdf是ROS中使用的概念,所以不能在world文件中引用添加到Gazebo中,但是能在launch文件中通过gazebo_ros包中的spawn_model方法添加;

<launch>
  
  <node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-file $(find MYROBOR_description)/urdf/bus_mass.urdf -urdf -z 1 -model MYROBOT" />

</launch>

sdf文件则可以直接在world文件中引用添加;

<?xml version="1.0" ?>
<sdf version="1.4">
  <world name="default">
    <include>
      <uri>model://ground_plane</uri>
    </include>
    <include>
      <uri>model://sun</uri>
    </include>
    <include>
      <uri>model://bus</uri>
      <name>bus</name>
      <pose>-2.0 7.0 0.0 0 0 0</pose>
    </include>
  </world>
</sdf>

launch中引用xacro文件

<launch>

    <param name="robot_description" command="$(find xacro)/xacro '$(find MYROBOT_description)/urdf/MYROBOT.xacro'"/>

    <node name="spawn_model" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen" args="-urdf -x 0.0 -y 0.0 -z 0.0 -model ROBOT_NAME -param robot_description"/>

</launch>

来源:关于urdf/xacro/sdf, world/launch文件

附加:xacro 中mesh_模块化生成SDF模型: xacro4sdf

Gazebo中sdf文件和urdf和xacro文件的区别

gazebo模型之间的转换:xacro>urdf>sdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值