Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Steps towards proprioceptive feedback #141

Open
10 tasks
pgleeson opened this issue Feb 2, 2018 · 3 comments
Open
10 tasks

Steps towards proprioceptive feedback #141

pgleeson opened this issue Feb 2, 2018 · 3 comments
Assignees

Comments

@pgleeson
Copy link
Member

pgleeson commented Feb 2, 2018

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.
@slarson
Copy link
Member

slarson commented Sep 14, 2018

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?

@pgleeson
Copy link
Member Author

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

@ido4848
Copy link

ido4848 commented May 18, 2021

What's the status of this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants