Team Status Update for 03/21

We spent most of our time this week trying to get reoriented after the major changes to our lives due to COVID19. Our project also went through some major changes.

  • We spent a lot of time trying to figure out how we could get the remaining hardware we needed. We needed our cables we ordered to ECE, and new solderless headers. Our only option for the latter seems to be importing from the UK
  • We redesigned the project to remove reliance on hardware by having Udit build a hardware timestamp simulator. Shiva will work on localization and Rhea will work on localization with error-correction.
  • Our refocused SOW is attached.

Refocus SOW

Rhea’s Status Update 3/21/20

The progress on SPI has been held up by waiting for hardware.  We finally found and purchased solderless headers.  Once those arrive I should be able to finish setting up the connection between the chip and the Raspberry Pi.

This week I read papers on the multilateration algorithm.

Next week I will be working on the multilateration algorithm.  And depending on when the solderless headers arrive I might be able to finish getting the communication between the chip and the Raspberry Pi working.

Shiva’s Status Update for 03/21

This week, I successfully completed the deliverables E2E Blink Delta Proof of Concept and Scaled E2E Blink Delta Proof of Concept.

Technically, I’m still one week behind per the details of the current Gantt chart because Rhea was supposed to work on Scaled E2E Blink Delta Proof of Concept, but COVID-19 has forced us to rescope and we will be modifying the Gantt chart to reflect this.

Personally, I still plan to complete the E2E TDOA deliverable. I want to implement a functional multilateration algorithm  in Python by the second week of April.

Gantt chart:

Rhea’s Status Update 3/15/20

I was working on the SPI connection between Decawave chip and the Raspberry Pi.  I wrote the code to send messages over SPI for the chip and flashed the code onto a chip.  Also started on the wiring for the SPI connection, but didn’t have the necessary parts.  I also started on the Raspberry Pi side of the SPI communication.

My plan was to get the SPI connection working and Raspberry Pi to timestamp the data during spring break.  I was going to do it during the second half of the week when, I got back to Pittsburgh, but since classes got moved online and it was undecided how the project would move forward, I decided to wait.  So if we continue on with our current schedule I will be a little behind.  But the focus for the beginning of this week is testing the E2E Blink Delta Proof of Concept, so I can hopefully get the SPI working and we can test this part by midweek.

I’m not sure what my actual deliverables for next week will be since our project is very likely to change due to the remote instruction.  Assuming our project stays the same, next week I will get the Raspberry Pi and chip communicating using SPI, the Raspberry Pi will timestamp the data.

Shiva’s Status Update for 03/15

In the week before spring break, I started working on the TDOA code for the E2E Blink Delta Proof of Concept milestone in our Gantt chart. I spent the first half of the previous week reading, documenting, and understanding the existing Decawave API, and then the second half of that week writing my own TDOA solution. Unfortunately, my TDOA code was buggy for one reason — I completely did not think about the fact that TDOA does not use timestamps in the same way that Two-Way Ranging does, and tried to write my code using TWR’s mechanism as a baseline.

As a result, I am currently a week behind schedule. I will be using my slack time this week to remedy that and rewrite the TDOA code accordingly. Whereas previously I was trying to send the tag’s timestamp and only test on a single anchor, now I am going to rewrite the tag code to only send its ID and rewrite the anchor code to only log the time when it receives the ID pulse. I will then run this code with two anchors to check that they can both correctly receive the tag’s ID.

Luckily, the need to work with multiple anchors also dovetails into my next deliverable: Scale E2E Blink Delta Proof of Concept. This deliverable requires multiple anchors to identify the tag, which is inherently required for a functional TDOA system. As a result, I aim to accomplish both E2E Blink Delta Proof of Concept  and Scale E2E Blink Delta Proof of Concept over the next week.

Gantt Chart:

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.

Udit’s Status Report for 2/22/20

This week I confirmed that the design I will first be testing is just using the C calls for oscillators on the Decawave/RaspPi chips.

I found enough other people who were able to use this to enough accuracy for TWR/TDoA communication so it is important for us to give it a try.

I wrote a script in both C and python that calculated nanosecond clock ticks using the monotonic performance counter clock. Now we just need to focus on getting the UWB signals sent and received.

Our split up work is being severely hamstrung by that one component so it makes sense for all of us to work on that one part for now.

Also spent significant time this week reading through decawave documentation to start programming a tag software on the decawave chip. I am approaching the problem with Python while Shiva approaches it with C. We will take whichever one works first and run with it. And worked on the design presentation.

Roadblocks maintain programming the decawave chip (as, begrudgingly, Tamal was 100% right about).