Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SDFからVRMLへの変換でリンクが消える #38

Open
fkanehiro opened this issue Sep 10, 2015 · 8 comments
Open

SDFからVRMLへの変換でリンクが消える #38

fkanehiro opened this issue Sep 10, 2015 · 8 comments

Comments

@fkanehiro
Copy link
Owner

@yosuke さん、次のようなsdfを変換するとchildがいなくなってしまうのですが、なぜでしょうか?

<?xml version="1.0" ?>
<sdf version="1.5">
  <model name="test">

    <link name="parent">
    </link>
    <link name="child">
    </link>

    <joint name="joint" type="revolute">
      <parent>parent</parent>
      <child>child</child>
    </joint>
  </model>
</sdf>
@yosuke
Copy link
Contributor

yosuke commented Sep 10, 2015

一部のモデルの変換(Atlasなど)で、上と同じような空のリンクがあり、それを空のVRMLジョイントセグメントに変換するとmodel-loader側で読み込みエラーが出たので、空のリンクは変換をスキップする処理が入っています。

リンクの中にvisualかcollisionがなく、かつ子リンクもない場合、変換をスキップするというルールにしているのですが、このルールで不都合がありそうでしたら調整します。

@fkanehiro
Copy link
Owner Author

model-loaderでどのようなエラーがでますでしょうか。以下のようなVRMLで試しましたが特にエラーは発生しませんでした。

DEF box Humanoid {
  humanoidBody [
    DEF WAIST Joint {
      jointType "fixed"
      translation 0 0 0
      rotation 0 0 1 1.5708
      children [
        DEF BODY Segment {
          mass 0.5
          children [
            Shape {
              geometry Box {
                  size 0.2 0.8 0.2
              }
              appearance Appearance {
                  material Material {
                      diffuseColor 0.0 1.0 0.0
                  }
              }
            }
          ]
        }
        DEF CHILD Joint {
          children [
            DEF CHILD_S Segment {
            }
          ]
        }
      ]
    }
  ]
  joints [
    USE WAIST,
    USE CHILD
  ]
  name "box"
  segments [
    USE BODY,
    USE CHILD_S
  ]
}

今回のケースでは、形状はないが質量はあるリンクをぶら下げたいと思っています。
なので、形状も質量も子供もないリンクは消してよいと思いますが、いずれか1つでもあるものは残していただけると助かります。

@yosuke
Copy link
Contributor

yosuke commented Sep 11, 2015

上の例、ありがとうございます。

VRMLの出力が良くなかった(空出力のやり方が間違っていた)可能性が大ですね。

上の例でエラーが出ないのであれば変な条件判断する必要なく空は空のまま出せると思うので、そのように変更します。

yosuke added a commit to yosuke/simtrans that referenced this issue Sep 11, 2015
@yosuke
Copy link
Contributor

yosuke commented Sep 11, 2015

#39 で変な条件判断を消去しました。

昔(最初のバージョンの開発中)はこれでロード時にエラーが出たのだけどな、、、と思っていたのですが、今は条件判断を削除してもエラーは再現しませんでした。たぶんどこかでフォーマットが間違えていたのだと思います。

fkanehiro added a commit that referenced this issue Sep 11, 2015
remove special handling of empy vrml link (ref #38)
@fkanehiro
Copy link
Owner Author

ありがとうございます。
あまり実害はないようなのですが、Jointが2つあるにも関わらず、Humanoidのjointsフィールドには1つしか出力されないようです。
それとsegmentsフィールドは空のようです。

@yosuke
Copy link
Contributor

yosuke commented Sep 11, 2015

jointに関してはfixedなどのjointIdを振ってはいけないものをjointsフィールドに入れてしまうとChoreonoidでジョイントスライダー画面にスライダーが出てこないという現象があったため、対処としてこのようにしています。
ただ空セグメント同様、試行錯誤の産物なので正しいやり方があったら直します。

segmentsフィールドも無くても動いていたのでどこかのバージョンでコメントアウトしてしまったのですが、復活させておきます。

@fkanehiro
Copy link
Owner Author

はい、特に深刻な影響はなさそうなのでお手すきの際におねがいします。
スライダーの件はchoreonoid側を直すべきかと思います。

@yosuke
Copy link
Contributor

yosuke commented Sep 11, 2015

了解しました。

もろもろ一段落したらjointsについてはもう少し症状を狭めてまずはchoreonoidの方にissueをあげておきます。
segmentsについても後ほど復活させえておきます。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants