2016-04-03 49 views
3

Gazeboシミュレータ用のワールドファイルにランダムボックスを生成しようとしています。 モデルsdfを作成する方法と、それをワールドファイルから含める方法を知っています。xacroでGazeboのワールドファイルを作成する

ここで、xacroとwidth/heightパラメータを使用して、さまざまなサイズのボックスをワールドファイルに作成します。

私はそれを動作させることはできません。 :)

答えて

3

まあ助けてください、私が説明するつもりですが、あなたの質問に回避策として働くことができる代替設計であり、それは次のステップのように行く:あなたの作成

ステップ1オブジェクトはよくパラメータ化されたxacroファイル (すべてのパラメータは同じファイルに含まれています)です。 HowTo上の良いチュートリアル(ここに含まれるには長すぎます)は、Xacro URDF pageにあります。

ステップ2ガゼボ・ロボットの起動ファイルであなたのxacroが含まれており、それが今まで細かい作業のテスト。あなたは、オブジェクトがその創造のためのパラメータを渡すために、ガゼボの世界で起動するためのロボットのような溶液を考慮すれば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" /> 

ステップ3: この例はin PR2 description hereを見つけることができます)以下の(explained in hereのようなprefix:=$(arg value)を使用して必要な引数を渡すことが考えられます。

<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) 

この道を、あなたはROSの打ち上げを使用してガゼボでそれを起動し、xacroファイルで、あなたのオブジェクトを作成することができますファイルを作成し、必要な値に応じて調整します。

さらに、ROSの起動ファイルには、お使いの値は、コマンドラインから直接更新することができ、その内容にも同様にパラメータを渡すことができます。

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

または起動時に検索のためparameter serverに保存されています。

希望がよろしいですか、乾杯!

+0

ありがとうございました。私は別の状況がある場合:私は、事前に "サイズ"と "ポーズ"のリストを持って、私はそれらを含む世界のファイルを生成したい。私はできるだけクリーンなファイルをしたいので、私は単一のモデルファイルを使用し、それを何度も組み込み、サイズ/ポーズをそれぞれに指定するだけですか? – Roee

+0

続行する方法は、forループを使用してbashスクリプトでステップ3とroslaunchパラメータを使用しています。これについてはこちら[こちら](http://answers.ros.org/question/12016/easier-way-to-launch- nodes-and-roslaunch /)、ループの例は[here](http://www.cyberciti.biz/faq/bash-for-loop/)にあります。更新された結果と質問で質問を編集してください。乾杯。 – Vtik

0

また.whateverに.xacroを変換するために、あなたの.launchfileに、この小さなROSノードを追加することができます。

<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" />
は、基本的には、4つの引数を持つxacroノードを実行します。最後の2つはファイルへのパスです。まず、.xacroのオリジナルファイルを作成する場所(とその場所)と2番目のファイル名を指定します。私の場合、find pkgオプションを追加しましたが、これは明らかにオプションです。

関連する問題