Dieses Mal werden wir mit einem Parameter namens spinning_friction experimentieren. Gemäß der Schnellstartanleitung ist der Unterschied zur vorherigen Rollreibung wie folgt. Ich weiß nicht, ob es richtig ist, aber ich habe es als Reibungskoeffizienten mit unterschiedlichen Ausrichtungen verstanden.
Ich möchte die Wirkung der Parameter wissen, also werde ich 3 Sätze machen.
in test_box07a.urdf
<spinning_friction value =" 0.001 "/>in test_sphere05a.urdf --b gesetzt <Spinning_friction value = "0.004" />
in test_box07b.urdf
<Spinning_friction value =" 0.004 "/>
in test_sphere05b.urdf
-C eingestellt
<Spinning_friction value = "0.001" /> in test_box07c.urdf <Spinning_friction value = "0.004" />
in test_sphere05c.urdfDie urdf-Datei eines Satzes lautet wie folgt. (B gesetzt, c gesetzt) Und in test‗sphere05a.urdf ist visuell Box und Kollision Kugel.
test_box07a.urdf
<robot name="robot_name">
<link name="link_name">
<contact>
<lateral_friction value="1.0"/>
<rolling_friction value="0.0"/>
<spinning_friction value="0.004"/>
</contact>
<inertial>
<origin xyz="0.0 -1.0 -0.1" rpy="0.0 0.0 0.0"/>
<mass value="0.0"/>
<inertia ixx="0.0" ixy="0.0" ixz="0.0" iyy="0.0" iyz="0.0" izz="0.0"/>
</inertial>
<visual>
<origin xyz="0.0 -1.0 -0.1" rpy="0.0 0.0 0.0"/>
<geometry>
<box size="0.8 0.8 0.2"/>
</geometry>
<material name="red">
<color rgba="1.0 0.0 0.0 1.0"/>
</material>
</visual>
<collision>
<origin xyz="0.0 -1.0 -0.1" rpy="0.0 0.0 0.0"/>
<geometry>
<box size="0.8 0.8 0.2"/>
</geometry>
</collision>
</link>
</robot>
test_sphere05a.urdf
<robot name="robot_name">
<link name="link_name">
<contact>
<lateral_friction value="1.0"/>
<rolling_friction value="0.0"/>
<spinning_friction value="0.001"/>
</contact>
<inertial>
<origin xyz="0.0 -1.0 0.5" rpy="0.0 0.0 0.0"/>
<mass value="1.0"/>
<inertia ixx="0.1" ixy="0.0" ixz="0.0" iyy="0.1" iyz="0.0" izz="0.1"/>
</inertial>
<visual>
<origin xyz="0.0 -1.0 0.5" rpy="0.0 0.0 0.0"/>
<geometry>
<box size="0.4 0.4 0.4"/>
</geometry>
<material name="l_red">
<color rgba="1.0 0.5 0.5 1.0"/>
</material>
</visual>
<collision>
<origin xyz="0.0 -1.0 0.5" rpy="0.0 0.0 0.0"/>
<geometry>
<sphere radius="0.2"/>
</geometry>
</collision>
</link>
</robot>
shpere05aid = p.loadURDF("test_sphere05a.urdf")
p.applyExternalTorque(shpere05aid, -1, [0,0,100], flags=p.LINK_FRAME)
Ich wollte es wie eine Solomusik bewegen, also benutze ich applyExternalTorque. Erhalten Sie die eindeutige ID zum Zeitpunkt von loadURDF und geben Sie sie an applyExternalTorque weiter. Das nächste -1 ist die Basis, [0,0,100] ist das Drehmoment und flags = p.LINK_FRAME ist ein Flag, das das Drehmoment im lokalen Koordinatensystem angibt.
Das gesamte Skript ist unten.
import pybullet as p
import time
from PIL import Image
phisicsClient = p.connect(p.GUI)
p.setGravity(0,0,-10)
p.loadURDF("test_box07a.urdf")
p.loadURDF("test_box07b.urdf")
p.loadURDF("test_box07c.urdf")
sphere05aid = p.loadURDF("test_sphere05a.urdf")
sphere05bid = p.loadURDF("test_sphere05b.urdf")
sphere05cid = p.loadURDF("test_sphere05c.urdf")
p.applyExternalTorque(sphere05aid, -1, [0,0,100], flags=p.LINK_FRAME)
p.applyExternalTorque(sphere05bid, -1, [0,0,100], flags=p.LINK_FRAME)
p.applyExternalTorque(sphere05cid, -1, [0,0,100], flags=p.LINK_FRAME)
camera_img = p.getCameraImage(320,320)
imgs = [Image.fromarray(camera_img[2])]
for i in range(1200):
p.stepSimulation()
if i % 10 == 0:
camera_img = p.getCameraImage(320,320)
imgs.append(Image.fromarray(camera_img[2]))
time.sleep(1./240.)
p.disconnect()
imgs[0].save("test_pybullet_09.gif", save_all = True, append_images = imgs[1:], duration=10, loop = 0)
Das Ausführungsergebnis ist die folgende GIF-Animation. Von vorne ein Satz, b Satz, c Satz.
Das a-Set und das c-Set drehten sich länger und das b-Set war kürzer als sie. Diesmal scheint die Größe der Reibung durch die Summe der Parameter bestimmt zu werden, die den beiden Seiten gegeben wurden. Ein Satz: 0,004 + 0,001 = 0,005 b eingestellt: 0,004 + 0,004 = 0,008 c eingestellt: 0,001 + 0,004 = 0,005 Es scheint jedoch, dass lateral_friction auch einen Effekt hat, daher weiß ich nicht, wie ich es verwenden soll ...
Recommended Posts