pyomeca/pyorerun

View on GitHub
examples/biorbd/marker_tracking.py

Summary

Maintainability
A
0 mins
Test Coverage
import numpy as np
from pyomeca import Markers

from pyorerun import BiorbdModel, PhaseRerun


def main():
    biorbd_model_path = "models/double_pendulum.bioMod"

    # building some time components
    nb_frames = 200
    nb_seconds = 1
    t_span = np.linspace(0, nb_seconds, nb_frames)

    # building some generalized coordinates
    q = np.zeros((2, nb_frames))
    q[0, :] = np.linspace(0, 0.1, nb_frames)
    q[1, :] = np.linspace(0, 0.3, nb_frames)

    # loading biorbd model
    biorbd_model = BiorbdModel(biorbd_model_path)
    all_q = q + 0.3 * np.random.rand(2, nb_frames)
    noisy_markers = np.zeros((3, biorbd_model.nb_markers, nb_frames))
    for i in range(nb_frames):
        noisy_markers[:, :, i] = biorbd_model.markers(all_q[:, i]).T

    # running the animation
    rerun_biorbd = PhaseRerun(t_span)
    markers = Markers(data=noisy_markers, channels=list(biorbd_model.marker_names))
    rerun_biorbd.add_animated_model(biorbd_model, q, tracked_markers=markers)

    # rerun_biorbd.add_xp_markers(
    #     name="noisy_markers",
    #     markers=markers,
    # )
    rerun_biorbd.rerun("animation")


if __name__ == "__main__":
    main()