[PYTHON] PyODE Tutorial 1

Beispiel für die Ausführung eines PyODE-Beispiels

Ich habe versucht, "Tutorial 1" von Honke PyODE-sama site auszuführen.

・ Klicken Sie hier, um den Artikel zu "Tutorial 3" zu lesen (https://qiita.com/emuai/items/840c776f146ac12ac416).

Dieses "Tutorial 1" gibt nur einem Objekt eine Anfangsgeschwindigkeit und sieht, wie es aussieht. Im Sinne von "Überprüfen des Betriebs von PyODE" ist die Ergebnisanzeige nur die Wertanzeige für die Standardausgabe.

In diesem Artikel habe ich versucht, eine Plotanzeige mit Matplotlib hinzuzufügen.

Code (alle)

↓ Dies ist der Originalcode plus Matplotlib-Plotaufruf und Plot-Array-Erstellung.

Tutorial-1_plot.py


# pyODE example 1: with MPL-plot
    
import ode

# Create a world object
world = ode.World()
world.setGravity( (0,-9.81,0) )

# Create a body inside the world
body = ode.Body(world)
M = ode.Mass()
M.setSphere(2500.0, 0.05)
M.mass = 1.0
body.setMass(M)

body.setPosition( (0,2,0) )
body.addForce( (0,200,0) )

# Do the simulation...
total_time = 0.0
dt = 0.04

import numpy as np
nt = 100
txyzuvw = np.zeros( (7,nt+1) )
tn=0
while total_time<2.0:
    x,y,z = body.getPosition()
    u,v,w = body.getLinearVel()
    print( "%1.2fsec: pos=(%6.3f, %6.3f, %6.3f)  vel=(%6.3f, %6.3f, %6.3f)" % \
          (total_time, x, y, z, u,v,w) )
    if tn <= nt:
        txyzuvw[0][tn]=total_time
        txyzuvw[1][tn]=x
        txyzuvw[2][tn]=y
        txyzuvw[3][tn]=z
        #txyzuvw[4][tn]=u
        #txyzuvw[5][tn]=v
        #txyzuvw[6][tn]=w

    world.step(dt)
    total_time+=dt

    tn += 1

end_tn = tn

import matplotlib.pyplot as plt
# MPL-Plot 
plt.plot( txyzuvw[0][0:end_tn], txyzuvw[2][0:end_tn], label='Vertical position')
plt.xlabel('time [s]')
plt.ylabel('Vertical position [m]')
plt.savefig('./y.png')

↑ 20200506: Korrektur, dass die Startposition nicht aufgezeichnet werden konnte

Ergebnis

(Bitte installieren Sie numpy und matplotlib im Voraus.) Wenn du rennst ... y.png

↑ Dieses Grafikbild (PNG) wird als aktuelles gespeichert. Dies ist die zeitliche Änderung der Höhe des in vertikale Richtung geworfenen Objekts (Y-Koordinate).

Recommended Posts

PyODE Tutorial 2
PyODE Tutorial 1
PyODE Tutorial 3
sqlalchemy Tutorial
Python-Tutorial
TensorFlow Tutorial Tutorial
Quantopian Tutorial LEKTION 10
RabbitMQ Tutorial 5 (Thema)
Quantopian Tutorial LEKTION 8
Quantopian Tutorial LEKTION 1, 2
Quantopian Tutorial LEKTION 6
Python Django Tutorial (2)
Zusammenfassung des Python-Tutorials
RabbitMQ Tutorial 6 (RPC)
Django Tutorial Memo
Ryu Tutorial Nachtrag
Python Django Tutorial (8)
Python Django Tutorial (6)
Starten Sie das Django Tutorial 1
Quantopian Tutorial LEKTION 9
Quantopian Tutorial LEKTION 5
Quantopian Tutorial LEKTION 3
Quantopian Tutorial LEKTION 7
5 Minuten gRPC-Tutorial
Python Django Tutorial (7)
Python Django Tutorial (1)
Quantopian Tutorial LEKTION 4
Python Django Tutorial Tutorial
Versuchen Sie es mit PyODE
Quantopian Tutorial LEKTION 11
Python Django Tutorial (3)
RabbitMQ Tutorial 4 (Routing)
zipline Anfänger Tutorial
[Übersetzung] Hyperopt-Tutorial
Python Django Tutorial (4)