ロボクメモ Robojimamemo

ロボットを研究する、ある学生のメモ。日々、勉強したことをメモ代わりに残して共有します(ROS,C++,python,linux,etc...)

xacroでRobotModelを表示したい

launchのpathを変えるだけでいろいろなRobotModelを使いたい

今までurdf内のpathの関係などは みたいにpackageの中で管理してきた。 モデルのメッシュのサイズが大きくなるにつれてgit で管理するのが難しくなってきたので、別でメッシュフォルダを用意するようにした。 そのときにPathを変更する必要があり、launchやurdfやdaeファイルなど、いろいろな場所でpathを揃えるのが面倒。

xacroでurdf内でも変数をつかえる

xacroを使うとurdfの中でも変数とかparamとか色々使えるようになるらしい。 http://wiki.ros.org/xacro

書き方などは書いてあるが、少し手間取ったのでメモ

<RobotModel_pub.launch>

<!-- -->
<launch>
<arg name="dire" default="/home/IN_urdf_and_dae_directory/" />
<arg name="urdf" default="AAA.urdf.xacro" />

<param name="RobotName" command="$(find xacro)/xacro  '$(arg dire)/$(arg urdf)' path:=$(arg dire)" />
</launch>

<HOGE.urdf.xacro>

<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="RobotName">
    <xacro:arg name="path" default="/home/In_dae_file_directory"/>
    <link name="map">
        <visual name="map_visual">
            <origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0"/>
            <geometry name="RobotName_geom">
                <mesh filename="file://$(arg path)/Robot.dae" scale="1 1 1"/>
            </geometry>
        </visual>
    </link>
</robot>

<ファイル構成>
home
-urdf/ toaru.urdf.acro
-urdf/ Robot.dae

roslaunch [your_package] RobotModel_pub.launch dire:=home/urdf/ urdf:=toaru.urdf.xacro

こんな感じでpathがlaunchだけで完結することができて色々こんがらがらない. もしくは使う目的が決まっていればlaunchの中でdefaultの値を変更してしまう。

もちろん、package内で使うときはfind packageとかを使ってもいい。 便利。