最近のChoreonoidで円柱の多面体近似の分割数を変更する方法を教えてください.バージョン1.5の頃にMLで教えていただいた以下の内容に代わることです.
[choreonoid-users-ja 00209] Re: AISTシミュレータの円筒モデルが変?(Re: 車輪のシミュレーション)
オドメトリのシミュレーションを試しているのですが,円柱が平面上を転がる際の回転量と並進量の関係が理論から数%ずれるので,多面体近似の影響を確認しようとしています.
最近のChoreonoidで円柱の多面体近似の分割数を変更する方法を教えてください.バージョン1.5の頃にMLで教えていただいた以下の内容に代わることです.
[choreonoid-users-ja 00209] Re: AISTシミュレータの円筒モデルが変?(Re: 車輪のシミュレーション)
オドメトリのシミュレーションを試しているのですが,円柱が平面上を転がる際の回転量と並進量の関係が理論から数%ずれるので,多面体近似の影響を確認しようとしています.
あてずっぽうでbodyファイルのあちこちに
divisionNumber: 200
と書いてみてワイヤフレーム表示で確認しているのですが,分割数が変わりません.
別にYAMLファイルを用意し,その中に
modelFile: "xxx.body"
geometry:
divisionNumber: 200
と書き,それをChoreonoidで読み込めばできました.
こうするよりほかに手はないのでしょうか?それだけのために,別にYAMLファイルを作るのは今一つですが…
ちなみに,デフォルトでは分割数は20ですが,その場合の理論値との差は1.5%程度.分割数を200にすると,それが半分ぐらいになりました.
また,AISTSimulatorの設定でも変化しますが,何をどういじるのがいいかわかっていません.マニュアルにもっと詳しく書いてほしいです.
回答が遅くなりまして申し訳ありません。
今ソースをみて確認したのですが、Bodyファイルの中に直に
geometry:
divisionNumber: 200
と書けばよいようです。
また,AISTSimulatorの設定でも変化しますが,何をどういじるのがいいかわかっていません.マニュアルにもっと詳しく書いてほしいです.
これは、円柱状の物体の転がり具合についてでしょうか?
シミュレーションの対象となり得る現象は他にも無数にありますし、それぞれで目指すべきところもケースバイケースになりますので、それら全てを事前にマニュアル化するというのは、現実的ではないと思います。
円柱状の物体に関しては、エンジンによっては物理計算にもプリミティブを使うようになっており、そちらの方が転がりはスムーズになるかと思います。ただその場合でも摩擦や計算アルゴリズム等のパラメータ設定で変わってくると思いますので、一概には言えません。
bodyファイルのどの部分に書けばいいですか?改めて以下の4か所で試してみましたが,いずれも効果がありませんでした.
format: ChoreonoidBody
formatVersion: 1.0
angleUnit: degree
name: Turtlebot
geometry:
divisionNumber: 100 # ← (1)
links:
-
name: base_footprint
#中略
-
name: wheel_left_link
parent: base_footprint
#中略
geometry:
divisionNumber: 100 # ←(2)
elements:
-
type: Visual
#中略
-
type: Collision
elements:
-
type: Transform
scale: [1.0, 1.0, 1.0]
translation: [0.0, 0.0, 0.0]
rotation: [1.0, 0.0, 0.0, 90]
geometry:
divisionNumber: 100 # ←(3)
elements:
Shape:
geometry:
type: Cylinder
radius: 0.0352
height: 0.0206
divisionNumber: 100 # ←(4)
#後略
干渉チェックモデルを表示させて,ワイヤフレーム表示で確認しています.
yamlファイルに以下のように書いてモデルとして読み込んだ場合は効果があることを確認しています.
modelFile: "turtlebot.body"
geometry:
divisionNumber: 100
大変失礼しました。
以下のコードをみてそのように回答してしまったのですが、
よくみたらこれは別のモデルファイルを読み込むための関数でした。
分割数は各々のプリミティブごとに設定できた方が柔軟性があってよいと思うので、そのような修正をしようと思います。
よろしくお願いいたします.
特定の現象のことではなく,AISTSimulatorの各設定項目についてその意味(効能)と設定のノウハウ,例えば,「…というような場合は,この値を大きくするといい」「この値を大きくすると精度は上がるが計算量が増える」というような内容をマニュアルに書いていただけると嬉しいということです.
遅くなってしまいましたが、プリミティブごとの分割数の指定をできるようにしました。
とりあえずBodyファイルに直接YAMLでプリミティブを書く場合に対応しています。
例えばシリンダーでしたら、
geometry:
type: Cylinder
radius: 0.01
height: 0.05
divisionNumber: 50
などと書きます。
他にもSphere、Cone、Capsuleのプリミティブで指定できます。
プリミティブごとに分割数を設定できることを確認しました.
2020年度の教材のモデルファイルに反映しました.
これも今ごろに申し訳ありません.