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()
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
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
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
You can install stfeasibility from github with:
# install.packages("devtools") devtools::install_github("bc/stfeasibility")
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
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
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.