Yon’s Status Report for 2/22/2025

This week I worked on parametrizing the normal map computation, and 3D printed components for the manipulator. I made progress on the normal map math, but still need some more work to fully parametrize it. That puts me a little behind schedule, but I gave myself some buffer time in implementing the math in code, which should be very quick as its computed naively per pixel. I had to reprint the manipulator parts a few times due to printer issues, but we now have that component made and handed off to Theo for assembly.

Next week I will finally finish the math, and begin testing the manipulator. I can help characterize rotation accuracy and scan quality with/without a cover. I also already have some code written for the normal map computation with n=4 rotations so we could run a full system test if manipulator testing goes well.

Team Status Report for 2/22/2025

This week has been one of preparation and prototyping. Our Adafruit and first Amazon orders arrived, and we were able to run a test circuit where we checked that both the stepper motor and air pump could be powered and controlled. Electronics-wise, everything is fine; we’ll be waiting for the rest of our orders to come in before we can build our complete prototype. The 3D printed electronics mount had too little clearance in all of its holes, so we’ll be re-printing it with an extra 0.25mm of radius this week.

Software-wise, NAPS2 is proving to be the correct library choice. Sophia was able to implement OS-specific functionality, and the preliminary work can run on Windows and Linux. There is also a consistent file system for saving completed scans. The next steps will be testing computer-printer interactions.

On the signals end, Yon has continued to make progress on the scan/object mapping and has found new research that we may be able to draw inspiration from.

As of right now, we’re currently all on schedule. The only foreseeable issue in the project right now is the possibility of an object with an abrasive surface scratching the bed of the scanner while rotating. We’ll tackle this during the characterization of our prototype, and the most likely solution will be motorizing the vertical movement of the electronics mount so that we pick up the object before rotating it and let it down before we scan it.

Theo’s Status Report for 2/22/2025

This week, I practiced more for my presentation before presenting on Wednesday and spent time figuring out the suction cup’s connection to the stepper motor. I found a shaft coupler that doubles as a mounting platform, to which I’ll attach a 3D printed mount for the suction cup that allows it to be rotated by the stepper motor while connected to the air pump. I ordered this, along with some more air tubing connectors and 3mm mounting screws (our stepper motor didn’t come with any), in our second amazon order. Our first amazon order and our adafruit order came in later this week, and I picked them up along with the 3D printed circuits mount (see electronics in github). The holes on the mount needed the slightest bit more clearance, so I added 0.25mm to the radius of each hole. We’ll 3D print it this weekend or next week.

On Saturday, I started prototyping with the electronics that had come in from Adafruit and was able to control the stepper motor and air pump over serial. I’ve attached a picture of the setup below. Now I’ll wait for our new 3D printed mount, the suction cup, and the rest of the structure/hardware to come in before building a complete prototype.

Sophia’s Status Report for 02/22/2025

This week, I added in a check for different OS to the scanner controller program. So far, it correctly recognizes and adjusts the scanning context based on the OS, since NAPS2 uses a different scanning context object for each OS. I also added a “scans” folder to save each scanned .png file to. Each scan process/cycle will create a new scan folder (in the format of scan0, scan1, scan2, etc.) in the scans directory in order to keep scan cycles cleanly separated. Each scan .png file will be saved in its respective scan cycle folder (in the format of scanPage0.png, scanPage1.png, etc.). So, for example if we take 3 scans of an object, then you could find scanner-controller/scans/scan0/scanPage0.png, scanner-controller/scans/scan0/scanPage1.png, and scanner-controller/scans/scan0/scanPage2.png to send to the image processing component. I would just need to make sure the program knows what scan number it is on, essentially passing a scan ID between functions.

Additionally, I  implemented an exception for if there are no scanners detected. I also did more research into the NAPS2 documentation and how to properly connect the scanner. I usually use WSL to run code that’s stored on my Windows OS filesystem and I can run the code fine through Windows, but I think I’ve found a way to get the scanner recognized in WSL too. So, I believe I would be able to test both the Windows OS and Linux OS environments from my laptop alone. Yon would just have to test the Mac OS version.

The scanner I ordered arrive. Next week will begin testing communication integration with it. I am currently on schedule.

Team Status Report for 02/15/2025

Started working on our individual components, specifically creating the device model in CAD, setting up the software project, and looking into more research for the signals processing. We decided to use a suction cup as our friction tip and set up the hardware and electronics necessary to use it in our first prototype. Instead of testing two different prototypes with different manipulators, we can simply test with the suction on and off.

We have ordered all parts that we believe will be necessary at the moment. We should get all of them by next week and be able to start prototyping and testing with them. The 3D printed part we’ll need is also designed and can be printed anytime.

Our next steps are to progress on our individual tasks to keep on track before attempting and testing integration of the components.

Theo’s Status Report for 2/15/25

This past week I prioritized finishing the manipulator design and ordering the parts. I also finished the CAD mockup, including the first prototype of a 3D printed mount for the electronics. It will freely move vertically on top of the manipulator to account for objects of different heights/thicknesses. I’ll 3D print this mount and test it once the ordered parts have arrived and the rest of the manipulator is put together.

Though I’m still behind on my tasks from the roadmap, a lot of future time was allocated to debugging the hardware, characterizing the working prototype, and designing a new version with a suction cup manipulator (instead of just a friction tip); this time may as well be slack time that’s instead used for this prototype. We’ve gone ahead and ordered the air pump, tubing, and suction cup with the rest of our parts. The suction cup is the same material and size (silicone for high coeff. of friction, 13mm diameter to fit behind a dime or similar coin) as we would’ve made the friction tip, so we will simply test the prototype with and without activating suction instead of needing to build an entirely new prototype/add-on. I believe this will be a massive time save, and don’t foresee any issues with the current design. I’ve uploaded the solidworks assembly+relevant files to github.

Besides working on the design and prototype, I’ve worked with my team on the design review presentation slides. I’ll be presenting on either Monday or Wednesday, and the tentative plan is to finish a draft early enough tonight or tomorrow so that our TA can look it over and give advice.

Sophia’s Status Report for 02/15/2025

I created a branch in GitHub for the scanner controller software. I also created the dotnet project and added the universal scanner NAPS2 library which took a lot longer than you’d think, the dependencies felt never-ending. I never worked with dotnet either that I remember, so figuring out projects and solutions was a difficult time. Additionally, I added simple scan sample code to ensure all needed libraries of NAPS2 were correctly identified.

I also worked on design presentation. I edited and added in most of the slides needed for this sprint and filled out my own relevant software sections, ensuring that the needed topics were covered in the presentation slides.

My next steps are to create mock data and unit tests for the scanner controller code to ensure the simple single scans are working before moving on to scanning multiple times with a delay between.

Yon’s Status Report for 2/15

My main focus this week has been finding additional literature on photometric stereo, and and beginning to parametrize the work’s findings for our use case (orthographic, fixed reflection angle with a variable number of rotations). I also supported my teammates with purchasing components, reviewing mechanical design, and performing cost-benefit analysis on certain design choices (especially to do with modularity).

Next week I’ll have to finish up parametrize the math and translate that into code. I’ll also help test the manipulator subsystem by analyzing the alignment of the output images.

Theo’s Status Report for 2/08/2025

My work this past week consisted of helping with the proposal presentation and drafting a prototype + its CAD model. I was responsible for the hardware requirements, specifications, and solutions in the proposal, and helped with edits to the entire presentation in the time leading up to presentation day.

The CAD model is a few days behind schedule according to the roadmap. This is mainly due to me wanting to render the functioning linear actuator/lead screw, rotation motor, and microcontroller. I am still working on this model and have additional free time this week to catch up. The current prototype will be built out of 1-inch T-slot aluminum extrusions (CADing done with parts from 80/20), using an ESP32 dev board capable of operating a motor driver and at least one stepper or servo motor. I am still weighing the pros and cons of a linear actuator vs a manual lead screw, as well as a stepper motor vs a servo motor. The circuit will likely need an external power supply to power any of these motors, since the traces on an ESP32 won’t handle the power necessary to keep the motor powered over an extended period. This should all be resolved and the parts can be ordered by the end of next week. Though this places the hardware behind schedule, I am not worried. Assembly will be simple and can be done the day the parts arrive, and all should be back on track after that; the characterization task that comes after assembly should really only take a day or two, and the programming itself will be simple motor control. There is plenty of slack time in these first few hardware tasks that allow for this setback.

I’ve started on a basic arduino program for controlling the ESP32 and testing the stepper motor system’s accuracy. One of the first things we’ll be testing once we have the ESP32 is our ability to send it commands from our project’s software. If the arduino IDE/language doesn’t work, MicroPython is the next most likely route of hardware programming.

Team Status Report for 02/08/2025

Our team created our proposal slide deck and presented it. This helped us flesh out more details of our project and how all of our parts will interact as a system. We considered how user-friendly we wanted the process to be, the maximum amount of time it should take to scan and generate a 3D model, and the scope of what objects would be scannable. We realized some limitations that real world conditions would present to us. We will have to test how much noise will occur from outside lighting and other real conditions with the flatbed. We will also consider different options for our mechanical arm based on how either rotating with a felt tip on a glass surface or electro-adhesion would work with different materials and geometries. Additionally, we need to see if it’d be necessary to place anything under the scanned object, such as film, to prevent scratching or if it would help/hinder rotation of the object.

Next week we plan on looking through the inventory list for components of our manipulator, and placing orders for a flatbed scanner and potentially any manipulator parts that we can’t find in the inventory.