tag:blogger.com,1999:blog-8909459762367220480.post6838546950791104984..comments2017-11-27T09:42:05.053-08:00Comments on Stuff and Nonsense: Lost in Maths! (2D Sound location with 4 sensors)Jason Hotchkisshttps://plus.google.com/105009608886388132613noreply@blogger.comBlogger18125tag:blogger.com,1999:blog-8909459762367220480.post-66362710130828648412013-02-11T01:49:44.139-08:002013-02-11T01:49:44.139-08:00Accuracy is 1-2 inch which is really good, but I c...Accuracy is 1-2 inch which is really good, but I can't see any schematic how they connect it to Arduino nor I see any code. Maybe not an open source project. What about the accuracy of your ball recognition?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-8909459762367220480.post-69337580700684228052013-02-11T00:18:15.596-08:002013-02-11T00:18:15.596-08:00wow! thats spooky... very similar. They also have ...wow! thats spooky... very similar. They also have some very interesting differences in sensor locations and signal conditioning electronics that I need to try to understand! Thanks for the linkJason Hotchkisshttps://www.blogger.com/profile/13452320361660792114noreply@blogger.comtag:blogger.com,1999:blog-8909459762367220480.post-90546953943006118782013-02-10T17:37:43.436-08:002013-02-10T17:37:43.436-08:00http://pppp.media.mit.edu/
A ping pong table that...http://pppp.media.mit.edu/<br /><br />A ping pong table that sensed ball hit locations and displayed projected visualizations based on the hits.<br />Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-8909459762367220480.post-20792977887425521792013-02-01T14:18:45.755-08:002013-02-01T14:18:45.755-08:00Hey Jay
very interested in your comment.. I never...Hey Jay <br />very interested in your comment.. I never did find a better mathematical solution but decided the accuracy of my maths approach was appropriate to the (rough) precision of the sensing. We moved forward with that and "noisy table" went out in public last year<br />http://vimeo.com/45745840<br />http://www.fact.co.uk/projects/noisy-table/<br />drop me an email jason_hotchkiss at hotmail dot com if you want to talk maths :) and thanks for your commentJason Hotchkisshttps://www.blogger.com/profile/13452320361660792114noreply@blogger.comtag:blogger.com,1999:blog-8909459762367220480.post-8352331637679976862013-02-01T13:48:03.751-08:002013-02-01T13:48:03.751-08:00sorry, just reread my post...the equation is tA^2+...sorry, just reread my post...the equation is tA^2+tC^2 = tB^2+tD^2.<br /><br />And if the tI comment doesn't make any sense, what I mean is that one of your lines from a sensor to the impact will have tX of 0 and that distance is actually tI*speed of propogation (in your example we're talking about tD) and then tA is tI plus some actual time DIFFERENCE of arrival from sensor D to sensor A.Jay Sperryhttps://www.blogger.com/profile/06601377768354233907noreply@blogger.comtag:blogger.com,1999:blog-8909459762367220480.post-67602972434640436702013-02-01T13:43:27.109-08:002013-02-01T13:43:27.109-08:00Awesome blog! Just catching up. I see you did this...Awesome blog! Just catching up. I see you did this over a year ago! I think the math can be SIGNIFICANTLY easier if you use the fact that tA^2*tC^2 = tB^2*tD^2. You have to use the unknown tI of the time between original impact and the first sensor firing and deal with your propogation speed in order to actually 'solve' the triangle but the fact that you sensors are known distances apart and at known angles allows you to assume an unknown constant for velocity in the law of cosines and you can solve that twice for a two adjacent angles at a corner to get all your unknowns.<br /><br />I REALLY like that circles video that you posted above. Is that SW somewhere I can download? I'd like to try it with some additional calculations for my system!Jay Sperryhttps://www.blogger.com/profile/06601377768354233907noreply@blogger.comtag:blogger.com,1999:blog-8909459762367220480.post-92009109502143465682013-01-13T05:51:22.306-08:002013-01-13T05:51:22.306-08:00Sure- you can see the code here
https://github.com...Sure- you can see the code here<br />https://github.com/hotchk155/NoisyTableSensing/blob/master/NoisyTableSensing.inoJason Hotchkisshttps://www.blogger.com/profile/13452320361660792114noreply@blogger.comtag:blogger.com,1999:blog-8909459762367220480.post-21521885104911773892013-01-13T02:14:56.056-08:002013-01-13T02:14:56.056-08:00Anyway you could post your code?Anyway you could post your code?Dave Gardnerhttps://www.blogger.com/profile/09428955029688504897noreply@blogger.comtag:blogger.com,1999:blog-8909459762367220480.post-79975963678820693472012-04-26T05:47:40.245-07:002012-04-26T05:47:40.245-07:00Okay, I removed my previous comment because it did...Okay, I removed my previous comment because it didn't jive well with me.<br />Basically the first sensor to hear a sound triggers a timer. Then the difference between the first sensor and the other sensors hearing a sound will be used to calculate the radii of the sound relative to the first timer that hears it. <br />Use that with some trig to find the location of the ball.<br />Is it that simple? I don't know but I figured I'd throw it out there.Mexican Vikinghttps://www.blogger.com/profile/05261668968886385649noreply@blogger.comtag:blogger.com,1999:blog-8909459762367220480.post-24770218184464505952012-04-26T05:41:42.955-07:002012-04-26T05:41:42.955-07:00This comment has been removed by the author.Mexican Vikinghttps://www.blogger.com/profile/05261668968886385649noreply@blogger.comtag:blogger.com,1999:blog-8909459762367220480.post-8575895917916878632012-02-29T00:19:47.221-08:002012-02-29T00:19:47.221-08:00SPAMMERS PLEASE NOTE I WILL DELETE YOUR COMMENTS I...SPAMMERS PLEASE NOTE I WILL DELETE YOUR COMMENTS IMMEDIATELYJason Hotchkisshttps://www.blogger.com/profile/13452320361660792114noreply@blogger.comtag:blogger.com,1999:blog-8909459762367220480.post-50198230065232216702011-12-18T21:42:34.517-08:002011-12-18T21:42:34.517-08:00Two words: Sound rangingTwo words: Sound rangingAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-8909459762367220480.post-22132233623580892002011-11-23T21:43:00.617-08:002011-11-23T21:43:00.617-08:00E-mail me sometime (click the contact link on my s...E-mail me sometime (click the contact link on my site) and I'll send you some stuff you might find useful.Matt Watermanhttp://www.mattwaterman.netnoreply@blogger.comtag:blogger.com,1999:blog-8909459762367220480.post-44290525167656843842011-11-17T10:31:19.392-08:002011-11-17T10:31:19.392-08:00I've been thinking about this problem since yo...I've been thinking about this problem since you told me about it a couple of weeks ago. One thing that strikes me as being a slight spanner in the works is that the majority of table tennis tables are hinged in the center for easy storage. If this is the case you will not be able to use the method the way you have suggested since the vibration through the table will stop dead at the hinge, or if it should transit it will likely ruin your timings. The only solution i can see to resolve this would be to apply the above method on each side (either 8 of 6 sensors in total).<br />How rude of me, it's Antony by the way, i came to visit BB a couple of weeks ago (interested in Midi!).HessianSuperCatnoreply@blogger.comtag:blogger.com,1999:blog-8909459762367220480.post-33735047259639848472011-11-17T07:00:28.003-08:002011-11-17T07:00:28.003-08:00Thanks for your help guys! Interesting point about...Thanks for your help guys! Interesting point about the zero crossing, Matt. I'd not thought about that... I hope I can set the sensitivity on the sensors close enough to be "good enough" for what I need. Now to digest all this great info.<br />Cheers!hotchk155https://www.blogger.com/profile/13452320361660792114noreply@blogger.comtag:blogger.com,1999:blog-8909459762367220480.post-48144514427033526922011-11-13T16:19:07.740-08:002011-11-13T16:19:07.740-08:00I'm working on a similar problem for school (a...I'm working on a similar problem for school (an electronic target) and have some suggestions.<br /><br />1. I'm not really sure how ping pong tables are constructed, but you might run into problems with the propagation speed differing depending on direction. Wood propagates sound significantly faster along the grain that across it. I imagine the table is made of plywood, so it might even out since the individual plies alternate. MDF would probably be okay. Obviously, a solid plastic or aluminum table would be best.<br /><br />2. If you're triggering event is just a basic threshold, your triggering will be increasingly off as the source moves closer to one sensor than the other since one sensor will receive a significantly greater signal and will trigger much earlier than the other. To get around this, we use a combination of threshold triggering and zero detection. We time based on the first zero crossing after a threshold is reached. Depending on the accuracy you need, though, threshold triggering might be fine.<br /><br />3. In order to solve the location from the TDOA numbers, you have to calculate some hyperbolas (you can also do it experimentally as you've seen but that's very slow). Every pair of sensors will give you one valid hyperbola and the intersection of two hyperbolas will give you the source location. All you need is, for each pair, which triggered first, the time difference, and the propagation speed. You can do this with three sensors, but you'll need to know the propagation speed.<br /><br />4. In order to figure out the propagation speed, we use four sensors to build four hyperbolas (you could do six but we haven't figure out how to do the diagonal ones yet). This will give you several possible source points and then you can adjust the propagation speed until they all line up (as closely as possible). You can estimate error by calculating the standard deviation of the closest you can get.<br /><br />You're probably wondering how to solve the hyperbolas. I have spent a ridiculous amount of time trying to figure that out, reading through journal articles and theses that were of no help. This guy teaches a class on it and breaks it down in a very useful way:<br /><br />http://www.ee.nmt.edu/~rison/ee389_spr08/<br /><br />I made very little progress solving the hyperbolas until I found this. Particularly, look at (1) on "algebra to show..." Nice and easy to solve for x and y.Matt Watermanhttp://www.mattwaterman.netnoreply@blogger.comtag:blogger.com,1999:blog-8909459762367220480.post-17545742738722864182011-11-05T14:22:02.926-07:002011-11-05T14:22:02.926-07:00Just another thought - http://www.teacherschoice.c...Just another thought - http://www.teacherschoice.com.au/maths_library/trigonometry/solve_trig_sss.htm shows how to solve triangles. Using the AC and DB diagonals, and given you know AB, BC, CD and DA, you could solve all this with triangles.<br /><br />But on a microcontroller, you tend to use look-up tables for sin/cos operations anyway to speed things up. So why not create an app which splits the table top up into a grid of fine enough resolution, pre-calculate all the values for X at each point, shove them all in a big look up table, then compare when you get the signals in?<br /><br />How fine do you need your resolution? Would a grid of say 20 x 10 be accurate enough? Just get a PC to do all the crunchy calculations up front, and do simple comparisons on the mcu at runtime?FatBobhttps://www.blogger.com/profile/08274133286396866480noreply@blogger.comtag:blogger.com,1999:blog-8909459762367220480.post-12693863458141501532011-11-05T13:44:42.649-07:002011-11-05T13:44:42.649-07:00Just off the top of my head (so it may not even be...Just off the top of my head (so it may not even be feasible) but what about using pythagoras and some simple y=mx+c type line equations on two of your lines.<br /><br />Calculate the gradient (m) for line1 and line2 using simple trig (sin/cos) and where the two lines intersect (i.e. the equations y=mx+c are equal for both) you'd have your X and Y values. I did similar stuff for a Flash-based game a few years ago and it worked quite well. You might need floating point maths on your mcu to do it though.FatBobhttps://www.blogger.com/profile/08274133286396866480noreply@blogger.com