Wij zijn bezig met een schoolproject wat parkinson patienten moet helpen beter te lopen en hun postuur te corrigeren.
Wij hebben wat problemen ondervonden met het meten van een lichaamshoek op de borst van een patient.
Met een accelerometer kan via wiskundige formules de hoek van de sensor t.o.v. de aarde gemeten worden. Helaas is dit niet mogelijk bij een persoon die loopt.
Wij zoeken dus een sensor die het mogelijk maakt een hoek van een lichaam te meten (het gaat dus om de kromming van de rug) terwijl de patient aan het lopen is.
Wij hebben een klein budget voor ons eindproduct dus de sensor moet zo goedkoop mogelijk zijn (maar wel betrouwbaar +- 2 graden nauwkeurig).
Wij hebben al gedacht aan een gryoscoop, maar wij hebben ondervonden dat deze niet goedkoper dan 20,- te verkrijgen zijn.
Heeft iemand een suggestie of tip voor ons probleem?
Edit: Zou dit probleem opgelost kunnen worden door de uitgangen van een accelerometer te integreren?
De accelerometer meet ook de versnelling tgv de zwaartekracht, hierdoor krijg je al bruikbare gelijkspanningen spanningen die per hoek verschillen.
Ik heb ooit eens de MMA7260 met succes gebruikt voor de hoekmeting van een schotelrichtsysteem (voor tv signaal).
http://www.freescale.com/files/sensors/doc/data_sheet/MMA7260QT.pdf
Misschien een brief schrijven naar een fabrikant? Free samples zijn niet uitzonderlijk.
jan
ps misschien melexis proberen? Ik meen me zelfs te herinneren dat ze een studenten wedstrijd hadden waar ze de beste studenten toepassing van hun IC's beloonden
edit MLX90609
Bovenstaand IC was toendertijd samplebaar. Alleen SMD skills vereist.
[Bericht gewijzigd door JuuL op (24%)]
Het ontwikkel budget is voor ons geen probleem.
Wij hebben een ruim budget tot onze beschikking maar het eindproduct moet goedkoop zijn.
Dus even voor alle duidelijkheid. Het is dus wel mogelijk een hoek te meten t.o.v. de aarde terwijl een persoon aan het lopen is. Mij leek het probleem dat als een persoon loopt hij een hoogte en voorwaardse g-kracht produceert.
Dit moet de meting toch beinvloeden?
Dus even voor alle duidelijkheid. Het is dus wel mogelijk een hoek te meten t.o.v. de aarde terwijl een persoon aan het lopen is. Mij leek het probleem dat als een persoon loopt hij een hoogte en voorwaardse g-kracht produceert.
Dit moet de meting toch beinvloeden?
Misschien valt dat weg te filteren zonder het signaal teveel aan te tasten.
Hier heb je wat info:
http://www.dprg.org/projects/2003-01a/
@JuuL. Bedankt voor je hulp tot nu toe. Ik zal het document later op de dag verder doornemen, maar er valt me nu al een klein probleem op. De eerste regel:
"In building a balancing robot you need a gyroscope unit and an accelerometer unit in order to get it to balance. "
Hier word dus een combinatie van beide gebruikt.
Je zou het volgens mij ook kunnen doen met twee accelerometers (weet niet of dit wel binnen het budget kan) maar mocht dit mogelijk zijn:
Je plakt er eentje op de borst, zoals je nu hebt. De andere plak je bij het draaipunt, bijvoorbeeld op de gesp van de broekriem. Nu pak je alleen het verschil tussen de sensoren als meetdata, bij een voorwaardse beweging (lopen) zal deze door beiden gedetecteerd worden en vallen dus weg tegen elkaar, bij het buigen van de rug zal de riemsensor (nagenoeg) stil blijven staan en die op de borst bewegen.
Op 17 september 2008 11:18:12 schreef prowl:
@JuuL. Bedankt voor je hulp tot nu toe. Ik zal het document later op de dag verder doornemen, maar er valt me nu al een klein probleem op. De eerste regel:"In building a balancing robot you need a gyroscope unit and an accelerometer unit in order to get it to balance. "
Hier word dus een combinatie van beide gebruikt.
Volgens mij is er alles uitgelegt.
@scorpie.
Dit is opzicht best een slimme oplossing!
Het probleem is dan weer dat er een extra sensor op het lichaam geplaats moet worden waardoor het apparaat een stuk minder comfortabel te dragen is. Kwa budget is het geen groot probleem, want een accelerometer kost ongeveer 5 dollar (smd).
@JuuL Ik zal het deze avond doornemen.
Sorry voor mijn vroegtijdige conclusie.
@ GJ_ Een kompas leek me ook geen goed idee, maar bedankt voor de inbreng.
Zou het niet mogelijk zijn het uitgangssignaal te integreren. De g-kracht omhoog en omlaag door het lopen kunnen elkaar uitmiddelen als je het goed integreerd. Idem voor de voorwaardse g-kracht. De kromming van de rug is constant, dus die zal na het integreren zichtbaar blijven.
Of is dit zeer ingewikkeld om te implementeren?
flipflop
"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Je moet de versnelling simpelweg filteren door een laagdoorlaatfilter. Kantelpunt moet een stukje onder de "loop-frequentie" liggen (onder 1Hz dus). Wat overblijft is de echte hoek met de aarde.
Filteren kun je digitaal in een FPGA doen bijvoorbeeld.
SparkyGSX
Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Je weet dat ze zwaartekracht versnelling in Nederland 9.81m/s^2 is. Als je een versnellingssensor onder een hoek zet, meet je een deel van deze versnellings, afhankelijk van de hoek. Het wegfilteren van andere bewegingen is dan natuurlijk nog wel een uitdaging.
Het signaal van een versnellingssensor integreren is niet handig, tenzij je ook een signaal hebt waarmee je dit kunt corrigeren. Bij het meten zul je altijd een meetfout hebben, en bij het integreren zal deze steeds groter worden. Je kunt bijvoorbeeld, bij een sensor zich stil ligt, een hoeksnelheid van 0.1graad/sec meten. Na verloop van tijd zal je systeem een grote hoek registreren, terwijl de sensor in werkelijkheid stil ligt.
Kun je de kromming van de rug niet op een andere manier meten? Je zou vanaf de nek de afstand naar de grond kunnen meten, of de hoek. Als je krom staat, meet je de afstand naar de grond onder een hoek, waardoor de meting veel hoger uitkomt. Dit meten zou je met laser of ultrasoon o.i.d. kunnen doen.
Een andere optie zou kunnen zijn om m.b.v. videobeelden, eventueel met markers (stickers of zo) de postuur te bepalen.
Op 17 september 2008 12:54:05 schreef flipflop:
Je moet de versnelling simpelweg filteren door een laagdoorlaatfilter. Kantelpunt moet een stukje onder de "loop-frequentie" liggen (onder 1Hz dus). Wat overblijft is de echte hoek met de aarde.
Filteren kun je digitaal in een FPGA doen bijvoorbeeld.
Hoe wil je een onderscheid tussen de loop en "kromme positie" G-krachten in het frequentie-domein?
@sparky: Integreren is bij nader inzien inderdaad niet zo'n goed idee.
Misschien een beetje raar. Maar is een gyrosensor geen optie? zodat je onder verticale omstandigheden 0 graden hoekverdraaiing meet en als de patient is naar voren loopt 5 graden hoekverdraaiing? ik heb een mooi voorbeeldje gevonden denk ik..
google:
Integrated Dual-Axis Gyro IDG-300
[edit] ik zie nu pas dat ze een beetje prijzig zijn..sorry
Bij bovenstaande link die ik gaf hadden ze hier uitleg over:
Using a gyroscope by itself seems reasonable, but the gyro develops a slow creeping tilt error that continues to increase. An example of this is when you tilt the gyro you'll see a change in the output voltage, but it quickly returns to it's resting level, if the tilt doesn't change. Thus if your robot was to tilt forward a few degrees and stay at that angle, the gyro will report that the robot is standing straight up after a second. So eventually the errors add up and the robot falls over. Using an accelerometer helps to solve this problem. The accelerometer outputs a steady duty cycle when the robot is standing straight up, and if the robot tilts one way or the other the duty cycle changes, and stays changed, until you have the robot's computer correct for the tilt. Now on the surface it looks like you could use only the accelerometer, but the gyro reacts much faster to tilt changes than the accelerometer can. So the gyro gives you the fast response and the accelerometer helps to correct for the creeping gyro errors that will occur and tells you when your level or not, or where up and down is.
Lijkt mij allemaal niet echt een goedkope oplossing.
Een Gyro+accelerometer kost toch al gauw 30,- en dat was dus precies de streefprijs voor ALLE hardware samen in het eind product (niet het prototype).
Laat je de gyro weg, zij gebruiken hem voor de snelle respons, dat heb jij niet nodig. Ik denk dat je dat wel goed kan filteren, want de hoek van iemands rug verandert niet zo snel onder het lopen denk ik.
Op 17 september 2008 17:59:48 schreef JuuL:
Laat je de gyro weg, zij gebruiken hem voor de snelle respons, dat heb jij niet nodig. Ik denk dat je dat wel goed kan filteren, want de hoek van iemands rug verandert niet zo snel onder het lopen denk ik.
Dat klopt inderdaad.
Het is zelfs eens eis dat het alarm niet te snel moet afgaan.
Zo moet hij niet afgaan als iemand even naar voren buigt om iets te pakken. Het einddoel was een variabele tijd te maken tussen de 5-20 seconden voordat het alarm afgaat (een soort delay dus).
Maar nogmaals, hoe wil ik dit wegfilteren:
Hoe wil je een onderscheid tussen de loop en "kromme positie" G-krachten in het frequentie-domein?
Je hebt 3 assen: X Y en Z. Je hebt hier 1 van nodig, het op en neer bewegen tijdens het lopen is een andere as. ALs je dan ook nog een low pass filter pakt (hoekverandering van je rug gaat betrekkelijk langzaam) dan moet het goedkomen denk ik.
-edit-
Alhoewel...
flipflop
"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Op 17 september 2008 18:09:42 schreef prowl:
Maar nogmaals, hoe wil ik dit wegfilteren:Hoe wil je een onderscheid tussen de loop en "kromme positie" G-krachten in het frequentie-domein?
Die delay is niet handig om dat met een filter te maken. Dat moet je gewoon door een controller laten doen. Die kun je de "intelligentie" geven.
Filteren? Lopen is toch een herhaaldelijke beweging met een bepaalde frequentie? Bv 1 stap per seconde geeft een soort sinus van 1Hz gesuperponeerd op de statische component van de zwaartekracht. Als je die sinus wegfiltert, blijft de statische vector (de zwaartekracht) over. Als je dan een 3D sensor hebt, weet je precies de hoek waarin het lichaam zich bevindt. Omdat het lopen best wel een lage frequentie geeft, moet je een heel laag kantelpunt hebben om het helemaal weg te filteren. Het wordt dus wel een tamelijk traag systeem, maar dat lijkt me geen probleem toch?
De keuze tussen een digitale of analoge accelerometer hoef ik dan dus niet meer te maken!
Dus ik lees het digitale signaal van de accelerometer in, en filter dit digitaal. Hier haal ik (een soort van) DC component uit, en dit is de hoek van het lichaam (wel nog vectoriale formule erop loslaten).
Ik wou alles aansturen met een AVR, lijkt me snel genoeg.
traagheid van het systeem lijkt me geen groot probleem. De meeste parkinson patienten zijn ook vrij traag 
Het gaat erom dat het lichaamspostuur naar enkele seconden word gecorrigeerd en niet direct. Het is een soort van waarschuwing dat de patient weer gebogen staat, want hij is hier zelf niet bewust van.
Allemaal heel erg bedankt voor het helpen tot nu toe.
Nu moet ik dit principe gaan uitwerken.
Ik zal de voortgang hier blijven posten.
Tips en voorbeelden zijn altijd welkom!
Op 18 september 2008 10:45:52 schreef prowl:
De keuze tussen een digitale of analoge accelerometer hoef ik dan dus niet meer te maken!
Waarom niet? Hebben beiden voor- en nadelen. Analoog met een analoog filter en inlezen met een ADC. Of een digitale met een digitaal filter.
Ene kost je meer software+rekenkracht en andere meer hardware (zijn nog meer verschillen natuurlijk).
Wij hebben toendertijd analoog gewerkt met een filter en versterker en dan ADC en verwerken in uC.
traagheid van het systeem lijkt me geen groot probleem. De meeste parkinson patienten zijn ook vrij traag
Sommige bewegingen zijn ze juist heel snel mee 
Het gaat erom dat het lichaamspostuur naar enkele seconden word gecorrigeerd en niet direct. Het is een soort van waarschuwing dat de patient weer gebogen staat, want hij is hier zelf niet bewust van.
Hoe moet ik me dat voorstellen dat corrigeren? Elke keer een stroomstoot bij verkeerde houding? 
flipflop
"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Op 18 september 2008 10:45:52 schreef prowl:
De keuze tussen een digitale of analoge accelerometer hoef ik dan dus niet meer te maken!
Kan beide hoor. Een sensor met analoge uitgangen moet je eerst A/D converteren en dan digitaal filtern. Of eerst analoog filteren, maar je moet toch al vectorisch optellen in het digitale domein. Dus digitaal filteren vindt ik wat meer voor de hand liggend.
Wil je alles in de AVR doen? Mijn oplossing is nl heel erg mooi in een FPGA te doen. Integreer je de CPU gelijk in de FPGA.
Op 17 september 2008 12:09:45 schreef prowl:
@ GJ_ Een kompas leek me ook geen goed idee, maar bedankt voor de inbreng...
Het gaat wel maar dan heb je er twee nodig. En een kompassensor met een resolutie van 1 graad is geloof ik niet echt goedkoop.