目錄
- 參考文獻
- 關鍵内容
- 參數解釋 (重要)
- 我的代碼與結果
- 方法總結
-
- 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>
方法總結
ROS服務調用生成方法
第一種方法可以使您的機器人的ROS軟體包在計算機和存儲庫檢出之間更加便攜。它可以讓您保持機器人相對于ROS包路徑的位置,而且還要求您使用小的(python)腳本進行ROS服務調用。
1通過不同命名空間來調用兩個這個腳步
2通過不同組(lanch檔案的組)來調用
3就是我用的,同過不同參數,并且為這個節點改名字
模型資料庫方法
第二種方法允許您将機器人包括在檔案中,這看起來更幹淨,更友善,但需要您通過設定環境變量将機器人添加到Gazebo模型資料庫中。.world