예제 #1
0
def computeMarkersReference(predictedSolution):
    model = createDoublePendulumModel()
    model.initSystem()
    states = predictedSolution.exportToStatesStorage()

    # Workaround for a bug in Storage::operator=().
    columnLabels = model.getStateVariableNames()
    columnLabels.insert(0, "time")
    states.setColumnLabels(columnLabels)

    statesTraj = osim.StatesTrajectory.createFromStatesStorage(model, states)

    markerTrajectories = osim.TimeSeriesTableVec3()
    markerTrajectories.setColumnLabels(["/markerset/m0", "/markerset/m1"])

    for state in statesTraj:
        model.realizePosition(state)
        m0 = model.getComponent("markerset/m0")
        m1 = model.getComponent("markerset/m1")
        markerTrajectories.appendRow(
            state.getTime(),
            osim.RowVectorVec3(
                [m0.getLocationInGround(state),
                 m1.getLocationInGround(state)]))

    # Assign a weight to each marker.
    markerWeights = osim.SetMarkerWeights()
    markerWeights.cloneAndAppend(osim.MarkerWeight("/markerset/m0", 1))
    markerWeights.cloneAndAppend(osim.MarkerWeight("/markerset/m1", 5))

    return osim.MarkersReference(markerTrajectories, markerWeights)
예제 #2
0
    def __init__(self, setup_file=None):
        # type: (Optional[str]) -> None

        # Define properties, set default values.
        self.accuracy = 1e-10
        self.constraint_weight = float("inf")
        self.coordinate_file = ""
        self.coordinate_references = opensim.SimTKArrayCoordinateReference()
        self.ik_task_set = None
        self.marker_file = ""
        self.markers_reference = opensim.MarkersReference()
        self.model = None
        self.model_file = ""
        self.time_final = float("inf")
        self.time_start = float("-inf")

        # Initialize from OpenSim's IK setup file.
        if setup_file:
            self._load_from_setup_file(setup_file)
예제 #3
0
    def __init__(self, setup_file=None, property_list=None):

        # Define properties, set default values.
        self.accuracy = 1e-10
        self.constraint_weight = float("inf")
        self.sensor_to_opensim_rotations = opensim.Vec3()
        self.model = None
        self.model_file = ""
        self.coordinate_references = opensim.SimTKArrayCoordinateReference()
        self.orientation_file = ""
        self.orientation_references = opensim.OrientationsReference()
        self.time_final = float("inf")
        self.time_start = float("-inf")

        #--------->'marker_file' property doesn't seem to exist in the class
        self.marker_file = ""
        self.markers_reference = opensim.MarkersReference()

        # Initialise from OpenSim's IK setup file.
        if setup_file:
            self._load_from_setup_file(setup_file)
        elif property_list:
            self._load_from_property_list(property_list)
예제 #4
0
    coordinates = model.getCoordinateSet()
    ikReporter = osim.TableReporter()
    ikReporter.setName('ik_reporter')
    for coord in coordinates:
        if log_data:
            ikReporter.addToReport(coord.getOutput('value'), coord.getName())
    model.addComponent(ikReporter)
    model.finalizeConnections

    # Initialize simulation
    quatTable = osim.TimeSeriesTableQuaternion(sto_filename)
    orientationsData = osim.OpenSenseUtilities.convertQuaternionsToRotations(
        quatTable)
    oRefs = osim.OrientationsReference(orientationsData)
    init_state = model.initSystem()
    mRefs = osim.MarkersReference()
    coordinateReferences = osim.SimTKArrayCoordinateReference()
    if visualize:
        model.setUseVisualizer(True)
    model.initSystem()
    s0 = init_state
    ikSolver = osim.InverseKinematicsSolver(model, mRefs, oRefs,
                                            coordinateReferences,
                                            constraint_var)
    ikSolver.setAccuracy = accuracy
    s0.setTime(0.)
    ikSolver.assemble(s0)
    if visualize:  # initialize visualization
        model.getVisualizer().show(s0)
        model.getVisualizer().getSimbodyVisualizer().setShowSimTime(True)