質問するのは初めてなので、必要な情報をすべて含めるように最善を尽くします。
現在、PyBrain を使用した機械学習プロジェクトに取り組んでいます。私の目的は、振動の振幅を最大化するためにいつ力を加える必要があるかを駆動振り子に学習させることです。
xodetools.py
これを行うために、PyBrain に含まれているスクリプトを使用して、ODE (Open Dynamics Engine) でシステムをモデル化しました。モデルが機能してシミュレートされている間、振り子hinge
ジョイントに摩擦を追加する方法がわかりません。
Pybrain に含まれるサンプル モデルの一部 (例: johnnie_pgpe
) はFricMu
、Task クラスで呼び出されるパラメーターを再定義します。これをコードに含めましたがFricMu
、システムに等しい値を設定しても変更されません (注:string
シミュレーションを実行しても、このパラメーターは実際には何もしていないと思います)。
ODE のドキュメント ( http://ode-wiki.org/wiki/index.php?title=Manual:_Joint_Types_and_Functions#Contact ) をざっと見てみると、接触ジョイントを使用する必要があることがわかります。このタイプのジョイントはスクリプトでサポートされていないため、XML ファイルに直接書き込む必要があると思います。
PyBrain または ODE のいずれかを理解している人が、システムの減衰を増やす方法についてアドバイスをくれますか? ありがとうございました。
以下は、PyBrain によってインポートされた振り子の XML コードです。
<?xml version="1.0" encoding="UTF-8"?>
<xode version="1.0r23" name="pend"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://tanksoftware.com/xode/1.0r23/xode.xsd">
<world>
<space>
<body name="arm">
<transform>
<position y="0" x="0" z="0"/>
</transform>
<mass>
<mass_shape density="125.0">
<box sizex="0.2" sizez="0.2" sizey="0.2"/>
</mass_shape>
</mass>
<geom>
<box sizex="0.2" sizez="0.2" sizey="0.2"/>
</geom>
</body>
<body name="swing">
<transform>
<position y="0" x="0" z="2.2"/>
<rotation>
<euler y="0" x="0" aformat="degrees" z="0"/>
</rotation>
</transform>
<mass>
<mass_shape density="6.36619772588">
<cylinder length="5" radius="0.05"/>
</mass_shape>
</mass>
<geom>
<cylinder length="5" radius="0.05"/>
</geom>
</body>
<joint name="arm_swing">
<link1 body="arm"/>
<link2 body="swing"/>
<hinge>
<axis y="0" x="1" z="0"/>
<anchor y="0" x="0" z="0" absolute="true"/>
</hinge>
</joint>
<joint name="fixedPoint">
<link1 body="arm"/>
<link2 body="swing"/>
<fixed>
</fixed>
</joint>
<geom name="floor">
<plane a="0" c="0" b="1" d="-44.0"/>
</geom>
</space>
</world>
</xode>
<!--odeenvironment parameters
<passpairs>
('arm', 'swing')
<affixToEnvironment>
fixedPoint
<end>
-->