This project is submitted for

Description

The SubPos Ranger is an open source development system for projects that require accurate distance measurement and positioning. The Ranger has been designed as a flexible radio frequency platform for hobbyist robotics and educational applications, to enable you to realise its autonomous positioning potential. This flexible design can even allow you to perform passive motion sensing to augment your existing positioning systems or even be used as radio modems and sniffers.

What Can It Do?

The distance measurement or proximity capability of the Ranger Boards achieves accuracy of up to +-10cm in line of sight conditions. When combined with the client expansion board and Teensy module, a combined position from the distances between multiple Ranger Nodes is calculated completely on the client without any external processing required.

When operational, the client will output its position and control information much like a GPS receiver, to a serial UART/GPIO or via USB. As such, the system allows you to develop an autonomous platform which always knows where it is indoors. You will now be able to eat every piece of cat hair with your modified robot vacuum, or guide your sustenance procurement bot 2.0 to the fridge to gather lemonade.

The boards also support a remote ranging function that can be used to monitor the movement of another board. This means you can use an additional board to track the motion of another device, without being physically connected to it.

The RF chipset on board also provides a true 2.4GHz ISM transceiver interface, this means that the Ranger Board is completely reconfigurable and not limited to only standards and positioning purposes. Because of this, you could also use it in an array of different RF applications such as radio modems, motion detection or wireless sniffing devices.

Ranger Board with Client Expansion Board and Teensy.

How Does the Ranger Work?

The Ranger Boards support a software load that uses the 802.15.4 standard to communicate information between each board. When determining distance between two Ranger Boards, they initiate a ranging handshake over 802.15.4 to then perform a distance measurement.

The Ranger Boards accurately determine the distance between one and other through phase shift/difference measurement and accurate timing techniques in the onboard Atmel AT86RF233 chipset. This is similar to how laser range finders work, except instead of light it uses 2.4GHz radio frequencies. The multiple antennas on board allow for multiple out of phase measurements to mitigate multipath effects, to best determine the distance between the Ranger Boards.

Two Ranger Boards showing how antenna diversity works with multiple phase measurements to obtain distance between each other.

The client performs this measurement operation multiple times per second to all visible nodes in range. It then uses the node positions and these distances to determine its own position in relation to these nodes through trilateration.

The Ranger Client works with multiple Ranger Boards configured as Nodes by making a series of distance measurements.

Project Logs

Hi everyone, I'm back from a bit of a break and to tear the band-aid off, I have decided to discontinue this project.

I have tried for a while to work out a way to manufacture smaller batches of this project, but it just isn't feasible on such a scale. Prices for smaller batches would push the price up nearly to what you can get a pre-made Decawave module for.

I was also working on tweaking the hardware to support passive time of flight (no communication required between node and client, just one way signals from the nodes). This would have allowed a more scalable and faster system at the cost of slightly lower accuracy. Unfortunately the Atmel AT86RF233 time of flight measurement module is both documented poorly and doesn't seem to work at all through testing. And with the release of this sort of functionality on the Decawave modules, it just doesn't make sense to continue with the Atmel hardware.

Having said that, I have a completely new and exciting project coming up soon.

It's certainly been a fun ride with a lot learnt. I thank everyone for their support throughout this project.

Note you will need an Atmel ICE or equivalent to program the Zigbit as the serial bootloader doesn't work with this.

The Ranger supports much more functionality over the ZigBit modules, such as antenna diversity, USB and many more software features, however this gives you an idea of the functionality of the RTB libraries if you have some ZigBits laying about.

Making up some Rev.02a boards. These boards have more bypass caps, better RF components and placement, more efficient via stitching as well as as few minor tweaks over the Rev.02. The final version (b) will have a dashed RF shield fill to make manufacturing easier, but the rest is pretty much final.

While working on getting the accelerometer to aid the update rate when averaging is enabled, it was discovered that the distance measurements themselves weren't occurring as fast as they should.

It turns out the original Atmel libraries for ranging had quite a large arbitrary delay set (100ms) between each distance calculation for display purposes. This delay has now been removed and it now effectively doubles the measurement rate. This in turn halves the amount of time it takes to reach a desired result, when averaging is performed across a large number of samples. So if you look at the current demo video again, just imagine it running at twice the speed.

Here's a quick demonstration of the 802.15.4 sniffing firmware you can load onto a Ranger Board via the USB bootloader. It can be used to diagnose issues with the Ranger Positioning System or for general purpose protocol analysis. The output can also be forwarded to Wireshark for nicer protocol decoding and logging.

The client is connected to the laptop with a USB connection. However, the client does all the positioning calculations, the laptop is just displaying the node positions and the current client position.

Averaging is turned right up which is why it takes a little while to update the position. This is because I live in an apartment block with lots of 2.4GHz RF flying about, so this helps to cope with that. I am integrating an accelerometer on the client to provide better intemediate updates when averaging is turned up too. But as you can see, it's pretty spot on in terms of accuracy.

I had meant to get a demo video up the other day but was battling with random issues with the system.

The issue was that the node batteries were running low as I hadn't charged them in a while. The MCU was still running, but the TRX chipset was failing to transmit. I have implemented a battery low warning monitor by using the internal bandgap reference on the xmega to solve this (I will implement functionality that sends this info to the client too, but for the moment it's just a blinky LED).

I have also been running into intermittent lockups on the Ranger. It turns out there is some errata in the TRX that leads to a "potential long PLL settling times". While this was handled, what wasn't handled was an unknown errata issue where the PLL never settles or initialises. This looks to be settled now as I perform a TRX reset when this occurs (after a longer timeout period; a few ms).

Not a huge update, but I've just been getting the USB bootloader and serial interface working with the ATXMEGA1284U on the ranging board, so the firmware can be updated once released and you don't need a USB->UART adapter to configure it:

I did, however those chipsets don't have a phase measurement unit or time of flight capabilities. Those dev boards are also significantly more expensive than the Ranger Boards, and they don't feature antenna diversity (check the kickstarter for pricing).

ah, didn't look into the ToF features of the chip, seems like a critical piece :) I wasn't suggesting the Atmel devboard as an alternative to the ranger but simply to help your evaluation - Ranger clearly does far more. Eager to follow the updates!

Might be interested to integrate these into a Micro Uav for localisation in a SWARM development project. Do you think that - on a later stage,- the client could be reduced in size and weight to fit into a form factor of approx. 20mm x 30mm ?

It should be possible to make it smaller, especially if using the VQFN version of the Ranger MCU and going double sided. However the challenge would be integrating the client MCU, as you really need this to speed up the calculations (the Ranger MCU is constantly getting distance calcs without delay), but it could be done (unless you don't actually need trilateration and just distance measurements between each device).

The only issue I foresee is you would get limited benefit from the antenna diversity which helps significantly with multipath effects.

The other option is to consider the Decawave modules as they are smaller, the only downside is the price. The BOM for this whole board is less than the Decawave module, and you still would need to interface to it.

Trilateration and antenna diversity are necessary, but implementation could be achieved by soldering RG178 folded sleeve dipoles directly on board (I might be wrong on this one if your design require a very special type of antenna pattern) . As for the processing, would it be possible to implement the Teensy directly on board ?

I'm using the ATSAM D11. It has more than enough grunt to handle the trilateration. I have another variation that uses the WLCSP20 package which leaves more room on the board for other things. Also if battery management is separated from this board it really us just the processor and the DWM1000.

Cost of those modules has been bothering me for a while now and I've been planing to spin my on variation for a form factor that can fit on a flex board that conforms to the shape of a cat collar but now that I've seen these chips I think they are the way to go.

Haven't put it up as a project here yet but I'll post it when I do, lots of footage to edit.