sibernetic icon indicating copy to clipboard operation
sibernetic copied to clipboard

Steps towards proprioceptive feedback

Open pgleeson opened this issue 7 years ago • 3 comments

Summary Sibernetic calculates the ratio between the intantaneous muscle lengths and their lengths at rest, and feeds these through the Python interface at each timestep. The Python class itself decides what to do with the values, handing it to neurons, stretch receptors etc.

Quick demo implementation

To get a quick demo implemetation for testing:

  • [ ] (Sibernetic) Pick a single pair of particles in each of the 96 muscles (can be near the centre, but shouldn't matter too much)
  • [ ] (Sibernetic) Calculate the distance between these at t=0
  • [ ] (Sibernetic) At every time step, calculate the ratio between length at this timestep and t=0 (will be ~1 for no muscle activity, <1 and >0 for contracted, >1 for stretched) for each muscle.
  • [ ] (Sibernetic) Give these 96 values as an argument into the run function via the C++ call
  • [ ] (c302)The Python class can plot/save/use these values for changing muscle behaviour as outlined below

Full steps required

  • [ ] (Sibernetic) Sibernetic adds a command line option -zeroGinitTime where it turns gravity off, and lets the worm float while the body relaxes to the "steady state", i.e. equalised pressure state. Default for this value is 0ms, typical for reaching steady state will hopefully be 10-30ms.
  • [ ] (Sibernetic) Sibernetic saves the lengths for each of N individual connection (along the main axis of the worm) in each muscle in the relaxed state (so 96 sets of N particle separations).
  • [ ] (Sibernetic) Sibernetic turns on gravity and at each time step, it calculates the ratio of each of the N new muscle separation lengths to the initial value, and takes an average per muscle (so ~1 for no activity, <1 and >0 for contracted, >1 for stretched)
  • [ ] (Sibernetic) It gives these 96 values as an argument into the run function via the C++ call
  • [ ] (c302) The Python class can just ignore these values (as in the case of the sine wave generator) or plot/save them, or feed them to neurons/ion channels for stretch receptor feedback. The Python class should still calculate 96 muscle activation values as currently required.

pgleeson avatar Feb 02 '18 15:02 pgleeson

Hi @a-palyanov @skhayrulin -- now that the special issue is out; can we take a look at moving this forward? What do you guys think?

slarson avatar Sep 14 '18 15:09 slarson

I've updated the description above with a suggestion for a simpler demo implementation which should help make progress with this...

pgleeson avatar Sep 14 '18 16:09 pgleeson

What's the status of this?

ido4848 avatar May 18 '21 21:05 ido4848