Using roslaunch to start Gazebo, world files and URDF models

Using roslaunch to start Gazebo, world files and URDF models

使用roslaunch 打开世界模型

roslaunch gazebo_ros empty_world.launch

Launching 其他的世界

roslaunch gazebo_ros mud_world.launch

Notice in mud_world.launch a simple jointed mechanism is launched. The launch file for mud_world.launch contains the following:

<launch>
  <!-- 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="worlds/mud.world"/> <!-- Note: the world_name is with respect to GAZEBO_RESOURCE_PATH environmental variable -->
    <arg name="paused" value="false"/>
    <arg name="use_sim_time" value="true"/>
    <arg name="gui" value="true"/>
    <arg name="recording" value="false"/>
    <arg name="debug" value="false"/>
  </include>
</launch>

在这个启动文件中,我们从empty_world.launch继承了大部分必需的功能。我们需要更改的唯一参数是world_name参数,用mud.world文件替换empty.world文件。其他参数仅设置为其默认值。

所以想要创建新世界只需要编写new.world,参考Build a world。new.launch文件中只需要用new.world文件替换empty.world文件

创建你自己的Gazebo_ROS包

根据ROS标准,与机器人型号和描述有关的所有内容都位于名为/MYROBOT_description的包中,与Gazebo一起使用的所有世界文件和启动文件都位于名为/MYROBOT_Gazebo的ROS包中。用小写字母替换“MYROBOT”。对于这两个包,您的层次结构应如下所示:

../catkin_ws/src
    /MYROBOT_description
        package.xml
        CMakeLists.txt
        /urdf
            MYROBOT.urdf
        /meshes
            mesh1.dae
            mesh2.dae
            ...
        /materials
        /cad
    /MYROBOT_gazebo
        /launch
            MYROBOT.launch
        /worlds
            MYROBOT.world
        /models
            world_object1.dae
            world_object2.stl
            world_object3.urdf
        /materials
        /plugins

两个包都要用catkin_create_创建

创建自定义的世界

创建ROS包 MYROBOT_gazebo

在此包中,创建launch文件夹

在launch文件夹中,创建包含以下内容的YOUROBOT.launch文件(不包括默认参数):

<launch>
  <!-- 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 MYROBOT_gazebo)/worlds/MYROBOT.world"/>
    <!-- more default parameters can be changed here -->
  </include>
</launch>

在同一个包中,创建一个worlds文件夹,并创建一个包含以下内容的MYROBOT.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://gas_station</uri>
      <name>gas_station</name>
      <pose>-2.0 7.0 0 0 0 0</pose>
    </include>
  </world>
</sdf>

现在您应该可以使用以下命令将您的自定义世界(带有加油站)启动到gazebo:

. ~/catkin_ws/devel/setup.bash
roslaunch MYROBOT_gazebo MYROBOT.launch

可以将其他模型插入到robot的world文件中,并使用file->另存为命令将编辑后的世界导出回ROS包中。

使用roslaunch生成URDF机器人

有两种方法可以使用roslaunch将基于URDF的机器人launch到Gazebo:

1、ROS服务调用生成方法(推荐使用)

第一种方法可以使机器人的ROS包在计算机和存储库之间的交换更便捷。它允许您keep机器人相对于ROS包路径的位置,但也要求您使用一个python脚本进行ROS服务调用

此方法使用一个名为spawn_model的小python脚本向gazebo_ros节点(在rostopic名称空间中简称为“gazebo”)发出服务调用请求,以向gazebo添加自定义URDF。spawn_mode脚本位于gazebo_ros包中。可以按以下方式使用此脚本:

rosrun gazebo_ros spawn_model -file `rospack find MYROBOT_description`/urdf/MYROBOT.urdf -urdf -x 0 -y 0 -z 1 -model MYROBOT

查看帮助rosrun gazebo_ros spawn_model -h

要将其直接集成到ROS launch文件中,请重新打开MYROBOT_gazebo/launch/YOUROBOT.launch文件,并在</launch>标记前添加以下内容:

<!-- Spawn a robot into Gazebo -->
<node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-file $(find baxter_description)/urdf/baxter.urdf -urdf -z 1 -model baxter" />

启动此文件时,您将看到与使用rosrun时相同的结果。

如果URDF不是XML格式,而是XACRO格式,则可以对启动文件进行类似的修改。

将此添加到先前创建的启动文件中:

<!-- Convert an xacro and put on parameter server -->
<param name="robot_description" command="$(find xacro)/xacro.py $(find pr2_description)/robots/pr2.urdf.xacro" />

<!-- Spawn a robot into Gazebo -->
<node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-param robot_description -urdf -model pr2" />
2、模型数据库方法(具体步骤参考tutorial,推荐第一种方法)

第二种方法允许您将您的机器人包含在.world文件中,这看起来更干净、更方便,但需要通过设置环境变量将您的机器人添加到Gazebo模型数据库中。

从package.xml导出模型路径(具体步骤参考tutorial,暂时不知道能干吗)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值