[PYTHON] Tutoriel PyODE 1

Exemple d'exécution de l'exemple PyODE

J'ai essayé d'exécuter le "Tutorial 1" du site Honke PyODE-sama.

・ Cliquez ici pour l'article sur "Tutorial 3" (https://qiita.com/emuai/items/840c776f146ac12ac416)

Ce "Tutoriel 1" donne juste une vitesse initiale à un objet et voit à quoi il ressemble. Dans le sens de "vérifier le fonctionnement de PyODE", l'affichage du résultat n'est que l'affichage de la valeur à la sortie standard.

Dans cet article, j'ai essayé d'ajouter un affichage de tracé avec Matplotlib.

Code (tout)

↓ Ceci est le code original plus l'appel de tracé Matplotlib et la création de tableau de tracé.

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: Correction que la position de départ ne pouvait pas être enregistrée

résultat

(Veuillez installer numpy et matplotlib à l'avance.) Quand tu cours ... y.png

↑ Cette image graphique (PNG) est enregistrée en tant que courant. C'est le changement temporel de la hauteur de l'objet projeté dans le sens vertical (coordonnée Y).

Recommended Posts

Tutoriel PyODE 2
Tutoriel PyODE 1
Tutoriel PyODE 3
didacticiel sqlalchemy
Tutoriel Python
Tutoriel du didacticiel TensorFlow
Tutoriel Quantopian LESSON 10
Tutoriel RabbitMQ 5 (sujet)
Tutoriel Quantopian LEÇON 8
Tutoriel Quantopian LESSON 1, 2
Tutoriel Quantopian LESSON 6
Tutoriel Python Django (2)
Résumé du didacticiel Python
Tutoriel RabbitMQ 6 (RPC)
mémo du didacticiel django
Addendum au didacticiel Ryu
Tutoriel Python Django (8)
Tutoriel Python Django (6)
Démarrer le didacticiel Django 1
Tutoriel Quantopian LEÇON 9
Tutoriel Quantopian LESSON 5
Tutoriel Quantopian LESSON 3
Tutoriel Quantopian LESSON 7
Tutoriel gRPC de 5 minutes
Tutoriel Python Django (7)
Tutoriel Python Django (1)
Tutoriel Quantopian LEÇON 4
Tutoriel du didacticiel Python Django
Essayez d'utiliser PyODE
Tutoriel Quantopian LEÇON 11
Tutoriel Python Django (3)
Tutoriel RabbitMQ 4 (Routage)
Tutoriel pour débutants en tyrolienne
[Français] tutoriel hyperopt
Tutoriel Python Django (4)