xyz: -0. ( ) 345 0 0.0 別 85 my: 0 -0 0 BODY R to SERVO HORN X ー HAIR BACK FACE TO HAI R B rpy: 0 -0 0 xyz: 0 0 0 FACE SERVO ー TO FACE y: 0 ー 0 0 yz: 0 0 0 SERVO ー Joint Servol y: 0 -0 0 yz: 0 0 0 S ERVO HORN X ー xyz: 0 0 0 rpy: 0 -0 0 FACE TO HAI R F HAIR FRONT xyz: 0 0 0 rpy: 0 -0 0 HAIR TO KEMOMIMI L KEMOMIMI L xyz: 0 0 0 KEMOMIMI R HAIR TO KEM OM IMI R rpy: 0 -0 0
base link yz: 0 0 0 y: 0 -0 0 BODY(DEB UG) BODY BASE xyz: 0 0 0 」 3985 rpy: 0 -0 0 base い BODY L xyz: 0 0 0 」 3985 rpy: 0 -0 0 base い BODY R rpy: 0 -0 0 -0. ( )( ) 5 -0.0296 0. % 円 B ODY R xyz: 0 -0.0296 0 my: 0 -0 0 BODY L い SERVO 3 SERVO_3 yz: 0 0 0 y: 0 ー 0 0 Joint Serv03 SERVO HORN 3 yz: 0 0 0 y: 0 -0 0 HORN_TO_ARM_L ARM L 42 BODY_L -0. ( )( ) 5 0.0296 0.06 円 yz: 0 0.0296 0 rpy: 0 -0 0 rpy: 0 -0 0 BODY L_to_SERVO_5 SERVO_5 yz: 0 0 0 y: 0 -0 0 Joi nt Serv05 SERVO HORN_5 yz: 0 0 0 y: 0 -0 0 HORN TO LEG L LEG L yz: 0 0 0 y: 0 -0 0 LEG TO BOOTS_L B OOTS_L BODY R to SERVO 2 SERVO 2 y: 0 -0 0 yz: 0 0 0 y: 0 -0 0 yz: 0 0 0 SERVO HORN 2 Joi nt Serv02 HORN_TO_ARM_R ARM R BODY R to SERVO 4 SERVO 4 yz: 0 0 0 y: 0 -0 0 」 oint Serv04 SERVO_HORN_4 BOOTS_R LEG_TO_BOOTS_R y: 0 -0 0 yz: 0 0 0 LEG R HORN_TO LEG_R y: 0 -0 0 yz: 0 0 0
く parent link="SERV0_2" / > く child link="SERV0 HORN 2 ” / > く origin xyz="0.0 0.0 0.0 " rpy="0 0 0 " / > く axis xyz="0 1 0 ” / > く /joint> く jOint name="HORN TO ARM-R" type="fixed"> く parent link="SERVO_HORN_2" / > く limit lower ゞ - 5.1415926 " upper = " 引 1415926 " effort = " 0.24516625 " velo ( ity = ” 10.4719755114 " / > く origin xyz="0.0 0.0 0.0 " rpy="0 0 0 " / > く child link="SERV0_HORN_3" / > く parent link="SERVO_3" / > く jOint name="J0int Serv03" type= く /joint> く origin xyz="0.0 0.0 0.0 " rpy="0 0 0 " / > く曲 ild link="ARM_R" / > revolute"> く limit lower = " - 引 1415926 " upper = " 引 1415926 " effort = " 0.24516625 " velocity = " 10.4719755114 " / > く visual> く link name="SERV0 HORN 4 " > - Leg parts ー く /joint> く origin xyz="0.0 0.0 0.0 ” rpy="0 0 0 " / > く child link="ARM_L" / > く parent link="SERVO_HORN_3" / > く j0int name="HORN TO ARM-L" type="fixed"> く /joint> く axis xyz="0 1 0 " / > く geometry> く origin xyz="0.0 0.0 0.0 " rpy = " 1 . 5708 1 . 5708 0 " / > く mesh filename="package ://yobicon_description/meshes/SG92R_horn i. stl" scale 0 . 001 0.001 0 .001 " / > く /geometry> く material name="sg92r_horn ( 010r " / > く /visual> く /link> く link name="LEG R"> く visual> く geometry> く mesh filename="package : //yobicon_description/meshes/LegRight. stl" 0 . 001 ” / > く /geometry> く material name="skin ( 010r " / > く /visual> く /link> く link name="SERV0 HORN 引 > く visual> く origin xyz ニ " 0.0 0.0 0.0 ” rpy = ” -1 . 5708 1 . 5708 0 ” / > く geometry> scale = ” 0 . 001 0 . 001 く mesh filename="package ://yobicon_description/meshes/SG92R_horn i. stl" 0 . 001 ” / > く /geometry> く material name="sg92r horn ( 010r " / > く /visual> scale ゞ 0 . 001 0 . 001 37
く child link="SERV0_HORN_X_1 ” / > ” -0.00545 0.0 0.08185 " rpy="0 0 0 " / > く orlgln XYZ= く joint name="BODY_R_to SERV0-2" type="fixed"> く j0int name="BODY ユ -t0 SERVO-3" type="fixed"> く曲 ild link="SERV0_3" / > く parent link="BODY_L" / > く /joint> く orlgln XYZ2 く child link="SERV0_2" / > く parent link="BODY_R" / > く /joint> ”ー 0.005 - 0.0296 0.0619 ” rpy="0 0 0 ” / > く 0 「 lgln XYZ= " ー 0.005 0.0296 0.0619 " rpy="0 0 0 " / > く child link="SERV0_5" / > く parent link="BODY_L" / > く jOint name="BODY_L_to_SERV0_5" type="fixed"> く /joint> く origin xyz="0.0 - 0.0296 0.0 " rpy="0 0 0 " / > く child link="SERV0_4" / > く parent link="BODY_R" / > く j0int name="BODY_R_to SERV0-4" type="fixed"> く /joint> く visual> く link name="SERV0 1 ” > - Head parts - く /joint> く origin xyz="O. 0 0.0296 0.0 " rpy="0 0 0 " / > く mesh filename="package://yobicon-description/meshes/face. stl" scale = " 0.001 0.001 0.001 " / > く geometry> く visual> く link name="FACE"> く /link> く /visual> く material name="sg92r_color"/> く /geometry> 0 . 001 ” / > く mesh fiIename="package://yobicon-description/meshes/SG92R_servo. stl" s ( ale = " 0.001 0.001 く geometry> く origin xyz="0.0 0.0 0.0 " rpy = " 引 1415926 0.0 0.0 " / > ← X 軸でぐるっと逆さまに回転 く /geometry> く material name="skin ( 010 「” > く ( 010r rgba = " 0.9960 0.9450 0.8784 1 " / > く /material> く /visual> く /link> く link name="HAIR FRONT"> く visual> く geometry> ←イラストの肌色から入力してみたが色が違う・・・ ? く mesh filename= package://yobicon description/meshes/HairFront. stl" 0.001 ” / > く /geometry> く material name="hair ( 010r " > く ( 010r r ba 0 . 引 25 0.5255 0. 1 " / > 34 scale ニ齟 . 001 0 . 001
く /visual> く /link> く link name="SERV0 引 > く visual> く origin xyz="0.0 0.0 0.0 " rpy = " ー 1 . 5708 1 . 5708 0 " / > く geometry> く mesh filename="package://yobicon description/meshes/SG92R_servo. stl" 0 . 001 ソ > く /geometry> く material name="sg92r_coIor"/> く /visual> く /link> く link name="SERV0 4 ” > く visual> く origin xyz="0.0 0.0 0.0 " rpy = " 1 . 5708 -1 . 5708 0 " / > く geometry> く mesh fiIename="package://yobicon-description/meshes/SG92R_servo. stl" 0.001 ソ > く /geometry> く material name="sg92r_coIor"/> く /visual> く /link> く link name="SERV0 5 " > く visual> く origin xyz="0.0 0.0 0.0 " rpy = " -1 . 5708 - 1 . 5708 0 " / > く geometry> く mesh fiIename="package://yobicon-description/meshes/SG92R_servo. stl" 0 . 001 " / > く /geometry> く material name="sg92r_coIor"/> く /visual> く /link> scale scale scale ゞ 0.001 0.001 = . 001 0 . 001 0 . 001 0 . 001 く joint name="BODY(DEBUG)" type = " revolute " > ←全体を傾けて遊びたかったので DEBUG 用のリンクを作成 く parent link="base link" / > く child link="BODY BASE" / > く origin xyz="0.0 0.0 0.0 " rpy="0 0 0 " / > く limit lower ゞ - 1 . 5708 ” upper ゞ 1 . 5708 ” effo 「 t = " 0.24516625 ” velocity= " 10.4719755114 ” / > ←角度等制限 く axis xyz="0 1 0 ソ > く /joint> ← Y 軸で回転 く j0int name="base t0 BODY-R" type="fixed"> く parent link="BODY_BASE" / > く child link="BODY R" / > く origin xyz="0 0 0.15985 " rpy="0 0 0 " / > く /joint> く j0int name="base t0 BODY-L" type="fixed"> く parent link="BODY_BASE" / > く child link="BODY_L" / > く origin xyz="0 0 0.15985 " rpy="0 0 0 " / > く /joint> く joint name="BODY_R_to SERVO HORN-X-I " type="fixed"> く parent link="BODY_R" / > 33
く origin xyz="O. 0 0.0 0.0 " rpy="0 0 0 " / > く /joint> く j0int name="HAIR_TO_KEMOMIMI R" type="fixed"> く parent link="HAIR_BACK" / > く child link="KEMOMIMI_R" / > く origin xyz="0.0 0.0 0.0 " rpy="0 0 0 " / > く /joint> く j0int name="HAIR_TO_KEMOMIMI_L" type="fixed"> く parent link="HAIR_BACK" / > く child link="KEMOMIMI_L" / > く origin xyz="O. 0 0.0 0.0 " rpy="0 0 0 " / > く /joint> Arm parts く link name="SERV0 HORN 2 " > く visual> く mesh filename="package://yobicon-description/meshes/SG92R_horn i. stl" く geometry> く origin xyz="0.0 0.0 0.0 " rpy = " 1 . 5708 1 . 5708 0 " / > scale = " 0 . 001 0 . 001 0.001 ” / > く /geometry> く material name="sg92r-horn_color"/> く /visual> く /link> く link name="ARM R"> く visual> く geometry> く mesh filename="package://yobicon description/meshes/ArmRight. stl" scale ゞ 0 . 001 0 . 001 0 . 001 ” / > く /geometry> く material name= く /visual> く /link> "skin ( 010r " / > く link name="SERV0 HORN 引 > く visual> く geometry> く origin xyz="0.0 0.0 0.0 " rpy = " -1 . 5708 1 . 5708 0 " / > く mesh filename="package://yobicon description/meshes/S692R horn i. stl" scale 0 . 001 0 . 001 0 . 001 ” / > く /geometry> く material name="sg92r_horn 〔 010r ” / > く /visual> く /link> く link name="ARM L"> く ViSUaI> く geometry> く mesh filename="package://yobicon description/meshes/ArmLeft. stl" く /geometry> く material name="skin ( 010r " / > scale ゞ 0 . 001 0.001 0 . 001 ” / > く /visual> く /link> く・ Oint name= 36 "Joint Serv02" t pe=' revolute">
く /joint> く j0int name="LEG_TO_B00TS_R" type="fixed"> く parent Iink="LEG_R" / > く child link="B00TS_R" / > く origin xyz="O. 0 0.0 0.0 ” rpy="0 0 0 " / > く /joint> く j0int name="LEG_TO_B00TS_L" type="fixed"> く parent link="LEG_L" / > く child Iink="B00TS_L" / > く origin xyz ニ " 0.0 0.0 0.0 " rpy="0 0 0 ” / > く /joint> く /robot> かなり長くなってしまいましたが、いかがでしたか ? 同じような定義が何回も出てきて無駄に感じたりした方は、 XACRO ファイルというマクロの記述方 法について調べて頂けると良いと思います。本書ではあえて平文で全ての定義を記述しましたが、通常 はもっとエレガント ( ? ) に書く方法があるので、さらに複雑な関節構造に成長した際には挑戦してみ ようと思います。 39
く /material> く /visual> く /link> く link name="HAIR BACK"> く visual> く geometry> く mesh filename="package://yobicon description/meshes/HairBack. stl" 0 . 001 ソ > く /geometry> く material name="hair ( 010r ” / > く /visual> く /link> く link name="KEMOMIMI R"> く visual> く geometry> scale = ” 0 .001 0.001 く mesh filename="package ://yobicon description/meshes/KemonomimiRight. stl" scale = ” 0.001 0.001 0.001 ソ > く /geometry> く material name="mimi ( 010r ” > く C010r rgba = " 0.9845 0.8588 0.5845 1 " / > く /material> く /visual> く /link> く link name="KEMOMIMI L"> く visual> く geometry> ←一応、狐耳の設定なので黄色系、色再現度は ( 略 く mesh filename="package ://yobicon_description/meshes/KemonomimiLeft. stl" scale = ” 0.001 0.001 0 . 001 ” / > く /geometry> く material name=nmimi C010r " / > く /visual> く /link> く j0int name="Joint Serv01" type="revolute"> く parent link="SERV0_HORN_X_1" / > く child link="SERV0 1 " / > く origin xyz="0.0 0.0 0.0 " rpy="0 0 0 " / > く limit lowe 「 = ” - 1 . 5708 “ upper = " 1 . 5708 " effort = " 0.24516625 ” velo ( ity ゞ 10.4719755114 " / > く axis xyz="0 0 1 ソ > く /joint> く j0int name="SERVO_1_T0_FACE" type="fixed"> く parent link="SERV0_I " / > く child link="FACE" / > く origin xyz="0.0 0.0 0.0 " rpy="0 0 0 " / > く /joint> く j0int name="FACE_T0_HAIR_F" type="fixed"> く parent link="FACE" / > く child link="HAIR FRONT" / > く origin xyz="O. 0 0.0 0.0 " rpy="0 0 0 " / > く /joint> く joint name="FACE TO-HAIR-B" type="fixed"> く parent link="FACE" / > く child link="HAIR BACK" / > 35
く /link> く link name="LEG L"> く visual> く geometry> く mesh filename="package://yobicon-description/meshes/LegLeft. stl" く /geometry> く material name="skin ( 010r ” / > く /visual> く /link> く link name="B00TS R"> く visual> く geometry> scale く mesh filename="package://yobicon-description/meshes/B00tsRight. stl" 0 . 001 ” / > く /geometry> く material name="boots ( 010r ” > く ( 010r rgba="0.2 0.1 0.1 1 ” / > く /material> く /visual> く /link> く link name="B00TS L"> く visual> く geometry> く mesh filename="package://yobicon description/meshes/B00tsLeft. stl" く material name="boots C010r ” / > く /geometry> 0 . 001 ” / > く origin xyz="0.0 0.0 0.0 " rpy="0 0 0 " / > く child link="SERV0 HORN_4" / > く parent link="SERV0_4" / > く jOint name="J0int_Serv04" type= く /link> く /visual> revolute"> scale scale = " 0.001 0.001 0 . 001 ” / > = ” 0.001 0. 囲 1 ニ " 0.001 0 . 001 く limit lower = " - 引 1415926 " upper = " 5.1415926 れ effort = " 0.24516625 " velo ( ity = " 10.4719755114 " / > く parent link="SERV0_HORN 4 " / > く j0int name="HORN TO-LEG-R" type="fixed"> く /joint> く axis xyz="0 1 0 " / > く origin xyz="0.0 0.0 0.0 " rpy="0 0 0 " / > く child link="SERV0_HORN_5" / > く parent link="SERV0_5" / > く j0int name="J0int_Serv05" type= く /joint> く origin xyz="0.0 0.0 0.0 " rpy="0 0 0 " / > く child Iink="LEG_R" / > revolute"> く limit lower = " - 引 1415926 " upper = " 引 1415926 " effort = " 0.24516625 " velo ( ity = " 10.4719755114 " / > 38 く ori in x z ニ " 0.0 0.0 0. 們「 y = ” 0 0 0 " / > く child link="LEG L" / > く parent link="SERV0_HORN_5" / > く jOint name="HORN_T0 LEG-L" type="fixed"> く /joint> く axis xyz="0 1 0 " / >
5.2.8 yobicon. urdf ファイノレ さて、単純なファイルの内容を踏まえて基本的な構成を説明しましたので、次は実際に y 。 bic 。 n のモ デルを使ったファイルを読み進めてみましよう。わかりづらい部分には適宜コメントを太字で示しま す。 く ?xml version="l . 0" ? > く「 ObOt name="yobicon"> - BODY parts - く link name="base link" / > く link name="BODY BASE" / > く link name="BODY R"> く visual> く geometry> ←コメントの入れ方、ただし全角文字入れるとエラーになります ←べースリンク ←体のべース、今回はデバッグ用に 2 段階のべース構造にしました ←右半身のリンク 0 . 001 ソ > く mesh filename="package://yobicon description/meshes/B0dyRight. stl" s ( ale = " 0.001 0.001 ←外見に使用する STL ファイルの指定、スケールは 1000 分の 1 く /geometry> く material name="body_color"> く co 朝 r rgba="0.2 0.2 0.2 1 " / > ←体の色は暗いグレー く /material> く /visual> く /link> く link name="BODY L"> く ViSUal> く geometry> く mesh filename="package ://yobicon_description/meshes/B0dyLeft. stl" 0 . 001 ” / > く /geometry> く material name="body-color" / > ←ニ回目以降は数値を省略できます scale = ” 0 .001 0 . 001 く /visual> く /link> く link name="SERV0 HORN X 1 " > く visual> く geometry> ←首の X 型サーボホーン く mesh filename="package ://yobicon_description/meshes/SG92R_horn X. stl" 0 . 001 ソ > く /geometry> く material name="sg92r_horn ( 010r " > く ( 010r rgba="0.5 0.5 0.5 1 " / > く /material> く /visual> く /link> く link name="SERV0 2 ” > く visual> scale ニ " 0 . 001 0 . 001 く origin xyz=no. 0 0.0 0.0 " rpy = " 1 . 5708 1 . 5708 0 " / > ← X 軸、 Y 軸それぞれ 90 度ずつ回転 く geometry> く mesh filename="package://yobicon description/meshes/SG92R-servo. stl" s ( ale = " 0.001 0.001 0 . 001 ソ > く /geometry> く material name=nsg92r_coIor"> く ( 010r rgba="0 0 0.5 1 " / > く /material> 32