Team Update 4/4/20

What are the most significant risks that could jeopardize the success of the project?

The most significant risks right now is our shallow understanding of these algorithms; most of the issues being encountered are related to algorithm implementation, causing longer debugging times that we anticipated.  Additionally, a lot of our classes are beginning to pick up as the end is in sight, so we’ve been juggling the work with this class with the work with our other courses.
How are these risks being managed? What contingency plans are ready?

The risks are being managed by looking at more examples and trying to better understand the ways that these algorithms can be implemented; additionally, we’ve found youtube videos really helpful with explaining these concepts.  Moreover, I feel that clearer communication has facilitated debugging, since asking each other for help and using each other to debug has been helpful.
Since the end is in sight more than ever, we feel that we’ve prioritizing other projects based on deadlines, and since this assignment is the soonest deadline for all of us, we really want to make a big push this weekend + beginning of next week before things pick up again.
Were any changes made to the existing design of the system (requirements, block diagram, system spec, etc)?

No- after our discussion last week of not making any more revisions and being confident & set on our current design, we have not made any significant changes to our design.
Why was this change necessary, what costs does the change incur, and how will these costs be mitigated going forward?

We’ve not made any changes this week!

Provide an updated schedule if changes have occurred.

The schedule has not changed.

Mia Han’s Status Report 4/4/20

What did you personally accomplish this week on the project?


I’ve been working on integrating my protocol with the GUI.  I’ve ran into more issues that I was expecting; I feel that my issues have arose from forgetting small things in C and relearning a few concepts.  Additionally, our team met a few days ago to discuss how we are going to approach integration and what unforeseen tasks need to be addressed.  Ultimately, I’ve spent this past week refining my protocols and integrating it with the GUI; moreover, I’ve been helping my team understand the GUI and the plan for how it all should be integrated.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

I feel that my progress is a bit behind; because of my rustiness with C and learning along the way with these algorithms, I underestimated slightly the difficulty of implementing these.  These algorithms are a lot more complex to implement than understanding.

To catch up, I’ve committed spending the time now until the demo to integrate, test and debug our protocols.  I feel that I can make a big push before things get too hectic with my other coursework next week, and now that we have a clearer vision for what we are planning to do, I feel that I can complete those tasks with more confidence.

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


I hope to:

  1. Refine the GUI
  2. Integrate the viterbi + convolutional codes and hamming codes implementation with the GUI

John Paul Harriman’s Status Report for 3/28/2020

What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

I was able to start actually implementing our code!

I did a lot more research into what exact error correcting codes that we could use for our defined packet model. I’ve been going deep into this rabbit whole of which one is the best to use so hopefully next week I can start connecting the dots between all of them. I wrote the code for defined packet generation with a new model.

This model helps us gain easier access to verification by storing it in a struct because we now don’t have to pass all of our data through the specific wires and can focus on correction/detection and protocol handling.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?


I personally think we’re catching up, but still have a lot to do. If we can start getting algorithms down for correction/detection then we can have a successful project.

I’m going to do my part now which is gathering all the different algorithms and hopefully link up with my teammates over the next week.

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

Deliverables for next week are the Reed Solomon algorithm and others for the defined packet length to be completed in C, but without the additional component interactions.

I kind of switched my paths halfway through so I’m going to keep these goals.

Team Update 3/28/20

What are the most significant risks that could jeopardize the success of the project?

The most significant risks that could jeopardize the project is still working separately as a team and all of us being in different time zones; because of this situation, communication takes longer and more planning.  Additionally, possibly being overambitious last week may jeopardize the success of the project.  This week, we regrouped as a team and after taking in the feedback from our meeting, we realized that it was important to simulate and verify our protocols using a GUI; thus, we shifted our attention to the GUI and adjusted the Gantt chart accordingly.
How are these risks being managed? What contingency plans are ready?

These risks are being mitigated by setting times during the week that we will consistently meet at.  This will force us to routinely regroup and will facilitate discussions that were previously delayed because of lack of planning.

The contingency plan is to get the GUI working + properly simulating the protocols and writing at least the convolutional codes + viterbi, UDP with windowing, reed solomon, and Turbo Codes.  We realized that we should include a GUI regardless; therefore, we are prioritizing the creation and integration of the GUI over the addition of more protocols.

Were any changes made to the existing design of the system (requirements, block diagram, system spec, etc)?

We’ve slightly restructured the interactions between the protocols and GUI.  Because we are no longer integrating with the hardware, we’ve simplified and modified how data will be exchanged between the GUI in Python and the protocols in C.  For the GUI implementation, we’ve decided to use PyForms, a library that provides a clean-looking GUI.  We plan on using a library, ctypes, that allows for C functions to be called in Python.  We’ve made a new diagram that illustrates the new exchanges between the protocols + the GUI: 
Additionally, after further research, we have decided that we might not be going with the Reed-Solomon implementation for I2C/UART.  We’ve decided to experiment with the various protocols to determine whether we should continue with that implementation or not.
Why was this change necessary, what costs does the change incur, and how will these costs be mitigated going forward?

The change was necessary because we are no longer running our software on the drivers; since our project is now simulated, we had to redesign slightly modified transactions between the GUI and the protocols.  Additionally, last week, we didn’t think that we needed a GUI to simulate and verify our protocols with; we thought test benches would be sufficient.  However, after several discussions this week, we realized that we should bring the GUI back.

Because we will be spending more time integrating the protocols with the GUI and creating the GUI, we will not be able to implement as many protocols as we like.  Our initial plan was ambitious though, and since we’re already finished with at least half the protocols, we were able to make time to create and integrate the protocols with the GUI.   To mitigate these costs, we plan to no longer make large changes like these to our design and since everything has been re-prioritized, we hope to stick to those new decisions.
Provide an updated schedule if changes have occurred.

This is also the place to put some photos of your progress or to brag about a component you got working.
GUI: 

Statement Of Work

We believe that most of our original project can be maintained, since the crux of the project is software that will be loaded onto CubeRover’s modules.  Since we can no longer simulate the protocols using physical components, we intend to simulate the protocols. Because the hardware aspect is no longer feasible, we plan on re-focusing our project to create, implement and test various error detection and correction algorithms to determine which methods best meet CubeRover’s specifications and hardware specifications.  Creating these various error detection and correction protocols are the priority; a stretch goal would be creating the GUI to make our error detection and correction simulations more presentable.

Error Detecting and Correcting Algorithms that we will be creating and testing:

I2C + UART GPIO + SPIO Wifi
  1. Reed Solomon
  2. Hamming Code
  3. Low-Density Parity Check Code (LDPC)
  4. BCH code
  1. Turbo Codes
  2. Convolutional Code + Viterbi
1. TCP over UDP w/o windowing

2. TCP over UDP w/ windowing

 

Currently, we’ve decided to start looking into and implementing Forward Error Correction Codes, LDPC Codes, and Turbo Codes; a reach goal is researching and implementing other error correction and detection methods.

Current State:

Right now, we are finished writing and verifying the correctness of the initial error correction and detection methods that we decided on implementing (reflected in our most recent Gantt Chart created before spring break).  Our current implementations, however, are designed to send data to the microcontrollers; we will therefore spend a few days modifying our current implementations to be simulated and verified using test benches. 

Old vs. New Phases:

Old Phases New Phases
  1. Creating the algorithm implementations
  2. Data Verification
  3. Protocol Verification and Throughput Test
  4. Hands-Off
  1. Creating the algorithm implementations
  2. Data Verification
  3. Analysis of tradeoffs/runtimes

We have updated our previous phase plans to reflect the changes that we have made to the project; instead of verifying the accuracy of the data being passed to and from the microcontroller, we will instead shift to writing more algorithms to determine which error detection and correction implementations best fit the requirements of the project.

New Tasks + Splitting New Tasks Between Team Members:

Previous Tasks New Tasks
Mia:

  • GUI Implementation
  • SPI/GPIO: Convolutional Codes + Viterbi

John Paul:

  • UART/I2C: Hamming Code

Sam:

  • Wifi

All: Integration

Mia:

  1. SPI/GPIO
  • Turbo Codes
  • Convolutional Codes + Viterbi
  1. GUI 

John Paul:

  1. UART/I2C
  • Reed Solomon
  • Hamming Code
  • BCH code

Sam:

  1. UART/I2C:
  • LDPC
  1. Wifi
  2. GUI

Sam Adam’s Status Report 3/21/2020

What did you personally accomplish this week on the project?


Over spring break, I worked on finishing up the wifi-UDP implementation. I also worked with my team to pivot the scope of our project in order to work on it remotely.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

I believe that my progress is slightly behind due to the re-designing that we had to do to account for not being able to physically be together to implement the hardware components. However I do feel like the work I was able to get done over spring break puts me into a good spot considering the re scoping of the project.

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


I hope to finish the UDP/Wifi and write sufficient and thorough test benches to verify that I’m properly simulating the error detection and handling. This would free up my time to help out my teammates on the other communication protocols.

John Paul Harriman’s Status Report for 3/21/20

What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

With the end of Spring Break moving into the transition into the remote classes, most of my work has been getting my life back together and also trying to make the transition with Capstone.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?


I’m not sure if we are now on schedule or we were just forced to move the goalpost. As we move toward the simulation aspect of our project now, a lot of the stuff I was researching about the interactions between components is now basically scrapped. This project can be successful but I don’t think will be what we originally intended.

 

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

Deliverables for next week are the Reed Solomon algorithm and others for the defined packet length to be completed in C, but without the additional component interactions.

Team Update 3/21/2020

What are the most significant risks that could jeopardize the success of the project?

The most significant risk has been not being able to physically be together in Pittsburgh to work on the physical aspects of the project.  Additionally, because of this unforeseen event, we have lost more time to redesigning and shifting our project.  Moreover, because some of us our in different time zones, finding good meeting times for everyone is more difficult.
How are these risks being managed? What contingency plans are ready?

This is not a risk we really could’ve managed given the circumstances, but our suggested contingency plan is stated in the Statement of Work.

Were any changes made to the existing design of the system (requirements, block diagram, system spec, etc)?

A more detailed account of what we changed is listed in our SOW, but a brief description of the current goal of our project is “we believe that most of our original project can be maintained, since the crux of the project is software that will be loaded onto CubeRover’s modules.  Since we can no longer simulate the protocols using physical components, we intend to simulate the protocols. Because the hardware aspect is no longer feasible, we plan on re-focusing our project to create, implement and test various error detection and correction algorithms to determine which methods best meet CubeRover’s specifications and hardware specifications.”
Why was this change necessary, what costs does the change incur, and how will these costs be mitigated going forward?

This change was necessary because of Covid-19 affecting the physical proximity of the teammates and recognizing the physical aspect of the project would only put physical strain on one teammate instead of the team.

Since we’ve already lost time redesigning our project, we realize that we need to immediately recognize whatever problems that may arise; because we’ve already lost so much time redesigning our project, we can’t afford to loose any more time running into issues or rethinking our current implementation decisions.

The biggest issues moving forward are not being together, making communication significantly harder amongst team members; additionally, some of us are in different time zones, making meetings harder to arrange.  Thus, to mitigate these costs, we have set up weekly meeting times that work for all of us regardless.  Additionally, we are clearly and frequently communicating to each other should any issues arise immediately.

Provide an updated schedule if changes have occurred.

This is also the place to put some photos of your progress or to brag about a
component you got working.

Mia Han’s Status Report 3/21/2020

What did you personally accomplish this week on the project?


After hearing that we are no longer returning to campus and moving to virtual classes, I paused what I was working on, because I was uncertain where our project would be moving from there; I spent the remainder of spring break working on homework assignments that I knew would not be affected by moving virtually online.  Once we regrouped on Wednesday as a team and with our professor + TA, I began shifting my focus from working on the convolutional codes + Viterbi to restructuring our project and new project proposal.  We really liked the idea of comparing several FEC’s, turbo codes, and LDPC to determine which one best fits CubeRover’s hardware constraints.  Therefore, I spent most of this week deciding which error detection and correction algorithms would be prioritized for GPIO/SPI and finishing up Viterbi + convolutional codes; I also researched the pro’s and con’s of those various algorithms more thoroughly.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

I believe our progress is definitely behind; already using this week to restructure our project, I believe that we are behind turning our project around and implementing a slightly different version of the project in the next seven weeks.  Additionally, I didn’t accomplish as much work as I would like over spring break, putting me more behind than I was originally expecting; I spent more time brushing up on C/C++ and fully understanding the nuances of convolutional codes + Viterbi than I was originally expecting.

To catch up to project schedule, I believe that I will be able to spend more time on the project, since the quarantine in my town is stricter and there’s literally nothing else to do besides stay home.  Additionally, I spent some time next week worrying about and cancelling future plans; therefore, I feel that getting into the school work grind will begin this week.

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


I hope to

  1. Finish and test convolutional codes + Viterbi implementation
  2. Fully understand and start writing the Turbo Codes implementation