Simulation
If you choose to use the graphical user interface (usually invoked with
PyMbs.Input.MbsSystem.show()
), you can use PyMbs to simulate the
behaviour of your system. Essentially, what this does is writing the equations
of motions to a Python file in a temporary directory using the usual code
generation mechanism of PyMbs. Then it uses an ODE integrator from scipy to
calculate the coordinates of the system at the next point in time. These can
then be visualised in the GUI, provided you have supplied visualisation
information in your script.
For larger systems, Python can become too slow to evaluate the time derivate
for a smooth display of the motion of the system. In this case, you can use the
buttons Compile Model in Fortran or Compile Model in C to speed up the
calculation. Basically, this writes the time derivate as a Fortran or C
function, as you would with PyMbs.Input.MbsSystem.GenCode
, compiles it
to a shared library, and calls this function using a Python wrapper.
Control
The controller functionality provides the possibility to introduce loads whose value is determined by arbitrary Python code.
When you use PyMbs.Input.MbsSystem.addController()
, the control function
you supply is imported into the Python file containing the time derivative
function. So for each time step, your control function is called, and then the
result is used in the time derivative. This also works in conjunction with the
Compile Model in C button, where your function is called from the Python
wrapper. Currently, compiling a model with Fortran with a controller is not
supported.
For an introduction on how to use controllers take a look at the
Inverted Pendulum example. Additional examples with controllers can be
found at examples/controlled
.