關於urdf/xacro/sdf, world/launch文件


搞了好久,一直卡在相關問題上,原來是因為搞不懂這幾個文件的關系,還是寫個帖子記錄一下:

  • urdf和sdf都是模型文件,也都能在Gazebo中加載;
  • urdf只能表示單個機器人,而sdf則可以表達整個環境以及多個機器人,所以Gazebo正在推sdf模型,但原來大部分工作都是基於urdf進行的;
  • 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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM