This is an example that uses a squat-to-stand motion to create synthetic accelerometer data, and then creates a tracking simulation to track the synthetic accelerometer signals. This example is used in hands-on workshops, and accordingly has blanks that users must fill in. See exampleSquatToStand_answers.m for a completed version.
3 import exampleIMUTracking_helpers
as helpers
6 sys.path.insert(1,
'../')
7 import mocoPlotTrajectory
as plot
15 model = helpers.getTorqueDrivenSquatToStandModel()
23 helpers.addIMUFrame(model,
'torso',
24 osim.Vec3(0.08, 0.3, 0), osim.Vec3(0, 0.5*np.pi, 0.5*np.pi))
25 helpers.addIMUFrame(model,
'femur_r',
26 osim.Vec3(0, -0.2, 0.05), osim.Vec3(0, 0, 0.5*np.pi))
27 helpers.addIMUFrame(model,
'tibia_r', osim.Vec3(0, -0.2, 0.05),
28 osim.Vec3(0, 0, 0.5*np.pi))
33 imuFramePaths = osim.StdVectorString()
34 imuFramePaths.append( )
35 imuFramePaths.append( )
36 imuFramePaths.append( )
37 osim.OpenSenseUtilities().addModelIMUs(model, imuFramePaths)
71 problem.setTimeBounds( )
75 problem.setStateInfo(
'/jointset/hip_r/hip_flexion_r/value', )
76 problem.setStateInfo(
'/jointset/knee_r/knee_angle_r/value', )
77 problem.setStateInfo(
'/jointset/ankle_r/ankle_angle_r/value', )
80 problem.setStateInfoPattern(
'/jointset/.*/speed', )
86 solver = study.initCasADiSolver()
87 solver.set_num_mesh_intervals( )
88 solver.set_optim_constraint_tolerance( )
89 solver.set_optim_convergence_tolerance( )
91 if not os.path.isfile(
'predictSolution.sto'):
108 outputPaths = osim.StdVectorString()
109 outputPaths.append( )
110 accelerometerSignals = osim.analyzeVec3(model,
111 predictSolution.exportToStatesTable(),
112 predictSolution.exportToControlsTable(),
118 accelerometerSignals.setColumnLabels(imuFramePaths)
121 helpers.plotAccelerationSignals(accelerometerSignals)
131 tracking.setFramePaths( )
132 tracking.setAccelerationReference( )
133 tracking.setGravityOffset( )
134 tracking.setExpressAccelerationsInTrackingFrames( )
141 if not os.path.isfile(
'trackingSolution.sto'):
149 plot.mocoPlotTrajectory(
'predictSolution.sto',
'trackingSolution.sto',
154 trackingSolution = osim.MocoTrajectory(
'trackingSolution.sto')
155 accelerometerSignalsTracking = osim.analyzeVec3(model,
156 trackingSolution.exportToStatesTable(),
157 trackingSolution.exportToControlsTable(),
159 accelerometerSignalsTracking.setColumnLabels(imuFramePaths)
160 helpers.plotAccelerationSignals(accelerometerSignals,
161 accelerometerSignalsTracking)