Harsh Status Report – 4/20

This week, I was able to test and update some of the color functionality. One of the band-aid solutions I had used for the stroke creation algorithm was to not draw any strokes longer than length 30. The contour finding function of the CV library in python was returning a list with the parts of the contour in different orders. So it would draw part of the outline of an object, and then jump to another location on the edge of object to draw another part of the outline. This would cause the entire object to have extraneous lines drawn in the middle. I fixed the code so that it would treat each part of the outline as a different stroke. This means that it no longer draws the connecting lines between the outline. I also fixed some color issues and made slight improvements to the weight of the color picking algorithm. Furthermore, I worked with Chris and Eric to come up with solutions to making the gantry work more smoothly.

This week, I was on schedule. I have made the software algorithm robust to extraneous lines, and the color picking much better, which were the optimizations that I had planned to do.

For the in-lab demo day on Wednesday, our goal is to get the robot to a near-final state, which means that I will be working on making sure that the physical system is doing what the software actually tells it to do. If there are any changes that need to be made to the software to make the drawing more accurate and fast (such as skipping a few points on the contour when making the outline, to make it faster), I will be in charge of that.

Chris Status Report – 4/20

Beginning early this week my main goal was to be able to complete attachment of the motors to the gantry to allow us to devote most of the week towards making progress on our routines and algorithm. I was able to complete this early on which enabled to test more parts of our code. We were able to verify this week that our diagonal control of the steppers is functional, as well as our ability to move to set coordinates on the gantry efficiently. We were able to program in the locations of the colors in the palette and are able to go to a designated color and swab for paint.

However, as the completion of the gantry allowed us to test it further we discovered that the design was inconsistent in one of the directions. Occasionally the motor would sputter and be unable to move in that direction, although there were no obvious causes. One possible ailment was that the belts on the bottom half of the gantry were looser, and additionally the support rod from the head would sometimes fall out of the bottom carriage. In order to fix both of these issues, the bottom carriages were redesigned to be stronger, easier to detach from the gantry for adjustments, and to hold the support rod completely.

This modification to the design set back some of the scheduled progress for this week, but overall we were still able to test and improve our gantry control routines. Currently the carriage has been redesigned and has been printed, but extensive testing on the new design has not been completed. In the coming week this design will be tested and iterated on if necessary, with the goal of completing this early in the week so that we may get a demo ready by Wednesday. For the rest of the week my goal is to test the gantry system more , and improve its overall consistency in operation. Additionally, I will be working closely with Eric to write and modify the current control routines. My progress for this week was setback, but this is why our schedule had slack time built in for unseen problems and overall the gantry design and implementation has made good progress towards its completed design.

Eric Status Report – 4/20

This week, I continued testing the gantry control system of our robot, specifically the diagonal code that was written last week. During testing, several small setbacks and issues were discovered, which were related to both the software code and the setup of the physical system. I primarily worked with Chris to mitigate and solve these issues. During this week, I also wrote a second batch of code for diagonal motor control using a different method, in the case that the first diagonal motor control code did not work as we intended. This second implementation used sleep timers that fired at carefully calculated intervals to control both motors at once, while the first implementation used a Python library to allow the two motors to be run in parallel. During testing, we determined that the first implementation was not the cause of any issues, but the second implementation is ready in case it is needed. In addition, I helped Chris with testing the physical system.

My progress this week is on schedule. I am continuing to refine, test, and modify the gantry control system as well as the project as a whole. In the next week, I hope to, along with the rest of my team, bring the robot to a near finalized state with little to no issues, which we plan to have ready by Wednesday.

Team Status Report – 4/20

This week, our team has continued making refinements and improvements to the project by adding new functionalities, modifying our system, and fixing bugs. At this point in our schedule, every individual component and subsystem of our project is complete and functional, and our current focus is on refining various aspects of the robot in order to finalize the robot and make the project come together.

The most significant risks to our project right now are various small issues that could result in the failure of one of the components of our project. For example, the way we zero out our gantry system involves moving the painting head into the corner as much as possible. However, this action presents a certain amount of strain and force on the corner of the gantry, which sometimes causes gantry components such as the belts to shift slightly out of position. To mitigate this, we are looking into either alternative ways to zero out the system or, more simply, finding a way to soften the impact between the painting head and the corner of the gantry. Another risk is the stability and strength of our 3D printed parts. We are solving this by printing backups as well as experimenting with slight modifications to our 3D printed parts which should result in a more stable and structurally sound gantry.

No significant changes have been made to our design outside of small modifications made in order to solve various small issues we encounter, such as slightly modifying the size of a 3D printed part or slightly shifting a component in our gantry system. The carriages were redesigned to hold the rods better and not have them pop out all the time. There are no major changes to our schedule, as our progress this week as a team is mostly on track. The testing and refinement of our project is going smoothly and as planned, and we are also spending time preparing for the demo on Wednesday.

Harsh Status Report – 4/13

I spent this week working on calibrating the colors even more. Instead of just calibrating with the palette, I used the paintbrush to draw strokes of each color onto a piece of paper. Then, I used an online color picker to get the HSV value of each stroke manually by trial and error. I did this instead of using a phone camera because taking a picture introduces differences in color such as light reflections, shadows, camera software, etc. After testing these colors using the simulation function that we had used for the mid-project demo day, I was able to see a significant improvement in the colors chosen and drawn after segmentation.

My progress this week was mostly on schedule, since I finished the software portion of the project. However, I haven’t been able to test the software on the physical system yet as the parts to hold the motors in place arrived during Carnival. This coming week, I will help my team finish the physical system and make sure that we can start testing our software. To make good progress on my part of the schedule, the physical system should be finished soon, so I will make sure that this happens this week.

Eric Status Report – 4/13

This week, I completed and tested the parallel code that allowed diagonal movement of the painting head which I began working on last week. This code allowed both of our stepper motors to be controlled at once, which was not a default functionality of the motor library that we are using. The code was completed and tested on our system with the motors attached to the gantry, but with the motors being manually held instead of fixed in place. The diagonal movement of the painting head is working fine and as expected. In addition, I also made a few modifications and bug fixes in other areas of our software.

My progress this week is on schedule. With the diagonal painting head movement code complete, the gantry control system is finished. It will continue to be refined in the future as we begin testing the code on the entire robot system, which will happen once we fix our motors in place. In the next week, I will make any refinements, modifications, or bug fixes in the code as necessary as they come up when testing our subsystems and entire project. Besides that, I will help Chris and Harsh with any help they might have in their areas of the project.

Chris Status Report – 4/13

This week I continued working on the construction of the base board. Due to carnival and our parts for attaching the motors to the board not arriving, I was not able to entirely finish construction but was able to complete the areas for the palette and the attachment mechanism for the paper for painting on. This involved making some slight modifications to our design, as we originally planned on having a small cut-out for the paper to be placed in, but after some work on the board we realized that this would be more difficult to implement. Our design now uses screws with nuts and washers to tighten the paper to the page. This design has been completed and we were able to test operation of the full gantry with this design and the palette and the paper are positioned well and solid enough that contact with the brush will not disrupt the system.

Overall this week I remained mostly on schedule, although early next week I should finish construction of the base board entirely so that we may begin the more extensive tests of our gantry system. With what we have now, we were able to test and get diagonal movement of the head working. My goals for next week are to complete the base board entirely early on, and work with Eric to test the gantry control layer on the completed gantry system. I foresee there being some issues in this area, so we can begin working to resolve this and modify how our motors are attached as necessary to allow for consistent control of the paint head. Additionally, now that the positioning of the palette and the paper has been set in the board we can take measurements of these locations to begin programming these fixed locations into our system.

Team Status Report – 4/13

The second half of this week was Spring Carnival, so our team did not work as much this week compared to other weeks. However, we still were able to make good progress and accomplish this week’s goals in the first half of the week. Our team has continued making refinements and improvements to the project by adding new functionalities, modifying our system, and fixing bugs.

There are no new significant risks for our project that we foresee occurring in the future. We discovered this week that someone outside our team seems to have been touching our robot and seemed to chip off part of one of our 3D printed parts as well as shifted around some of our parts on our robot. However, the damage seems to be minimal, and if this presents a problem in the future we can 3D print replacement parts.

No significant changes have been made to our design, and the realization of our robot is going smoothly and as planned. There are no major changes to our schedule, as our progress this week as a team is mostly on track. Once we attach the motors to a fixed position, our system will be complete, and we can begin testing the entire system as a whole.

Eric Status Report – 4/7

In the beginning of the week, I spent a significant amount of time preparing the gantry control system and motor setup for the team’s demo on Monday. Chris and I worked together on writing a demo file that would make our gantry system go through the motions of drawing a square or a line. We spent a lot of time on Sunday making sure our system was working smoothly. This included slightly modifying parts of our gantry and motor system as well as the software controlling it, such as adjusting the motor speeds and sanding down certain parts. Following our demo, I worked on implementing a capability for our gantry system to draw diagonal lines, as the default library we are using only has the ability to control one of the stepper motors at a time. I wrote code that will be able to control the two motors in parallel.

My progress this week is on schedule. The bulk of the gantry control system and motor setup is completed, and the remaining work is on optimizing our project and testing the robot’s functionality. In the next week, I will continue optimizing and modifying the gantry control system and gantry to finalize our project, as well as work with Chris and Harsh in putting our different subsystems together and testing our project as a whole. In particular, towards the beginning of the week, I will test the parallel motor code on our robot, especially once our gantry more finalized and our motors are locked in place.

Harsh Status Report – 4/7

This week, we had the mid-project demo. The previous week, I had created the outline-strokes and the fill-in strokes, as well as come up with an initial color choosing algorithm. Chris decided to make the fill-in strokes faster, so I was left with making sure that the color-matching algorithm was robust. Initially, the algorithm was picking colors such as yellow and orange for the green. The same inaccuracy was true for other colors. After changing the weight values of the 3 HSV channels, I was able to make the algorithm quite accurate. This is what we demonstrated on the mid-project demo day. However, there were still a few inaccuracies, especially with the greens. We then decided to both improve the weight values through experimentation and also make sure that the stored palette color values were accurate. After making sure that the HSV values were perfect and improving the weights further, I ended up with a nearly perfect color choosing algorithm.

My progress is mostly on schedule this week. I’ve finished perfecting the color choosing algorithm. Since there were lots of software tasks left, most of the physical system had been built, and the remaining tasks required parts which had yet to arrive, Chris helped by making the fill-in algorithm faster (using matrix operations in python), and creating a faster plotting function. The other task I’m supposed to be finishing up soon is testing the painting algorithm on the gantry system. However, we were slightly delayed on that part, so I haven’t started testing yet. To make sure I catch up, I will spend extra time during Carnival to finish testing.

For the next week, I’m scheduled to work on testing the painting algorithm, and helping Chris and Eric with their tasks, since the software algorithm is more or less complete. This includes tasks such as calibration and optimizing the painting routines.