Eric Status Report – 5/4

This week, I worked closely with the rest of my team in order to optimize various aspects of the robot. Primarily working with Chris this week, I optimized the color picking algorithm of the robot even more, tested and redefined constants related to the locations of the paints and other items on the board, and helped expand zeroing capabilities in the other corners. In addition, I tested various parameters to use in our system and helped determine which to use, including the speed of the motors, the gap between fill-in strokes, and the brush width. I also edited the painting routine to add more instances where the robot zeros itself in order to account for drift. In addition to this, I helped fix various bugs and generally helped my teammates with whatever tasks they were working on. In the beginning of the week, I also spent time creating most of the final presentation powerpoint and preparing for my presentation of it. I oversaw many of the painting attempts of the robot, and recorded each painting instance to determine the time it took for each image. I also worked on putting the final demo poster together and wrote much of the content for it.

My progress is on schedule this week, as I and the rest of my team are in the final week of the project and are nearing completion of the entire project. As exhibited in the team status report, our robot has made significant improvements in painting, and we are happy with the state it is in currently. In the next few days, we will continue wrapping up several aspects of the project such as the UI and other small adjustments in order to finalize the for the public demo on Monday.

Harsh Status Report – 5/4

The first part of the week was spent on finishing the final presentation. After that, I started working on the GUI that we would present on public demo day. Initially, we manually put in a file path to an image and then it would pop up some windows to show what was being rendered. Since we wanted a more robust UI, I used Tkinter on Python to create a better interface. It now allows the user to navigate to a file of their choice, and it shows the original image, the segmented image, and the rendered image (image as it should look on the canvas) in a cleaner interface. After this, we were facing two main problems. The first one was that the pulleys weren’t aligned well, and it was causing our gantry to have variable resistance. This was causing our gantry to jam once in a while. We decided to print new pulleys with more screw holes to be able to center the shaft in the pulleys. The second problem we were facing was that the motors weren’t able to draw enough current through our motor board, since it’s only rated for 1A. We tried to overpower the board, but it wasn’t enough, so we’re exploring ways to solve this problem. I helped Chris with both these tasks. I did other small tasks such as creating a new metal water cup and spray painting it, as well as applying lubricant to the gantry.

I was on task this week. I was able to complete a basic UI that we can use to demo our project. I was also able to help Chris with other tasks involving optimization of the gantry. Before our demo, I will work with the team to center the pulleys correctly and fix the power problem to eliminate jamming.

Chris Status Report – 5/4

This week all of our efforts have been put into making the system more stable and consistent. This involved much trial and error and tampering with our system. I improved our color picking algorithm to also consider the color of neighbors when selecting a color to use. This prevents the output image from becoming too simple and uninteresting, allowing for a less perfect color to be used for the purpose of more contrast in the output image. Additionally, I changed our method for performing fill in strokes to perform large zig-zag strokes rather than individual lines, which allows for smoother operation and more continuous motion. The most important work done this week was related to power supply optimizations. We found that the issue of our motors jamming was due to insufficient power. After using a power supply with more current we found that the system was able to perform with almost no jams, and allowed us to produce a much clearer image. However, the higher power usage seemed to damage our stepper motor board and we were forced to use our backup. We are now very hesitant to use the higher power supply as it may destroy our last board. We are continuing to try to find other methods of powering the motors to circumvent our jamming issue, which is largely the only issue remaining that is preventing us from getting clean looking results.

Overall this week we have remained on schedule. We were able to produce a much higher quality image and have found ways  to address almost all of our issues. We are continuing to work on the power supply issues to hopefully eliminate the jamming problem and if we are successful in this our project will be in a much more complete state. Before our demo on Monday we hope to be able to produce a painted image for more complex image inputs and display a video of this during our demo.

Harsh Status Report – 4/27

The beginning of this week was spent getting ready for the demo on Wednesday. I measured the dimensions and cut the hole in the base-board for the water cup. I also drew out dimensions for a second hole in case we needed a clean water cup and a dirty one. I had to learn to use the mechanical tools since Chris had been doing the work on the physical system before. One of the problems we were facing was that the motors would sometimes get stuck and not complete the entire motion of the stroke. This was a major problem, so I tried to see if using lubricant would help reduce friction and make the gantry operate more smoothly. I found several different types of lubricants in the Makerspace, including grease, WD-40, and another aerosol based lubricant. The first aerosol based lubricant didn’t do much. However, WD-40 worked much better and noticeably reduced the jerkiness of the robot. The second part of the week was spent on creating the presentation slides for this week.

This week, we all worked together to reduce errors in our system, as well as start creating the slides. Our project is now something we can demo. I was on schedule for this week. The next week will be spent trying to make our gantry system more robust. Most of our limitations are now in the physical system, and we will work on adding the torsioner, reducing friction, and making any other optimizations we can think of.

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.