stfeasibility

Spatiotemporal Feasibility Theory

0
0
0
3
R
public

DOI


output: github_document

dependencies on linux

sudo apt-get install libcgal-dev libglu1-mesa-dev libglu1-mesa-dev
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.path = "README-"
)

pre-installation

install(dependencies=TRUE) # this should get them all
install.packages(c("lpSolve",
"hitandrun",
"ggpubr",
"reshape2",
"plyr",
"RColorBrewer",
"plotly",
"pracma",'xtable','caTools','GGally','plotrix','scatterplot3d','microbenchmark','pbmcapply','pbapply','geometry','rgl'))
load_all()

stfeasibility

some_text

The goal of stfeasibility is to evaluate, for a given force trajectory, for a static tendon-driven limb, the feasible combinations of time-varying muscle activation patterns.

make TODO: cal invite

stfeasibility

Spatiotemporal Feasibility Theory

full task is 2 seconds
A matrix doesn’t change

Evaluations:
- [ ] compute: linsolve for the optimal l2 activation trajectory
- [ ] compute: linsolve for the minimum change in activation
- [ ] compute: generate 10k activation trajectories
- [ ] for each activation trajectory, calculate the maximum velocity incurred
- [ ] make cumulative distribution. x axis is max velocity for activation trajectory
- [ ] show distribution of bottom 1% l2 activation trajectory from
comparisons:
- [ ] compare 10k from degenerate vs velocity-constrained to get the % remaining solutions.

Hongchul Sohn / Nichols/Birckholder - Cat hindlimb
Matt Tresch - Rat hindlimb model

Largest 30 degree cone (go around those parts)


0 torques

  1. by-

nice to haves but definitely put in discussion

  1. Acceptance of error, a cube around each point being all valid output wrenches
  2. conditions += Acceleration Constraint

Installation

You can install stfeasibility from github with:

# install.packages("devtools")
devtools::install_github("bc/stfeasibility")

Datasets to generate

har per task for 100 tasks in force_cos_ramp in Fx distal direction, 1 Hz task frequency, 100Hz sampling frequency. constraint = 0.1/10ms == 0.1 allowable per transition. .15 for increasing.
har per task for 100 tasks in

Example

This is a basic example which shows you how to solve a common problem:

## basic example code

timing: s.t. constr
Unit: seconds

            expr        min         lq       mean     median         uq
 3 task_v_constr   3.185497   3.185497   3.185497   3.185497   3.185497
 4 task_v_constr   9.601908   9.601908   9.601908   9.601908   9.601908
 5 task_v_constr  22.970029  22.970029  22.970029  22.970029  22.970029
 6 task_v_constr  54.821506  54.821506  54.821506  54.821506  54.821506
 7 task_v_constr 100.976341 100.976341 100.976341 100.976341 100.976341
 12 task_v_constr 1365.549 1365.549 1365.549 1365.549 1365.549 1365.549  
 13 task_v_constr 1971.198 1971.198 1971.198 1971.198 1971.198 1971.198  
 14 task_v_constr 2565.451 2565.451 2565.451 2565.451 2565.451 2565.451
 15 task_v_constr 4164.274 4164.274 4164.274 4164.274 4164.274 4164.274

benchmarks <- cbind(num_tasks =c(3,4,5,6,7,12,13,14,15), minutes =c(3.185497,
9.601908,
22.970029,
54.821506,
100.976341,
1365.549 ,
1971.198 ,
2565.451,
4164.274))

timing:

100k trajectories from 49 dimensional space = 5 minutes of point picking
10k trajectories from 49 dimensional space = 2 minutes of point picking

v0.3.3[beta]