As I said, I was testing an idea to reduce noise on the distance measurements, by quickly doing several measurement and using the average, but in fact it didn’t had any effect on the noise. I also did a lot of tests in various conditions (with metallic and non-metallic objects or humans between the robot and the beacon) to get a better idea of the performances. I did some range measurements, we should have about 20-25m of range, it should be enough for our application. I also tested different channels to see if it impacts ranging (it does but channel 2, 3 et 4 are OK).
I also had some thoughts about the communication protocole :
- We’ll have one master beacon connected to the computer, transmitting orders and managing transmissions, 2 slave beacons communicating with the master beacon wirelessly and battery powered, and up to 25 robots.
- Since receivers need to be turned off most of the time to prevent heating and save battery life, I think TDMA may be appropriate (that is, each device gets a time slot for communication and ranging). It requires rather precise timing so that robots can turn on their receiver right on time, but we can use Decawave extremely precise ranging timer and fine tuned quartz to turn on the receiver and send messages on time.
- The master beacon periodically (a 100ms period should be good) sends a start of frame with informations on which robots are currently connected and the order of the time slots.
- The slave beacons returns information about previous frame ranging, so that the master beacon can triangulate all the positions.
- Information, including last known position, is then sent to the robots using ranging exchanges.
- Ranging with the slave beacons uses other channels to improve localisation refresh rates (a single distance measurements currently lasts 1.2ms, so 2ms long time slots seems OK)
- Empty time slots are added at the end of the frame to connect new robots. I need to think more about the precise mechanism.
Obviously this is only a draft and may change a lot, but we have to start somewhere I suppose.
In the next days I will install two additional Decawave modules (so we’ll have 3 beacons and a robot), test channel crosstalk and start implementing and testing this protocole.