天天看點

gazebo 如何添加兩個機器人參考文獻關鍵内容參數解釋 (重要)我的代碼與結果方法總結

目錄

  • 參考文獻
  • 關鍵内容
  • 參數解釋 (重要)
  • 我的代碼與結果
  • 方法總結
    • ROS服務調用生成方法
    • 模型資料庫方法

參考文獻

gazebo有關這方面的官方教程位址

http://gazebosim.org/tutorials?tut=ros_roslaunch&cat=connect_ros#URDFExamplewithBaxter

關鍵内容

我總結一下,就是通過一個小的python腳本

gazebo_ros包中的 spawn_model 其中裡面有各種參數

<param name="robot_description1" command="$(find xacro)/xacro '$(find my_ball)/urdf/turtlebot3_burger.urdf.xacro'" />
 
  <node pkg="gazebo_ros" type="spawn_model" name="urdf_spawner1" respawn="false" output="screen"
        args="-urdf -model turtlebot3_burger -z 0.285 -x 2.0 -y 2.0 -param robot_description1"/>
           

參數解釋 (重要)

robot_description1 可以看作一個參數,command裡的值是這個robot_description1的值。

第二句調用gazebo_ros包裡的spawn_model腳本,這個腳本以一個ros節點運作,因為要運作2個節點,節點的名字不能一樣,是以用name=“urdf_spawner1"為節點重命名。

重要的是 args=”-urdf -model turtlebot3_burger -z 0.285 -x 2.0 -y 2.0 -param robot_description1"

這個args是向gazebo_ros包裡的spawn_model腳本發送參數的

-urdf表示加載的是urdf檔案。

-model表示為模型的命名 ,後面接一個參數表示模型的名字

-x -y -z表是模型的位置

-param表示urdf檔案 檔案是robot_description1裡的值

我的代碼與結果

下面是我的launch檔案與圖檔

<?xml version="1.0" ?>
<launch>
  <arg name="position_controller" default="true"/>

  <!-- these are the arguments you can pass this launch file, for example paused:=true -->
  <arg name="paused" default="true"/>
  <arg name="use_sim_time" default="true"/>
  <arg name="gui" default="true"/>
  <arg name="headless" default="false"/>
  <arg name="debug" default="false"/>
  
  <!-- We resume the logic in empty_world.launch, changing only the name of the world to be launched -->
  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="$(find my_ball)/worlds/robot_ground.world"/>
    <arg name="debug" value="$(arg debug)" />
    <arg name="gui" value="$(arg gui)" />
    <arg name="paused" value="$(arg paused)"/>
    <arg name="use_sim_time" value="$(arg use_sim_time)"/>
    <arg name="headless" value="$(arg headless)"/>
  </include>

  <!-- Load the URDF into the ROS Parameter Server -->
  <param name="robot_description" command="$(find xacro)/xacro '$(find op3_description)/urdf/robotis_op3.urdf.xacro'" />


  <param name="robot_description1" command="$(find xacro)/xacro '$(find my_ball)/urdf/turtlebot3_burger.urdf.xacro'" />

  <!--  $(find xacro)/xacro.py                      .py is deprecated -->



  <!-- Run a python script to the send a service call to gazebo_ros to spawn a URDF robot -->
  <node pkg="gazebo_ros" type="spawn_model" name="urdf_spawner" respawn="false" output="screen"
        args="-urdf -model robotis_op3 -z 0.285 -x 1.0 -y 2.0  -param robot_description"/>

        <node pkg="gazebo_ros" type="spawn_model" name="urdf_spawner1" respawn="false" output="screen"
        args="-urdf -model turtlebot3_burger -z 0.285 -x 2.0 -y 2.0 -param robot_description1"/>

  <!-- ros_control robotis humanoid launch file -->
  <group if ="$(arg position_controller)">
    <include file="$(find op3_gazebo)/launch/position_controller.launch" />
  </group>
</launch>

           
gazebo 如何添加兩個機器人參考文獻關鍵内容參數解釋 (重要)我的代碼與結果方法總結

方法總結

ROS服務調用生成方法

第一種方法可以使您的機器人的ROS軟體包在計算機和存儲庫檢出之間更加便攜。它可以讓您保持機器人相對于ROS包路徑的位置,而且還要求您使用小的(python)腳本進行ROS服務調用。

1通過不同命名空間來調用兩個這個腳步

2通過不同組(lanch檔案的組)來調用

3就是我用的,同過不同參數,并且為這個節點改名字

模型資料庫方法

第二種方法允許您将機器人包括在檔案中,這看起來更幹淨,更友善,但需要您通過設定環境變量将機器人添加到Gazebo模型資料庫中。.world