【问题标题】:Creating world file for Gazebo with xacro使用 xacro 为 Gazebo 创建世界文件
【发布时间】:2018-02-24 02:41:10
【问题描述】:

我正在尝试在 Gazebo 模拟器的世界文件中生成随机框。 我知道如何创建模型 sdf,以及如何从 world 文件中包含它。

现在我想使用 xacro 和宽度/高度参数在世界文件中创建不同大小的框。

我无法让它工作。 请帮忙:)

【问题讨论】:

    标签: ros


    【解决方案1】:

    好吧,我要描述的是一种替代设计,可以作为您问题的解决方法,它类似于以下步骤:

    第 1 步将您的对象创建为参数化良好的 xacro 文件 (所有参数都包含在同一个文件中)。可以在 Xacro URDF page 中找到有关 HowTO 的一个很好的教程(这里太长,无法包含在此处)。

    第 2 步将您的 xacro 包含在 Gazebo-robot 启动文件中并测试它到目前为止是否正常工作。 这方面的一个例子可以在in PR2 description here:

    找到
    <!-- 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" />
    

    第 3 步如果您将对象视为要在凉亭世界中启动的机器人,则传递参数以创建其(在 xacro 文件中)的解决方案可以通过传递所需的使用prefix:=$(arg value) 的参数如下(explained in here

    <param name="robot_description" command="$(find xacro)/xacro.py '$(find my_robot_description)/urdf/my_robot.urdf.xacro' prefix:=$(arg ns)" />    
    in the xacro file you can simply get the passed argument using $(arg prefix)
    

    这样,您可以在 xacro 文件中创建对象,使用 ROS 启动文件在 Gazebo 中启动它,并根据您需要的值对其进行调整。

    此外,ROS 启动文件也可以将参数传递给其内容,因此,您的值也可以直接通过命令行更新:

    roslaunch your_package launch_file.launch a:=1 b:=5

    或存储在parameter server 中以便在启动时检索。

    希望有帮助,干杯!

    【讨论】:

    • 谢谢。如果我有不同的情况怎么办:我有一个预先确定的“大小”和“姿势”列表,我想生成包含它们的世界文件。我希望文件尽可能干净,所以我想使用单个模型文件并多次包含它,并且只为每个文件指定大小/姿势?
    • 一种方法是在带有 for 循环的 bash 脚本中使用第 3 步和 roslaunch 参数,这在here 进行了讨论,有关循环的示例可以在here 中找到。请使用更新的结果和问题编辑您的问题。干杯。
    【解决方案2】:

    您还可以在 .launchfile 中添加这个小 ROS 节点,以将 .xacro 转换为 .whatever:

      &lt;node name="xacro" pkg="xacro" type="xacro" args="--inorder -o $(find YOURPKG)/PATH_TO_FILE/NAME.sdf_OR_WHATEVER_EXTENSION_YOU_WANT_FOR_FINAL_FILE $(find pkg)/PATH_TO_FILE/NAME.sdf.xacro" /&gt;

    基本上,您使用 4 个参数运行 xacro 节点。最后两个是文件的路径。首先是您要创建的文件的名称(以及在哪里),其次是 .xacro 原始文件。就我而言,我添加了 find pkg 选项,但这显然是可选的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-06
      相关资源
      最近更新 更多