Position tracking using ultrasonic markers

Hi,

So, I've had this idea growing on me for a while now, and have been researching the possibility and it seems more and more like it could work...

Basically, I'm trying to construct an active ultrasonic position finder, using separate ultrasound emmiters and receivers...

The idea is that a wirelessly-synced emmiter unit, would receive a wireless signal (probably BlueTooth) and emit a ping, that would be received by static "listeners", which have been set to listen for this ping... the time difference between arrivals then could be measured and trilaterated for position information...

The theory sounds sane enough to warrant a test... but my troubles lay in finding the right components for this... I wanted to find something like the PING))) sensor, but that would let me set it to listen for the ultrasonic ping, but without setting off the ping itself...

The PING))) can only rangefind by pinging and then listening for the echo, there's no way to make it only listen... But it is a very good sensor with a simple interface... I really don't wanna make my own sensors if it can be avoided...

And logically, I need something that can do the exact opposite, which is to send a wave, and not expect a reading itself... This in itself presents a problem, which is finding an ultrasonic transducer that can emit a non-directional (or omnidirectional) pulse... All the transducers I could find are very directional, and I need something that can send off a sphere of ultrasound for the receivers to pick up...

So... Any thoughts? ;)

Thanks in advance,

Cheers

I know that you can do this with a mesh of xbees and use the rssi to show signal strength.

The idea is sound (no pun intended); you are essentially implementing a similar system as what was used by the Nintendo/Mattel PowerGlove for 3D positioning (albeit in a wireless manner for the syncing - the PowerGlove was wired for sync).

You are unlikely, though, to be able to construct an omni-directional ultrasonic sound source, as the physics of sound won't really allow you to do that. As the frequency of a sound wave is increased, so does its directional properties - this is why on a stereo you can't localize the bass/subwoofer speakers, but it is fairly easy to localize the mid-range and highs (which is necessary for proper stereo separation).

In order to implement anything close to what you want to do, you are either going to have to spend some money and time finding a custom separated pair ultrasonic transducer system, or build such a system yourself. Building one yourself will be cheaper, but more time consuming. Plus - if you don't own or have access to an oscilloscope, you are going to find it difficult to implement (you'll need one for tuning and debugging such a system, plus measuring output and return echos, shape, etc).

If you need a 3D or 2D reference, and you don't want to implement a servo-based scanning system because of its speed (slow), then you could potentially build a system where you cover a circle (2D) or a sphere (3D) with several ultrasonic transducers, and then pulse each in turn (round-robin fashion) and listen (using the same transducer) for the echo, measure the distance, then move on to the next transducer. You would then have to integrate those measurements to gain a 2D or 3D fix/map of position in the environment (and probably also map the environment at the same time).

It would all have to be custom built - and it isn't a system for the "faint of heart"; the biggest issue it using a single transducer for transmit and receive of the signal - it can be done though, because back in the 1970s-1980s Polaroid used it for range finding and focusing on a series of their instant cameras (Sun 660, Spectra, etc). Many robotics experimenters of the era played with converting these units from the cameras (Polaroid also sold an experimenter's kit that was rather pricey compared to hacking the camera). It was essentially the PING of its day.

When I go to Goodwill locations around town, I always grab any old Polaroid cameras with the ultrasonic units I see (I have quite a collection, now, waiting for teardowns!).

You can build your own system; there are resources on the internet discussing them, as well as Polaroid camera sensor hacking (one of the best sites is the Seattle Robotics site).

Good luck.

:)

the time difference between arrivals then could be measured and trilaterated for position information…

So how does the receive system know when a pulse was sent in order to measure the time it took to travel?

So how does the receive system know when a pulse was sent in order to measure the time it took to travel?

The receiver end tells the emmiter to ping via bluetooth, so when the command is sent, you can start listening for the ping... Or, to prevent comm fails, maybe the emmiter could reply via BT just before pinging so we know the precise time of sending...

About the receiver/emmiter pair... maybe the quickest approach (and cheapest) would be to hack a PING))) sensor so as to disable it's emmiter... (and one with disabled listener for the emmiter)... IDK how easy would be to do that... it might not be as simple as snipping the leads off the transducers...

Anyways, thanks for the encouragement... I might just get to building this thing one day... and I'm gonna need all the encouragement I can get ;)

About the array of rangefinders idea, I've thought about that... but decided it was too unreliable, since my puprpose is to track an object inside a volume, but the object could be anywhere inside that volume... plus, the separate emmiter/listener rig allows for other cool things like multiple emmiters.

Oh, and about the directional properties of ultrasound, I have a backup plan in case I can't find something that fits the need... I image a half-sphere positioned right above the emmiter, to deflect the ultrasonic wave in all directions... something like a halved ping-pong ball maybe :P

Cheers

I know that you can do this with a mesh of xbees and use the rssi to show signal strength.

This is an interesting idea too, I read about a project that used something like this (IIRC, it was wi-fi sig strength) to calculate your position using your local WLAN...

But trilaterating based on signal strength doesn't seem too realiable, does it? does signal strength decrease linearly?

In the project I was reading about the author had made a number of charts showing the results and how far off they were... He had to add a 300-cycle smoothing to get useable data...

Also, I worry about the refresh rates... suppose I have 3 markers (emitters) inside my space, and each is emitting pings for the sensors... that in itself might very well require 9 pings just to complete a calculation cycle... and even though a ping will take only about 10ms, that's quite enough to reduce the net framerate to below 10 fps...

There is a commercial system called Hexamite that uses this same principle to track objects in absolute 3D space... but as it seems it uses a complex sound analisys method to extract positional data... it's not a ping system...

This may yet need some thought... :-?

Cheers

Ok so my first question. Does the object in the middle of this network need to know where it is or does the network need to know where the object is? You can just send the data wirelessly both ways if it the opposite of the ideas presented. Depending on speed of tracking required.

You could do it with IR LEDs on the bases and three cameras on the unit or something similar.

The ultrasonic transmitters can be relatively wide angle so you might need to find the wides one and use 4 or more or something to get 360deg.

Also what kind of scale are we talking about here? cm? metres?

Mowcius

Hi,

The object does not NEED to know it's own position... all data inference is done from the network up... (or should be at least)...

The idea is to have as little hardware on the emitters as possible, to keep them simple and battery powerable...

We're talking about meters in scale... I imagine something like a 3x3x3 meter volume.

About the LED idea, that's actually the reason I'm so obsessed with ultrasound tracking now... We built an LED tracking rig for a project a while back and it failed miserably... the cameras wouldn't pick up the LEDs, there were problems with light interference... horrible stuff really :-X

So I started thinking about potentially more reliable ways of tracking absolute 3D positions, and it occurred to me that maybe a sonar-like approach could be a better option (I hope)

The rig is quite complicated... much more in fact than a camera-LED rig, but I'm hoping it should be quite more robust as well ::)

Cheers

We built an LED tracking rig for a project a while back and it failed miserably… the cameras wouldn’t pick up the LEDs, there were problems with light interference… horrible stuff really

Hmm, sounds like you just had bad hardware or bad luck :frowning:

Unfortunately I cannot think of an easy way to do it other than with LEDs.

Mowcius

Hmm, sounds like you just had bad hardware or bad luck

More like bad software actually... the program we were using wasn't made for LED tracking, so we were trying to do something with it that it wasn't made to do... and that led ( ;) ) to all sort of problems...

Although it can be done using proper hardware and software... There are other problems associated with camera tracking, like lens distortions, perspective issues and general badness like that... So I'm on a personal quest to find a better, more reliable alternative... and I want to stay away from LEDs for that...

Apart from that, LEDs have another limitation in that you can't tell one apart from the other, save on very controlled conditions (like the TrackIR), and I want something more flexible than that...

Cheers

The receiver end tells the emmiter to ping via bluetooth

That assumes that there is no delay in getting something sent in a blue tooth package. There will be a delay and it won't be a constant one.

That assumes that there is no delay in getting something sent in a blue tooth package. There will be a delay and it won't be a constant one.

Yes, I'm aware of that. My idea is to send a timestamp to the emitter as the command to ping... this serves as a sync for the emitter, which then replies via BT with it's current timestamp at the moment of the actual ping, so the base station knows the time of ping not because of when the message arrived, but what time was written in the message.

To compensate the delay, once the message arrives, we start counting until we hear the ping, then get the time difference between the message sending time and it's arrival time, and add that into the measured ping time.

If all that fails, plan B is to not use BT, but some other form of radio communication with less or more constant delays.

Cheers