Paralyzed monkeys walk again

kon-igi:

spaam:

adoroquellavaccadellamilka:

spaam:

adoroquellavaccadellamilka:

Ma quanto è figa sta cosa da 1 a 10?

@spaam scelgo te!

È figa, ammazza.

Hanno operato un’incisione alle terminazioni nervose che andavano alla gamba, lungo la spina dorsale. Hanno poi inserito un congegno WiFi nell’area Motorcortex del cervello – quella deputata ai movimenti – e che comunica con i terminali nervosi della gamba, a valle dell’incisione. Da quello che ho capito, gli impulsi elettrici del cervello vengono trasmessi dal cervello ad un computer che prima impara a riconoscerli, li traduce e soprattutto li sincronizza e poi li manda alle terminazioni nervose della gamba. In pratica fa da ponte tra il cervello e la gamba, saltando “sopra” la parte danneggiata. 

E la gamba funziona. 

Mortacci. 

Avevo visto un paio d’anni fa un lavoro simile, in cui però il paziente (umano) riusciva a muovere degli arti meccanici usando lo stesso principio. Microchip impiantato nella Motorcortex, training e poi il segnale veniva passato al computer e da esso al braccio robot. 

Gran bell’articolo, grazie 🙂

Tra le tante la cosa che mi chiedevo è come si affronta il problema delle interferenze di questo tipo, ad esempio se per la comunicazione si usano frequenze dello “spettro” del WiFi e il paziente entra in un edificio in cui c’è un jammer di segnale WiFi che fa?

Esiste un protocollo o uno standard in questo senso per evitare problemi o collisioni con frequenze “commerciali” o semplicemente non sono quelle le frequenze usate e il problema non si pone?

Non so quali siano le frequenze commerciali di un WiFi ma ovvio, resta un grosso limite sia l’intereferenza, il tipo di frequenza utilizzata, la durata della batteria del chip, nonchè la velocità di trasmissione del segnale.

Quello che stupisce è una ricostruzione alquanta accurata dello stimolo on-off oltre che flessione-estensione della gamba. Il programma riesce a calcolare con un minimo di errore statistico quando il segnale è on o off e se deve flettere o estendere la gamba. Nel video si vede come la scimmia, a riposo, non ha nessun tremore nella gamba.

Il limite, tutt’ora, è il tempo che passa tra il “pensare” di muovere un arto e il farlo. Nella realtà ci passano millisecondi. Nell’articolo non si capisce bene il tempo di reazione, ma sembra piuttosto rapido. In un lavoro simile, su un paziente umano paralizzato ad un braccio, tra il pensare di muovere la mano e il muoverla (anche qui lo stesso principio della tecnica, chip impiantato nel cervello-collegato al PC-collegato ai muscoli del braccio), ci passava qualche minuto. 

Ma insomma, rispetto ai primi esperimenti di settore in cui si usavano ancora i cavi che uscivano dal cervello e ti collegavano a un PC, diciamo che la cosa è migliorata nettamente. 

È una cosa concettualmente meravigliosa ma quello che adesso si sta provando a fare è l’equivalente di un rendering 3D con un Commodore 64. Se i tempi di risposta sono così lunghi, sicuramente una flesso-estensione di ginocchio è fattibile perché si tratta fondamentalmente di eccitazione-inibizione di due grossi gruppi muscolari cioè quadricipite/bicipite femorale. Quando però si tratterà di far lavorare TUTTA la catena gravitaria e antigravitaria non solo dell’arto inferiore ma anche del tronco per le sincinesie ortostatiche e dinamiche della marcia, allora le cose si faranno dure… tipo parkinsoniano in calo dopaminico che cerca di fare un Kage Bunshin No Jutsu. La corteccia motoria ha una capacità di calcolo che la mole di dati trasmessi più che un microchip wireless avrebbe bisogno di fibra ottica con diametro di mezzo metro.

Di quanti muscoli e articolazioni stiamo parlando esattamente, per la completa catena cinematica della gamba? Perché un clock dell’ordine del millisecondo in realtá é abbastanza comune nei sistemi di controllo real-time di oggi, e riesce a controllare senza problemi anche l’interpolazione dei movimenti su molti assi.

Semplificando molto: i sistemi robotici di oggi ragionano giá in termini simili a quelli anatomici. Viene definita una catena cinematica, dove ogni giunto corrisponde a una articolazione, e ha alcuni precisi gradi di libertá, che possono essere traslazioni lungo un asse (semplifichiamo considerando i soli assi XYZ del piano cartesiano, ad esempio), o una rotazioni attorno ad essi.

Poi, per ciascun giunto, si definiscono i limiti geometrici. Ad esempio, come una spalla non puó rotare oltre un certo angolo per non strappare i legamenti, anche un braccio robot non puó farlo per altri motivi, ad esempio limiti della meccanica o per evitare di strappare cavi.

Lo step successivo é definire le proprietá dinamiche di ciascun giunto: un dito ad esempio é piú leggero di un avambraccio, per cui l’articolazione tra falangi e metacarpo (non conosco la terminologia medica per “nocca” 😀 ) potrá muoversi con una accelerazione molto maggiore di quella del gomito.

Una volta definita la catena cinematica, i limiti di ciascun giunto, e i limiti della dinamica, passiamo alla geometria, ovvero a calcolare posizione e orientamento iniziali e finali del movimento desiderato (la posizione é data dalla composizione di tutte le traslazioni, mentre l’orientamento é dato dalla composizione di tutte le rotazioni).

Per portare l’end-effector (l’utensile alla fine della catena cinematica, assimilabile in questo caso al piede alla fine della gamba o alla punta di un dito) da una posizione A con un orientamento C a una posizione B con un orientamento C1, si cominciano a cercare tutte le possibili soluzioni dei giunti intermedi della catena cinematica (dall’inizio alla fine, dalla spalla alla punta del dito).

Quindi si scartano tutte quelle che non rispettano i limiti geometrici di un qualsiasi giunto intermedio.
Potrebbero comunque rimanere piú soluzioni diverse (ad esempio posso mantenere la mano in una particolare posizione e orientamento davanti a me pur variando l’altezza del gomito), e in tal caso se ne sceglie una in base a una serie di criteri che vi risparmio sennó ci si fa notte.

A questo sappiamo dove siamo e dove vogliamo andare: rimane solo da decidere la dinamica, ovvero il COME andarci. La velocitá, accelerazione e jerk (il jerk é la derivata dell’accelerazione, da una misura di quanto il movimento sia fluido e senza strappi) con cui vogliamo muovere i nostri giunti.
Ovviamente rispettando le caratteristiche dinamiche di ciascun giunto: se muovo un braccio troppo velocemente, potrei farmi male (sforzare il motore) ANCHE se sono dentro i limiti geometrici delle articolazioni.

Questo é il compito dell’interpolatore del sistema real-time: calcolare una curva di accelerazione o decelerazione per portarsi da un punto a un altro, e in tempo reale (ovvero una volta per clock, supponiamo ad esempio un millisecondo), e ricontrollare ad ogni singolo ciclo che le condizioni supposte all’inizio del calcolo non siano cambiate.
Il clock del sistema da il tempo di reazione agli imprevisti: ad esempio e l’operatore cpreme il pulsante di emergenza richiedendo una fermata improvvisa a meta’ di un movimento, nel caso della macchina, o se vedo un ostacolo che prima non avevamo visto, nel caso del movimento di un braccio, mi servirá almeno un millisecondo per reagire (ricalcolare una nuova curva di decelerazione o accelerazione).

Adesso abbiamo la posizione che deve avere ciascun giunto della catena cinematica, a ciascun millisecondo dell’intera sequenza: si tratta di inviare il segnale ai motori o ai muscoli.

Esistono molti protocolli diversi appositamente progettati per questo, per massimizare la banda e minimizzare la latenza, per gestire il ritardo di propagazione del segnale. Se mando un unico pacchetto di dati con tutte le posizioni di tutti i giunti, ad esempio, il giunto in fondo alla catena cinematica lo riceverá qualche piccolissima frazione di millisecondo DOPO al primo giunto: é semplicemente piú lontano. Il segnale, che sia attraverso cavi o nervi, si propaga a una velocitá ben precisa.
Di tale ritardo va tenuto conto un fase di calcolo delle posizioni, per evitare i cosiddetti errori di inseguimento: un asse (o un muscolo) che non riesce a star dietro alla sequenza di posizioni a cui gli viene detto di andare.

Esistono anche sistemi per tenere sotto controllo tale errore di inseguimento, o per recuperarlo: se cerco di muovere un braccio con tutta la forza che ho e arrivare col dito in un punto preciso, probabilmente finiró per andare leggermente piú avanti, ma saró comunque in grado di capire come correggere il movimento e tornare un pochino indietro.

Ho divagato un po’, e ne é venuto fuori un pippone lunghissimo, scusate.

Comunque il punto della questione era che probabilmente non é tanto la banda passante della connessione tra pc e ricevente impiantata, il collo di bottiglia, quanto la capacitá di calcolo necessaria per fare tutta questa massa di calcoli in tempo reale.

Un normale CNC industriale, che gira su un comune PC di oggi, riesce a gestire in questo modo anche 10-15 assi per canale, e fino a una decina di canali in contemporanea, garantendo senza problema un clock dell’ordine del millisecondo.

Nel caso di una gamba, immagino sia molto piu complicato, perché mentre nelle macchine, di solito, ad ogni grado di libertá di un giunto viene associato un solo motore, nel corpo (suppongo) ad ogni articolazione sono associati piú muscoli per farla muovere, e spesso molti muscoli sono anche ridondanti e duplicati.
Quindi la complessitá di calcolo di cui stiamo parlando, e la scelta della migliore tra le tantissime soluzioni possibili per compiere quel movimento, probabilmente non é affatto banale.

Paralyzed monkeys walk again