-
Notifications
You must be signed in to change notification settings - Fork 3
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
編集できないプロパティが色々ある #12
Comments
encoderPulseとrotorResistorについては使われていない、gearRatioとrotorInertiaについては掛けあわせたものしか保存されていない問題あり。getOriginalNodeで取ってくる実装が適切か? |
JointItemのJointID、LinkItemのMassがまだ編集できません。 |
デフォルト値を反映させるようにしたのですが、VRMLファイルから読み込んだ値ではないので、まだあまりよろしくない状態です。 ChoreonoidのLinkクラスに読み込まれた状態でGearRatioなどが失われてしまっているのが痛いのですが、これらを保存しておく実装にするのは影響が大きいでしょうか? > @s-nakaoka さん |
jointId、massが編集できることを確認しました。 |
@s-nakaoka さん、いかがですか? |
すみません、本件見逃しておりました。 まずGearRatioなどのパラメータをLinkクラスのメンバとして格納していなかった理由について。Linkクラスでは、メンバとして持たせる情報はなるべく基本的な最低限のものに限定したいと思っています。そうでないと、物理エンジンごとにそれぞれ異なる必要な情報がいろいろあったりして、それらに対応しようとするとどんどんメンバが増えてしまいそうですし、それでも今後対応する物理エンジンで必要な情報を全てカバーできるとも限りません。これは物理エンジンに限らず、他の機能でも同様です。 なので、基本的な情報以外は動的に定義・格納できる仕組みが必要だと思っていたのですが、Linkクラスについてはまだ手付かずでした。それでgearRatio等も放置されていた次第です。 これについて今回考えてみたのですが、Bodyクラスには既に動的な情報格納のため、YAMLの型でinfoというメンバを持たせていて、いくつかの機能で使っていました。これでいちおう使えていて問題無さそうだったので、Linkクラスでも同様のinfoを追加することにしてみます。 というわけで試験的に実装したのが s-nakaoka/choreonoid@0ab5b38 です。 Mapping型のポインタを返すinfo()関数をLinkクラスに追加しています。そしてVRMLBodyLoaderで、gearRatio等のパラメータをここに格納するようにしました。 アクセス方法はMapping型で使える方法はなんでも使えますが、手軽に使えるようにするために、Linkクラスに template T info(const std::string& key) const; というテンプレートも追加しました。
とか、
とかして値の読み込み・設定ができます。(読み込み時にキーがないと例外が発生します。) 以上、とりあえず暫定版ということで作ってみました。今後変更にならないとも限りませんが、これで問題なさそうでしたらこのままいければと思います。 |
補足です。infoでアクセスする情報はモデルファイルのフォーマットや、実際に値が書いてあるかどうか等によって、指定のキーの値が存在しない場合もあり得ます。ですので、読み込み側ではそこのところを配慮する必要があるかと思います。 例えば、
とすると、double値を有する"gearRatio"が存在すればその値が返り、無ければデフォルト値として渡した1.0が返るようになります。 |
情報ありがとうございます。何か理由もありそうだなとも思っていたので、説明を読んで納得しました。 setInfo, infoを使う形で実装してみます。 前にやや無理やり入れてしまったgetOriginalNodeなどもこのinfoのところに入れたほうが綺麗になりそうな気もしているのですが、それについてはのちほど。 |
Jointノードのlvlimit, uvlimit, gearRatio, rotorInertia等。
The text was updated successfully, but these errors were encountered: