Team Update 5/2/20

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

The most significant risks at the moment is spending too much time on the GUI and on the video and not enough time on the design document.  Additionally, another risk at the moment is spending too much time on the details and nuances of each protocol and not on the overall final report itself.
How are these risks being managed? What contingency plans are ready?

The risks are being managed by setting a hard deadline (tomorrow) for the GUI and the video to be completed by.  Additionally, we are communicating with each other a lot more frequently to ensure that no one’s overwhelmed with tasks/stuck.  The contingency plan in place is to submit what we have; we definitely have a sufficient amount of material to present on, but at the moment, we are being ambitious by squeezing a few more features in.
Were any changes made to the existing design of the system (requirements, block diagram, system spec, etc)?

No changes to any requirements or design besides adding more protocols to implement.
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 wanted to explore other versions of the protocols that we already have; we realized that different versions of the protocols existed and decided to further research these to ensure that our recommendations are accurate.
Provide an updated schedule if changes have occurred.

The schedule has not changed.

Team Update 4/25/20

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

One of the major risks that we are having right now is not getting the UDP part of the project integrated with the GUI and the rest of the protocols.  Additionally, because the original GUI library that we were using was not well documented, we’ve quickly made the transition to using a different GUI library to implement the GUI, making it (so far) a lot easier to integrate our protocols.
How are these risks being managed? What contingency plans are ready?

The UDP integration risk is being mitigated by making small changes to the UDP simulator in order for it to work with the GUI. Sam is dedicating time to make sure this gets done before we have to make our video.
Because the new library that we are using to implement the GUI is a lot easier to use, there has been less issues since debugging is a lot easier due to the more extensive documentation online.
Were any changes made to the existing design of the system (requirements, block diagram, system spec, etc)?

No changes to any requirements or design. We’ve changed the library that we were previously using to implement the GUI, but besides that, everything is the same.
Why was this change necessary, what costs does the change incur, and how will these costs be mitigated going forward?

The change was necessary since we were having difficulties displaying an image with the previous implementation of the GUI.  Because many of the functions were already created to call the protocols, integrating into a new and similar GU library wasn’t difficult; therefore, there are no additional moving forward.  If anything, it may be easier to understand the GUI library since it’s better documented.
Provide an updated schedule if changes have occurred.

The schedule has not changed.

Team Update 4/18/20

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

The most significant risks right now are not fully debugging the GUI, leading to an unexpected error; at the moment, the core error detection and correction algorithms are solidified, so the GUI may need to go through more rigorous testing.  Additionally, since the UDP protocol implementation is much different than the serial and bit streaming protocol implementation, a potential issue may be integrating the UDP protocol with the GUI taking longer than expected.
How are these risks being managed? What contingency plans are ready?

The risks are being managed by making the components between the GUI and algorithms as clean as possible; we’ve created an easy to use class that wraps around the protocols, making integration and debugging as simple as possible.  The contingency plan for not integrating protocols with the existing set up is creating a separate GUI/method of simulating those results.
Were any changes made to the existing design of the system (requirements, block diagram, system spec, etc)?

Nope- we’re still on track with the current design that we have and so far the implementations are working as expected.
Why was this change necessary, what costs does the change incur, and how will these costs be mitigated going forward?

We were deciding between a dynamic approach like JP’s graph demo and a non-dynamic/on-click approach like Mia’s approach using a console to display data; we’ve decided to go with a dynamic approach, since it more accurately simulates the accuracy rate during serial data transmission and was easy to make the bit streaming algorithms dynamic.  Rather than simulating one transmission of data by clicking the button, clicking the button will only change the protocol currently being simulating, while the actual transmissions are continuously going + results are constantly being graphed and displayed.

Provide an updated schedule if changes have occurred.

The schedule has not changed.

Team Update 4/11/2020

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

The most significant risks at the moment was the lack of communication between team members; right now, we’ve been working on our components individually, making integration a bigger task than it should have been.  Achieving cohesion by combing all of our implementations into a GUI is the biggest priority right now.
How are these risks being managed? What contingency plans are ready?

The risks are being managed by setting up a bunch of meetings to discuss how each other’s implementations of the protocol work to ensure quicker understanding of each other’s code.  Additionally, we are making sure that our code is clean and well-documented so that it’s easier for each other to understand how we’ve implemented the algorithms.
Were any changes made to the existing design of the system (requirements, block diagram, system spec, etc)?

Nope- we’re still on track with the current design that we have and so far the implementations are working as expected.
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.

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.

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: 

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.

Team Update 3/7/2020

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

Most of the problems that we were at risk for last week were successfully solved.
Our new risks come with the learning curve of using our new components that we ordered because there hasn’t been a way to really interact with them if we did not physically have them.
Besides that, we believe that we should be okay. We still need to figure out which addresses to write to and how exactly we will set up the components to interact with each in terms of where they will write data to, read data from, etc.
How are these risks being managed? What contingency plans are ready?

The risks are being managed by having this built into the slack. All pieces of code should be ready to go by the next time we meet with our components, so we can just now focus on the integration aspect of the project.

A contingency plan that would help is to get at least one protocol system working for our protocol wrapping. Then we can slowly start to add more and more tests and then eventually develop the entire system running at once. We believe that we can at least do one system in the next week if we have our components, so that is our goal for this week.

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

There was a change to the system that was a compromise between the decentralized and centralized models. We are also slightly changing the way that we pass data during what we call “debug” mode which sends the corrected data after an ACK. This changes the block diagram.

We also set hard requirements based off of the components that we are using to set our constraints.

Why was this change necessary, what costs does the change incur, and how will these costs be mitigated going forward?

This change for the architecture was necessary in order to follow our three phase plan for proof of correctness. Without this change we wouldn’t be able to remove the microcontroller and still show that our system works, but we also needed it so that we can reduce the weight we would put on the laptop that we’re using by keeping the fuzzing of data on the microcontroller still. Packet generation has now been delegated to each individual component due to the more realistic setting instead of placing it onto the fuzzing microcontroller. The costs that incurred was we took a lot of time during the design document phase to iron out our approach that we could’ve been used developing. Now we have to take time out of Spring break to catch up on our lost time.

Requirements had to be set in order to have a goal for our project. We need to work within the constraints because it limits what we can do and how we can approach the problem. Before we made this change, most of it was that we could basically try any approach and any solution was valid. Now that we have defined memory and timing constraints, we can work to improve the code that we already have.

 

Provide an updated schedule if changes have occurred.

The Gantt Chart has not changed for this week.

Gantt Chart

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

Team Update 2/29/2020

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

The most significant risks at the moment is going with a centralized/decentralized design that may have unexpected consequences.  Our team has been discussing which design to go with for so long, and because of the back and forth, we have already wasted time figuring out which one to go with and since both designs have drawbacks, we may run into more issues than we anticipate.  Moreover, we currently are still missing cables that are preventing us from uploading code to the STM32, hindering our progress by preventing us from simulating and testing our code.
How are these risks being managed? What contingency plans are ready?

The risks are being managed by acknowledging and understanding the fact that we really need to determine which design to go with to prevent further hindering of our progress (we are meeting tomorrow to discuss this).  Additionally, moving forward, we need to be more careful and check to make sure that we order all the components that we need when we place our orders.  For now, we need to make sure that we order this cable ASAP during class on Monday.  With the risks that come with both designs, we need to discuss and thoroughly justify which design to go with; by thinking through both designs and reasoning which one makes more sense with our various components, we hope to mitigate and foresee any issues that may arise.  Additionally, while implementing each of our individual protocols, we need to keep in mind how each of our components will fit into the design and if any issue or complication is realized while creating the protocol, we should notify each other and discuss the issue immediately.

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

We have a new constraint of fitting within the time for a timeout – which includes both the transmission time and the error correction time.

The design of the system also changed to a previous approach after consultation. We moved more towards a unit testing approach to streamline how we were testing the protocols, but a pass-through approach with our ‘fuzzing’ microcontroller would be more accurate to the system we are trying to emulate. This new design will be reflected in our design document.

Why was this change necessary, what costs does the change incur, and how will these costs be mitigated going forward?

Our timeout was necessary because now we have working constraints to work with. If we had infinite compute time, then we could use any algorithm, but since we are more focused on the aspects of power and time, we should use the real scenario in which it will operate.

That’s also why we changed our overall design to match a more realistic approach and help us move toward our three step plan of a working product.

Neither of these changes should have a higher cost.

We do need to find a new wifi module for our TI Hercules, but this will only bring cost down because we will not have to buy as expensive of an evaluation board to achieve the same results.

Provide an updated schedule if changes have occurred.

We adjusted the GANTT chart to account for the individual testing of each component’s protocol and data transmission (the phases that were discussed during the presentation).

Gantt Chart

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

Team Update for 2/22/2020

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

Like our previous post discussed, the biggest risk right now is being able to narrow down the tough to quantify requirements of the project.  For instance, we are having a hard time determining the percentage of packet that should be deemed unrecoverable.  Since all of us don’t have the deepest understanding of error handling and correcting, we are having trouble defining what is considered a recoverable data packet in our protocols.  Additionally, we don’t know what is considered a reasonable amount of latency for our protocols to error detection/correcting and between sending and receiving data packets.
How are these risks being managed? What contingency plans are ready?

Right now, we are prioritizing actually implementing the protocols and focusing on making sure the transactions are accurate and work.  Once those portions are implemented successfully, we will begin refining our protocols and seeing which one can be better optimized.  With better understanding of how error correction/detection methods, the requirements of the project should be more apparent given our better understanding of how much each protocol is capable of.  We will consider what CubeRover would like for the requirements to be, but ultimately, we will use our knowledge and research to narrow down what the requirements will tentatively be by tomorrow night.

Should we not be able to determine what requirements are reasonable for our prototype, we will attempt to minimize latencies and maximize the amount of packets recoverable as best as we could.  We plan to analyze each portion of our protocols to see which could be better optimized regarding time and space usage.

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

We didn’t make any changes to the existing design, but we did consider other designs that the professor and TA brought up.  While considering other designs, it reaffirmed our beliefs and justifications regarding why we are sticking to the original design.  Additionally, we added more details to the GUI’s functionality; we specified what exactly the GUI will be sending and receiving and what the communication between all components will be.

Why was this change necessary, what costs does the change incur, and how will these costs be mitigated going forward?

The change to the GUI was necessary to detail what we are doing and necessary to determine the best way to implements such ideas.  Moreover, these details have also dictated what other components will be doing, thus affecting other implementation choices in our design as well.

No significant costs have been incurred since we are still in the Design Phase of our project.  However, going back and forth between different system designs did hinder the development of the implementation detail development like which API’s and libraries to use.  These costs will be mitigated by making design choices more quickly to prevent a pushback of tasks and by being able to justify and research into decisions more thoroughly.

Provide an updated schedule if changes have occurred.

No changes have occurred; the original Gantt chart is attached.

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