Andrew’s Status Report for 12/6

I  worked on the final presentation slides and reviewed the slides. This week was heavily focused on integration and final optimization of both the hardware and software. We as a group did a lot of testing for the entire project. I spent a a lot of my time improving the gantry system physically. I cut and reattached the belts for both the wheels and the gantry system. This was to make sure they were properly tensions after noticing slipping from the stepper motors. I also contributed to wire organization and stability improvements which included the pen holder movement.

Alongside the hardware work, I helped refine the software pipeline with Ethan, specifically help improve the column-splitting calculations that convert the uploaded PDF into draw-able sections within the gantry’s range. I spent significant time debugging and attempting to optimize the G-code output so the marker wouldn’t unnecessarily lift between small strokes, although Ethan ultimately discovered the final solution.

I am currently working on a progress bar for the website that updates users of the amount of time remaining for the gantry to finish drawing their pdf content. This will improve user transparency and overall experience. Next week I will be responsible for editing our final demo video. I will also be working on the final report and demo preperations.

Team Status Report for 10/6

This week our focus was on completing testing for as well as validating the performance of our fully integrated system. We first tested the user-side workflow of our website. We tested upload behavior, visual feedback, and error handling. We ran thirty full cycles from the Flask interface and achieved over 90% success without getting interrupted. We also evaluated UI clarity by surveying fifteen users, all of whom gave feedback that helped improve the text instructions and responsiveness. Invalid file handling was also tested so every unsupported or corrupted PDF correctly triggered an error message.

The parsing pipeline was tested with a set of PDFs containing diagrams, text, and various line thicknesses. Conversion from PDF to PNG showed more than 80% visual accuracy, which confirmed that rasterization produces reliable and readable shapes. From there, we validated our column-splitting logic using large drawing areas to make sure that aligned with our gantry’s physical drawing width. Now the slices matches the expected boundaries. PNG to SVG conversions achieved our 90% visual match goal. Finally, our SVG to Gcode translation was verified using twenty inputs. We worked on optimizing the Gcode file that was created by minimizing redundant motor movements as well as jumps from where the pen lifts and places.

Motor testing somewhat confirmed that the system operates within required tolerances. Both wheel and gantry movement were evaluated by moving them fixed distances and measuring the real world displacement. We made some adjustments to the belt tension and our gantry movement has errors below 1% which was our goal. We did testing on our wheels and we have not yet achieved the error goal of 1%, and are hoping that maybe a slower movement speed will help us achieve that goal before the demo. We worked on validating the maximum draw speed by gradually increasing the step rate while checking for skipped steps. We are measuring the tradeoff between the speed improvements and the precision.

During full integration, we identified and resolved a significant constraint related to G-code homing requirements. GRBL firmware assumes a fixed 0,0 origin and automatically performs a homing procedure unless limit switches are installed. Since our design intentionally removed limit regulators to reduce cost and complexity, the system initially attempted to home to a position that did not physically exist. This caused the gantry to try and go out of bounds. To address this, we decided to disable soft limits and homing behavior entirely and updated our software to track and make sure Gcode commands do not go out of bounds. In addition, we refined our G-code generation to reduce unnecessary pen lifts between strokes. By optimizing stroke grouping and adjusting marker-lift timing, we increased drawing speed and reduced the risk of jitter during frequent vertical transitions.

Finally, we performed full pipeline system testing, where PDFs were drawn using horizontal and autonomous wheel repositioning. We discovered that we are limited by the cart’s ability to roll smoothly and consistently due to its inexpensive design and wheel construction. This introduces small alignment errors when the system transitions between drawing columns. This ultimately places a constraint on our maximum drawing accuracy and repeatability. Our gantry movement for the individual slices are consistent and accurate. To improve the overall drawing, we will be spending the last bit of our time optimizing the pen holder to ensure smoother drawings.

With full-system testing almost complete, we are  finalizing our project and are moving into final demo preparation. The results from this week show that our gantry is close to meeting our original requirements.

Ethan’s Status Report for 12/6

It is crunch time. This week I spent the most amount of time and accomplished the most on the project. Starting before the break I worked on the final presentation slides and did some small tweaks to the MVP pipeline code which included splitting the PDFs to the gantry size and sending the gcode to the motors. Then after Thanksgiving break, I worked early in the week on some physical optimizations to the physical hardware such as perfecting the lengths of the belts for the wheels and doing some wire management (hopefully more to come). Additionally I made more changes to the software pipeline such as fixing bugs with the splitting calculations, optimizing the gcode pathing algorithm, and cleaning up the website. I also helped with moving the code from our local computer to be hosted on the Raspberry Pi. Now the project is functional. There are still a few changes that can be made before demo day such as some hardware to limit the vibrations of the gantry and some extra UI/UX for the website, but the MVP is finished.

Next week, I will wrap up the project with the video, final website changes, and report.

Alex’s Status Report for 12/6

This week was full on integration. Right after Thanksgiving break, I started writing and debugging our software pipeline. I tested and fixed the Arduino movement code to ensure it moved the right distance every time. I also worked on the PDF to PNG to slices of GCode. I helped our team go from hopes and dreams of a functioning project to a fully operational system. I got the gantry working reliably, able to cover the full area by fixing our code and messing with some of the config. This also involved editing the GRBL firmware so we could enable soft limits without the ability to home with limit switches. I also programmed it to automatically move forward after finishing a section, so it can cover the entire whiteboard autonomously. Yesterday I started trying to optimize our G-code output, but Ethan was the one able to successfully complete that task. Today I moved our entire pipeline over to the Raspberry Pi, so everything can be controlled remotely over the website.

We are currently on schedule, the system integration is essentially complete, with just a few optional avenues for improvement tomorrow before the demo. I also plan on testing the system tomorrow and before the demo Monday to ensure reliability. The rest of the week I will be working on the video submission and final project writeup.

Andrew’s Status Report for 11/22

Early in the week, I helped plan the step by steps for the overall final approach to how we were going to attach the gantry to the cart. We decided to use wood. I helped integrate the motors to drive the wheels. This included measuring and cutting the belts to the specific length and securing them to the motors and the wheel axle. I also worked on mounting the vertical board to the cart, making sure the board was stable and properly aligned to support the gantry. I then worked on securing the gantry to the board using metal zip ties. I also further secured the gantry itself by attaching a new 3D printed piece to replace an older part.

As I worked on this project, I found myself needing to learn both laser cutting and 3D printing which are tools and techniques I had little prior experience with. I would say I became much more comfortable with laser cutting, especially when adjusting the parts that didn’t fit as expected. I learned how to properly tension belts when using stepper motors to drive the belt. On the integration side, I learned a good amount about how PDFs work. I never knew that PDF are essentially a collection of objects which includes text, images, commands, resources, etc. I only discovered this when getting advice for getting more consistent PDF to SVG conversions). Most of this learning came from online resources such as youtube and troubleshooting. I also learned from Ethan who had prior experience with both laser cutting and 3D printing.

 

Team Status Report for 11/22

Currently, we have two main risks to focus on. The first is on the drive, the belt is currently prone to slipping which may introduce inaccurate positioning. We are currently planning on mitigating that risk by either tightening the belt, or using a larger pulley on the axle to reduce the required torque, which should reduce the slippage. The second main risk is in the software pipeline, turning images to svg format is challenging and can come out either overly complicated or inaccurate. If we cannot find a good balance of both with our current pipeline, we plan on adding additional steps to help optimize the pathing, or slightly reducing the scope so we can focus more on certain use cases.

We made one major change to the design this week, and that was adding a step of converting the PDF to a PNG before converting it to an SVG, as it allowed us to support more parts of a PDF. Since PDF’s are collections of objects on the page, turning it into a PNG reduced those vary objects to just one kind, pixels. The team as a whole is currently on schedule, and we remain optimistic that we will remain so.

Alex’s Status Report for 11/22

This week was big for building and pulling everything together. At the beginning of the week we finalized the design plan and started working on bringing the cart and gantry together. I measured and drilled the attachment points, and attached the gantry to the cart. Later in the week, I also added the  drive motors to the cart and hooked them up to the wheels. I then created the Arduino code that would allow us to drive the cart over USB serial communication from the Pi. At the end of the week I worked with Ethan on trying to improve our software pipeline. A lot of the focus was on increasing the accuracy and simplicity of the g-code output.

We are currently on schedule. All of the motor control is complete, and we just finished the structure and are now moving to the final integration. Though next week is short, I plan on fixing any issues in the structure and finalizing the software pipeline.

I had to learn a lot about new software and packages that I hadn’t seen before. For the software, like UGS, I relied mostly on quick-start tutorials and forum posts from people using the same software. Most of the software tasks we needed to complete relied on libraries and packages that I had never seen before, and many were small API ports that had limited use. For these, I had to focus mostly on the provided documentation for the package or the original software.

Ethan’s Status Report for 11/22

This week the pressure was on to make lots of progress on the project. I spent most of the week fabricating the structure for the gantry. On Monday, I planned and cut the parts for the wooden board that will hold the gantry vertically. Then later in the week the entire group built the rest of the structure. This entailed drilling holes and attaching the wheel servo mounts, attaching the wheels via glue and timing belt, and attaching the gantry in place. Then on Saturday I worked on the software pipeline. This is currently our largest bottle neck since a lot of the libraries cannot create optimal svg or gcode. We’ve modified our approach to convert to a .png since it converts using the pixels for better readability, but this means that it will take a lot longer to draw if code is trying to recreate each pixel. I’ve tried multiple approaches including pre-processing using computer vision and post processing using some optimization libraries, none of which I have had much success with. I will look to continue working on this problem as well as make some minor mechanical changes to the system early next week.

After settling on the project idea back in September, I realized that I did not have much experience with any of the technologies that we were going to use for our project. Over the course of the past few months I’ve learned a lot about robotics, machine learning, and mechanics. Specifically, learning more about fabrication (3D printing, laser cutting) and different types of libraries that were relevant to the project. Often this learning was done by talking to people such as the Techspark student workers who were very gracious to give me suggestions on how to turn some of our structural ideas into reality. On the software side, I learned mostly through reading documentation perusing forums and chatrooms to see what approaches others had taken to achieve a similar outcome.

Alex’s Status Report for 11/15

At the start of this week I worked with Andrew to get our gantry fully prepared for the interim demo. I spent time particularly on fine tuning the motors and writing software to convert SVG files to g-code. There’s multiple different packages to do this, and I’m figuring out which one we will do the best job. Later in the week I finalized a list of parts we needed to order and sent in the order requests. Once they arrived, I worked with the team to plan our next steps and the final configuration of the robot. I also continued to work on finding ways to get g-code files and worked a bit on the PDF to SVG software as well.

Next week I hope to help the team finish constructing our system and start testing its operation. I also plan on finishing the manual motor control code for the wheels.