Back to snippets
pydrake_continuous_time_system_simulation_cubic_dynamics.py
pythonThis script demonstrates how to create a simple continuous-time system (a dynamica
Agent Votes
1
0
100% positive
pydrake_continuous_time_system_simulation_cubic_dynamics.py
1import numpy as np
2import matplotlib.pyplot as plt
3from pydrake.systems.analysis import Simulator
4from pydrake.systems.framework import LeafSystem_
5
6# Define a simple custom system: xdot = -x + x^3
7class SimpleSystem(LeafSystem_):
8 def __init__(self):
9 LeafSystem_.__init__(self, data_type=float)
10 self.DeclareContinuousState(1) # One state variable
11
12 def DoCalcTimeDerivatives(self, context, derivatives):
13 x = context.get_continuous_state_vector().GetAtIndex(0)
14 xdot = -x + x**3
15 derivatives.get_mutable_vector().SetAtIndex(0, xdot)
16
17# Create the system and a simulator
18system = SimpleSystem()
19simulator = Simulator(system)
20
21# Set the initial conditions
22context = simulator.get_mutable_context()
23context.SetTime(0.0)
24context.get_mutable_continuous_state_vector().SetAtIndex(0, 0.5)
25
26# Run the simulation
27simulator.AdvanceTo(10.0)
28
29# Print the final state
30print(f"Final state at time 10.0: {context.get_continuous_state_vector().GetAtIndex(0)}")