Udit’s Status Report for 2/29/20

What was done this week:

I was focused on figuring out a way to program the chips with Python through SPI as a backup plan for if doing baremetal or the decawave API proved too difficult. Someone did something like this here:https://iosoft.blog/category/ultra-wideband-uwb/

I read through the entire thing and learned a lot about some of the math. But Shiva was able to figure out how to directly program the chips starting from some C examples so this approach was put on the backburner for later.  I also did significant work on the Design Presentation and the Design Report since I wanted to work on that while Shiva and Rhea worked on the TWR/TDoA communication + SPI backhaul.

I also kept track of these new facts about TWR/TDoA calculations that will be important.

  • You need to use asymmetric 3 message TWR to make sure that different clock speeds will be matched
    • Formula:
      rnd1 = Rx2 - Tx1 # Round-trip 1 to 2
      rep1 = Tx2 - Rx1 # Reply time 1 to 2
      rnd2 = Rx3 - Tx2 # Round-trip 2 to 3
      rep2 = Tx3 - Rx2 # Reply time 2 to 3 
      time = (rnd1 × rnd2 - rep1 * rep2) / (rnd1 + rnd2 + rep1 + rep2)
  • Even with this formula, you have to experimentally determine the UWB clock delay (how long it takes for chips to send the signal) to get the exact distance

Our team is about 1 day behind since we have TWR working but still are yet to do radio delay calibration since the output we are getting seems inaccurate. We still have a sizable amount of the design report to do and finalize but we have most of it in pieces.

The hardest part remains time sync but we tackle that problem with the many options we have to solve as soon as we get backhaul into RPi working in any fashion.

I feel much better about the project than last week.

Rhea’s Status Update 2/29/20

Since Shiva made a lot of progress on the tag communication I didn’t have to work on the anchor.  Instead I started on getting data from the anchors to the Raspberry Pis.  I’ve been going through some more of the documentation for the DWM 1001s and how to do SPI communications.

Early next week I plan on getting the backhaul to work completely.  And then I plan on getting the Raspberry Pi to timestamp the data that it receives.

Team Status Update for 02/29

We changed our order for implementation but no main change to design. We will pressure time sync with simplest solution (just raw clock in RPi) before trying more complicated solutions like TCXOs or centralized clock with a wire connecting to each anchor.

The change was necessary because we were struggling to make progress on implementing the chips in same fashion before paralleling other tasks. And looks like we finally have that (even if we don’t fully understand the entire API yet)

Achieving accurate time sync remains a problem since we can only experimentally verify what will work and not plan for it.

We plan to ameliorate those risks by trying to start working on it next week (earlier than scheduled)

Here is our updated Gantt Chart.

Our main success in the past week was a functioning TWR demo, as seen in Shiva’s Status Update for 02/29. We also have to get a test in ANSYS on Monday though.

Shiva’s Status Update for 02/29

This week, I successfully programmed two Decawave anchors to transmit and receive data, then calculate distance via Two-Way Ranging over ultrawide-broadcast radio communication. This is mostly on schedule for our Gantt chart, but we did not anticipate having to calibrate the anchors. Tomorrow I will calibrate the anchors for more accurate distance calculations. Then we will be right on schedule again.

In the next week, my deliverable is to write the TDOA software to enable multiple anchors to receive a broadcast from a single tag, then pass the time of reception & tag ID to a central server program.