Weelie’s Status Report for 4/20/2024

  • What did you personally accomplish this week on the project?

Last week, I worked on optimizing localization algorithm and distance measuring methods to reduce the lagging.

First of all, I tested on raspberry pi to check the performance. However, I found out that even though the algorithms are much faster, the lagging on Raspberry Pi was still very obvious. I found that the more important problem that cause the lagging is that the tag itself will enable a stationary detection, which even block the measurements when walking in a normal speed. I changed the threshold of the detection and now it worked smoothly on raspberry pi. Another optimization I did was related to PySerial. I found that the input buffer of PySerial module is consuming too slow on Raspberry Pi. I changed the code such that Raspberry Pi will only read the last input line instead of reading the first line in the buffer like a FIFO queue.

I also contributed to the Final Presentation slides and related testing. After I did the general testing listed on the slides with my teammates, I tested the whole system in a larger scale (The whole Roberts floor B). And I found that when the tag getting  closer to the network switching area, it will get unstable.

Github Repo: https://github.com/weelieguo/18500-dw1001

  • Is your progress on schedule or behind?

Based on the schedule, I should still working on optimizing and testing the localization system. It is on schedule.

  • What deliverables do you hope to complete in the next week?

This week, we found that the localization system will get unstable when it goes to areas that needs to switch between multiple anchors. I will try to resolve this problem over the next week.

  • What did I learn during the process?
    I learned how to use Embedded Studio to write code and debug the DWM1001. I learned to look at the forum and the user manual (development kit) to get useful information. In the forum, I can see others’ posts regarding to different areas. In our case, Qorvo is the forum that I can gain information from, such as multithreading with DWM1001.

Weelie’s Status Report for 4/06/2024

  • What did you personally accomplish this week on the project?

Last week, I worked on optimizing localization algorithm and distance measuring methods to reduce the lagging.

First of all, we used SGD to estimate the current position before. However, the computation time of running SGD is too long such that it will create lagging when we are walking around. The case is even worse when we try to run our algorithm on Raspberry Pi. Thus, I worked on changing our algorithm from using SGD to merely Numpy such that it doesn’t has as much computation stress as SGD.

Second, I did research on distance measuring methods. TWR vs. TDOA. Before, we were using TWR to measure the distances. Although TWR is more accurate when it gets closer to the range(about 25 meters in our case), it needs time to transmitt 9 messages each time, which requires some time to actually get the measurement. For TDOA, it only needs 1 message to get the distance, which requires less time. The distances may get less accurate when it gets closer to the range, but since we are using a lot of anchors, it can reduce the effect of inaccuracy because the distances between the tag and closer anchors are more accurate.

Github Repo: https://github.com/weelieguo/18500-dw1001

  • Is your progress on schedule or behind?

Based on the schedule, I should still working on optimizing the localization algorithm. It is on schedule.

  • What deliverables do you hope to complete in the next week?

We got a new IMU this week. Next week, I will incorperate the IMU with the current localization system to form a kalman filter.

  • Verification

Since I mainly worked on the localization system, I need to make sure that distance measuring. The localization system itself is mentioned in Team’s Status Report and it needs to be tested with the whole team. In my status report, I will mainly discuss how to test distance measuring.

We have a laser measuring tool to measure the distances. First of all, set one of the anchors to a fixed position, and then start moving the tag from the anchor. Increase the distance about 5 meters each time and check if the tag measured distance is about the same as the distance that the laser tool measured (within 10cm deviations). I should continue to increase the distance until the distance reached the range of the UWB devices. I should repeat the test for measuring distances for multiple anchors. I should make sure that all of the distances measured are basically correct. I will also test in different situations such as signal blocks by walls and doors.

Weelie’s Status Report for 3/30/2024

  • What did you personally accomplish this week on the project?

Last week, I worked on refining the localization algorithms to make it more stable and accurate. I upgraded trilateration algorithms into multilateration. I tested the localization algorithms for the system and make sure that it works fine along the A-level corrider of Hamerslage Hall. The video can be found in our team status report.

I worked with Jeff to set up a more stable and faster network connection (websocket) between the tag and the webserver.

I helped Ifeani setting up environments for running localization algorithms on Raspberry Pi.

Github Repo: https://github.com/weelieguo/18500-dw1001

  • Is your progress on schedule or behind?

Based on the schedule, I should still work on the localization part and prepare for the interim demo. It should meet my schedule.

  • What deliverables do you hope to complete in the next week?

Next week, I will work on running the localization system on the Raspberry Pi, and also integrate IMU orientations (what Ifeani did this week) with the localization system. Also, I will try to test the localization system in a larger scale and make sure that the tag can detect at least three anchors all the time in a large space.

Weelie’s Status Report for 3/23/2024

  • What did you personally accomplish this week on the project?

Last week, I worked on the interfacing between the dwm1001 tag with the laptop. And used python script to read the serial outputs from dwm1001 and perform trilateration algorithm to get the estimated position of the current location. Then I worked with Jeff to transfer the location data from the location machine to webserver. At last, we successfully made them as a whole system. The tag could get the distances of anchors, perform trilateration algorithm, and then transfer the data to the webserver and show the current location on a graph. I also used averaged position to make the measurements more accurate and stable.

Github Repo: https://github.com/weelieguo/18500-dw1001

  • Is your progress on schedule or behind?

Based on the schedule, I should still work on the localization part. It should meet my schedule.

  • What deliverables do you hope to complete in the next week?

Next week, I will work on optimize the trilateration algorithm to make it more accurate, and also preparing for interiem demo.

Weelie’s Status Report for 3/16/2024

  • What did you personally accomplish this week on the project?

Last week, I mainly worked on the communications between a tag and multiple anchors. Now the tag and the anchors can be configured in the same network. The tag could simultaneous receive signals from multiple anchors and know the anchors’ ids (mac address) and get the distances from the tag to the anchors. The tag will then output the information of all anchors it received by printing information out with UART. The video can be found in our team status report and our slack channel. I also pushed the code in the git repository.

Github Repo: https://github.com/weelieguo/18500-dw1001

  • Is your progress on schedule or behind?

Based on the schedule, I should still implement the trilateration algorithms this week. Now I finished the distances measuring and the trilateration algorithms themselves. It should be on schedule.

  • What deliverables do you hope to complete in the next week?

Next week, since we already have distance measuring and trilateration algorithms implemented. I will try to connect the Raspberry Pi 4 to the tag to read the uart output and parse the distances and positions to use trilateration algorithm. Then we will send the information to the frontend server to see if our localization works for a single room.

Weelie’s Status Report for 3/9/2024

  • What did you personally accomplish this week on the project?

Last week I mainly did two major things.

  1. I helped writing the design report. Mostly I finished the algorithm part, the system design part, and some of the tradeoff part. After that, I helped change some minor errors in the design report.
  2. I implemented a general trilateration algorithm that could take in 3 distances and locations of UWB devices and return an estimated current location. I also started working on setting UWB devices to be tag and anchors such that a tag can receive multiple signals from anchors. The details can be found at our github repo: https://github.com/weelieguo/18500-dw1001
  • Is your progress on schedule or behind?

Based on the current schedule, I should work on localization algorithm for the following 2 weeks. Thus, my process is actually on schedule.

  • What deliverables do you hope to complete in the next week?

Since we haven’t retrieve our Raspi 4 yet, I will start working on the transaction between the tag(UWB device) and Raspi 4. And make the trilateration algorithm works on Raspi 4. Then, I will implement the protocol to choose between all the anchors devices because we only want to use 3 strongest signals (closest to the tag) to measure distances and used them for trilateration, which could include multithreading for UWB devices.

Weelie’s Status Report for 2/24/2024

What did I do last week?

Last week I started to work on UWB 1001. First of all, I tested the range of the UWB devices to check if that could fit our MVP requirements and use case requirements. I used two UWB devices that are seperated around 25 meters. And there were also some walls that could mitigate the signal strength. I set one of the devices as the sending and the other device as the receiver. At the last, I found that even with such distance and block, the receiver can still receive the signals from the sender. After that, I programmed the devices to measure the distances between two UWB devices. For the protocol of the two devices, I used RTT to measure and calculate the distances between two devices. And I made a Github Repository to keep all of our codes for UWB.  After uploaded onto the devices, I get that the accuracy of the distance measuring is very high, and is about 10 centimeters differences.

https://github.com/weelieguo/18500-dw1001

My process is on schedule as decribed on the Gantt Chart.

What will I do next week?

Next week, I will work on making the tag devices to be able to receive multiple distances and implement the localization algorithms for the tag devices. Also, since we might acquire a Raspi, I could also implement on the interfacing between UWB devices and Raspi.

Weelie’s Status Report for 2/17/2024

What did I do last week?

Since we decided to use UWB instead of WIFI to calculate distance, I looked more into UWB32 Pro, and how it could combine with IMU to provide more precise localization technique. I looked more into the algorithm for the fusion of UWB and IMU. Here are some of the papers I found:

https://iopscience.iop.org/article/10.1088/1742-6596/2369/1/012092

https://ieeexplore.ieee.org/document/8483323

https://www.mdpi.com/1424-8220/23/13/5918

https://www.ncbi.nlm.nih.gov/pmc/articles/PMC10422251/

https://link.springer.com/chapter/10.1007/978-3-031-34776-4_4

I also looked into how to setup UWB devices based on the following tutorial.

My process is good based on the schedule.

What will I do next week?

Since this week we have already acquired the UWB development kit, I will work on setting the UWB devices up and implementing the localization algorithms.

Weelie’s Status Report for 02/10/2024

On the proposal, we got a lot of suggestions for our projects. For indoor positioning and navigation, there are a lot of possible solutions and combination of devices. To figure out what combinations fit us most, I researched on the algorithms that can achieve our goal. I mainly read through algorithm papers to prepare for our final decision. I will attach the interesting ones for us.

https://ieeexplore.ieee.org/document/7275538

https://ieeexplore.ieee.org/document/8559721

https://ieeexplore.ieee.org/document/7346754

https://ieeexplore.ieee.org/document/9874146

https://www.ncbi.nlm.nih.gov/pmc/articles/PMC10610672/

https://link.springer.com/chapter/10.1007/978-3-031-26712-3_6

https://ieeexplore.ieee.org/document/9708854

https://www.mdpi.com/1424-8220/21/4/1114

https://wiki.makerfabs.com/ESP32_UWB.html

Based on the gantt chart, this week is on schedule for me. Since we havn’t get our devices yet, I couldn’t do more than rearch on the algorithms.

Now we have decided to use ESP32_UWB or Computer Vision approach for our projects. For the next week, after we bought all the widgets, I will work on set up these things. If we couldn’t get these devices, I will work on doing more research on UWB and CV indoor navigation.