Team Status Report for 10/28/23

There have been no major changes this week. The system and schedule are still the same, however there were a couple problems with the phone application this week. There is a bug creating the pages to display the circuit and was not resolved due to the ethics assignment taking up a lot of time. The frontend components were created, however they are not displaying on the sliding page correctly given coordinates. This is not a significant risk as this bug should be resolved within a day, however if it continues to persist into next week we plan to implement a different way to display the images instead of a sliding page. This would most likely be individual pages rather than just one. Even with this bug no changes are made to the schedule because the phone application should be able to display full circuits by next week given coordinates. Everything else is still on track.

We also got some bugs when trying to port the python code over to C++ this week. Thus far, all of the computer vision algorithms have been written in Python. Since our application is an iOS application, we will need to switch it to C++ code to build for iOS. We also made some progress on the netlist parsing for the circuit simulator. We now have an algorithm to parse through the netlist and are trying to generate the matrices using the Eigen library we installed last week.

Devan Grover’s Status Report for 10/28/23

This week I worked on the netlist parser for the circuit simulator. I setup the Eigen library last week to compile for iOS – this allows me to generate and use matrices and other linear algebra functions. Therefore, I wrote code to parse through the netlist and start creating the required matrices for modified nodal analysis. As I described in the design report, we need to generate two matrices to solve our circuit. The first of these two matrices is composed of four sub-matrices. I am now trying to use the parsed netlist information and generate the sub-matrices for solving. Although I got the Eigen library to compile last week, I ran into some issues when actually using the matrix data structures and doing computations. I was able to solve these errors by fixing the linking settings and import settings in XCode and am now able to actually generate matrices and do computations on them. I also did a lot of work this week on the ethics assignment and completed it for our discussion next week. I am on schedule and hope to have some matrices generated next week to finally get the simulator up and running.

Jaden D’Abreo Status Report 10/28/2023

This week I was attempting to create the page that appears after the user uploads a picture. However, I ran into a lot of bugs when trying to get a page to appear. A lot of the time when a new page was created images that I intended to appear on the page did not and when the new page did not appear the images would appear on the upload page. I was not able to fix this bug before today due to the ethics assignment, but I plan to spend all day tomorrow making progress. I also spent time researching how to create an image in a certain location given coordinates. I spent time testing dummy code to understand how I should try and display the picture when receiving the coordinates from the computer vision algorithm. I was able to create the images of each component we plan to identify, in all orientations. I am behind on work, however I have allocated time in this coming week to make progress and plan to fix this bug I am currently stuck on tomorrow. By next week I plan to display circuits given the images I have stored in the assets folders after the user inputs their picture.

Stephen Dai’s Status Report For 10/28/23

I spent the first half of the week completing the ethics assignment and then the second half of the week on working on our project. I started the conversion from my python proof of concept of the CV portion of the code to C++. Originally my goal was to finish the conversion this week, but unfortunately I only finished converting the subimage generation portion. Unexpectedly I had much trouble properly configuring a development environment so that I could run the C++ code with the openCV library. This is the first time I have ever coded in C++ which is why I ran into this trouble and had to spend a quite a bit of time debugging code, learning syntax, and whatnot. I ended up using an AWS EC2 instance for where I do my development. The one problem with this is that I need an actual GUI if I want to see images and not just std output, but I to solve this I think I will try to use an X11 server. From this experience I have learned I really appreciate python for not needing explicit typing. The good news is that the subimage generation is 2/3 of the code, and now that I have an environment I can develop and test in, the rest of the conversion should be much easier.

My plan for next week is to finish the remaining conversions and begin running tests to benchmark accuracy and make modifications to improve the accuracy. As long as I can do this by the end of next week I should still be on track with my schedule.

Devan Grover’s Status Report for 10/21/23

This week I made progress with the circuit simulator by installing matrix libraries and adding them to our iOS development environment. I am going to be using eigen, which is a C++ library that allows for matrix calculations. I also created a basic wrapper file to call C++ code from Swift, which is what our application uses. I am now able to conduct matrix calculations in C++ code that is called from the frontend of our application.

One tool that I need to learn further is the eigen library. It is an open source C++ library used for linear algebra. It supports matrices and vectors which are heavily used when solving circuits. I will need to use eigen to create the required A and z matrices in the modified nodal analysis equation. I will also need to use it to solve the system of equations and calculate the inverse of various matrices. I think my progress is good, and I hope to parse through the netlist and create the A matrix by next week.

Team Status Report for 10/21/23

One major change that we thought of over fall break is what circuit data structure we send to the frontend of the application from the computer vision output. Previously we have been set on a netlist: the computer vision sends a netlist to the frontend, and the input to the circuit simulator is also a netlist. What we have realized while constructing the netlist from the computer vision algorithm is that there is a discrepancy between the circuit that the user drew and the orientation of the circuit that the netlist represents. A properly constructed netlist (which is easy to do) will guarantee that the right components are connected at the appropriate nodes and that the relative positioning of each component to one another is correct. What a correct netlist does not give us is the same orientation of the circuit as what the user draws. For example, say that a user draws a circuit where the components starting from the left side and going in a clockwise direction are voltage source -> resistor -> wire -> wire (back to voltage source). The generated netlist will guarantee this ordering, but when drawn the circuit could look like (also from the left side, clockwise) wire->wire->voltage source->resistor (back to wire). We may end up accidentally throwing the user off by showing them what is technically the same circuit as the one they drew but oriented differently, which may lead to correct circuit classifications not being deemed correct by the user. Our solution to this also simplifies some work; the computer vision algorithm naturally produces a list of edges where each is denoted by the coordinates of a pair of connecting nodes and the component that is connecting the nodes. By giving the frontend the coordinates of the nodes, they can construct the relative orientation of the circuit that the user expects. We made progress with the circuit simulator by installing the required libraries to the development environment and creating the required matrices. 

There have been no changes in the schedule. We are on track with our work and plan to meet all of our deadlines accordingly. Next steps include testing the iOS application to make sure it will integrate with the computer vision algorithm correctly. This means feeding coordinates into the application and making sure the circuits displayed are correct. 

Jaden D’Abreo Status Report 10/21/2023

I was able to get the upload functionality of the iOS application working. Now the user can upload a picture from their photo library on the app after leaving the home page. The user also has the ability to go back to the home page and leave the image upload page. In addition to this, there have been some frontend changes to the home page as there were previously some bugs when swiping across the pages.The next step would be to get the iOS application to read the coordinates created by the computer vision algorithm and be able to display the circuits appropriately. 

 

As this was during fall break not that much was expected to get down, however since I was behind on the iOS application I wanted to get the upload functionality working before coming back to school. I am on track with my work as this got completed, but now will have to allocate more time to working on the rest of the project as all that is remaining are much more difficult to implement. 

 

A tool that I plan to implement is unit testing. Specifically, unit testing the upload feature of the application and the production of the circuit UI on the phone. This will be the main focus over the coming weeks to help integrate with the computer vision algorithm.

 

Stephen Dai’s Status Report for 10/21/23

Because this week was fall break I did not work on much. What I did do was create the integration of the node detection and the component detection code, as well as making the code more modular for testing purposes. Previously the code that I had written for the node detection created output images (.jpgs) and then I had the component detection read in these .jpgs individually. Now the node detection will just read one image (the user input image) and then the circuit data structure is outputted.

A tool that I have to learn for my next steps is coding in C++. Right now the code that I have written is in Python, because what I have essentially done is just created the proof of concept for the computer vision. I need to convert this into C++ for compatibility with our Swift mobile application. A tool that I have already been learning for the computer vision algorithms is the OpenCV library.

Devan Grover’s Status Report for 10/07/2023

This week, I worked a lot on the design presentation, especially because I was the one presenting. We only finished roughly 30-50 percent of the slides on Saturday, so I spent my whole day on Sunday working on it. After finishing the slides, I drafted a rough script of what I was to say during the presentation and iteratively practiced and got better. At night, I practiced and had to keep cutting parts out of my presentation in order to stay at the proper time. I presented to Stephen over zoom to practice and to my roommates to get a more realistic feel for how I would present in class. This let me practice movement and hand gestures.

I also looked at existing algorithms used to solve circuits – a good way for computers to solve simple DC circuits is by creating a conductance matrix, which is a matrix describing how well current flows through specific parts of the circuit. You then create voltage equations describing the voltage drops across each component and arrange these into a matrix. You can then solve the system of equations to find the current at each node and the voltage drop across each component. I have not been able to figure out how to implement this in practice, so I am still reading more.


I got sick this week so I am a bit behind schedule, but I will definitely make up for this by putting work in every day over fall break. I hope to get a conductance matrix created for a simple circuit by next week.

Jaden Dabreo’s Status Report for 10/07/2023

This week I spent my time working on the phone application. I have made some progress, however not as much as I would have liked, due to Swift development being much different to other forms of app development I have done prior. The early stages of the week I spent researching Swift as I have no iOS app development experience. I spent a lot of time watching videos and looking at StackOverflow to learn the basic functionalities. Prior to working,  I planned to finish the home and upload page of the app by the end of this week and I was able to do the home page, however I did not complete the upload page. I implemented a sliding home page with three pages of images, titles, and labels. The page includes the functionality of the app and some tips in regards to uploading a circuit. In addition, I have implemented a skip button that leads to a new page. The functionality of the page has not been implemented, however it will lead to the upload page, where the user will upload their hand-drawn circuit. I plan to work on the phone application during fall break and make progress to being able to run the simulator after uploading the image. Currently I am a little bit behind on work. As the report is due this week as well as other class commitments, I will not be able to work on the project until after Friday. However, I plan to spend time during the break to catch back up on work and make the phone application more functional as the computer vision portion of the project has made great advancements. This means I must research how to allow the phone application to interact with the circuit simulator and the computer vision model. Thus, my goals before returning back from fall break include finishing the upload page and start implementing the backend functionality of the app.