xacroでRobotModelを表示したい
launchのpathを変えるだけでいろいろなRobotModelを使いたい
今までurdf内の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とかを使ってもいい。 便利。