>12.1.0

INTRODUCTION

I've arrived in Japan and have made the switch from ESAN to Kannai in one piece! After nursing the 13 hour jet lag, I finally was able to meet my classmates, Youssef and Fumiko, as well as my incredibly gracious host and mentor, Yuichi. Thank you for having me in Yokohama! よろしくお願い!

My new Kannai family, finally together! Thank you Fumiko and Yuichi for waiting for Youssef and I! Let's have fun together!
IMAGE CAPTION
My new Kannai family, finally together! Thank you Fumiko and Yuichi for waiting for Youssef and I! Let's have fun together!
IMG_FILE: welcometoyokohama.png
TYPE: PNG
XYZ: 123
This week's goalsWEEK 12
[x] Design a machine that includes mechanism + actuation + automation + application
[x] Build the mechanical parts and operate it manually
[x] Actuate and automate your machine
[x] Document the group project
[x] Document your individual contribution

You can read our full planning and implementation of our week spent building this machine over on our group assignment page. On this personal page, I will be reflecting on my individual contributions to the assignment and what I've learned.

>12.2.0

CoreXYZ

Yuichi's prototype CoreXYZ
IMAGE CAPTION
Yuichi's prototype CoreXYZ
IMG_FILE: gettingtowork.png
TYPE: PNG
XYZ: 123

The CoreXYZ platform builds upon the principles used in the CoreXY platform. It is able to actuate an effector with three degrees of freedom using a series of pulley systems that can slide a series of gantries across linear rails. The implementation looks complex but the physics behind it is actually quite simple! It was very helpful for me to understand the motion by isolating each axis and even looking at how each of the three motors works. I've asked Gemini to create a simulation in the style of my previous works to aid with explaining it. You can control each motor individually or run the kinematics equations below to achieve movement in a single axis.

corexyzmath.png

➔ Demonstration

INTERACTIVE DEMO
COREXYZ
Move Axes
Spin Motors
Z: 0 A B C
AI Prompt Attribution
Prompt: Create a simple simulation using my existing CSS and site aesthetics to demonstrate the kinematics of the CoreXYZ. The simulation includes a birds eye view of the machine's frame, a square, and the pulley and gantry systems used to move the effector in the middle of the frame. The user should be able to control the device in two modes: Moving motors (A, B, C) independently clockwise or counterclockwise, and moving the axes (X,Y,Z) which follows some math included below to allow the motion to happen. 12 buttons in total (A,B,C CW/CCW, and X,Y,Z +/-) delta Motor A = delta X + delta Y + delta Z delta Motor B = delta X - delta Y + delta Z delta motor C = delta Z delta X = (delta Motor A + delta Motor B)/2 - delta Motor C delta Y = (delta Motor A - delta Motor B)/2 delta Z = delta Motor C The frame is a square, with equal sides P,Q,R, and S (starting on the left side and going clockwise), and a bar in the middle running horizontally across sides P and R, parallel to sides Q and S, we will call this bar in the center side T. Along side T there is a rail that is perpendicular to the X/Y plane and allows for movement in the Z axis, we'll call this rail side U. The machine has 5 sets of linear rail gantries that allow movement of the aluminum extrusion. The Y axis travels along the rails placed on sides P and R, the X axis travels along side T, and the Z axis travels along side U. On side Q we have another rail that is used to equalize the motion/kinematics described in the equation above and allow for Z axis movement. There is nothing attached to side S other than the necessary fixtures. #Motor Placement In our birds eye view, Motor A is placed on the bottom left corner of the frame (at the bottom of side P) and spins a capstan connected to nylon thread A. Motor B is placed in the bottom right corner of the frame (at the bottom of side R) and is connected to a capstan with nylon thread B. Motor C is place in the top right corner of the frame (along side Q), and is attached to a long lead screw that runs parallel to the top of the frame, which is connected to a gantry on that rail with two pulleys that connect nylon thread A and nylon thread B. # Nylon thread routing. Both threads begin in the center effector along side T and U, and are attached at distal points. Nylon thread A is attached in the bottom left of the effector and runs to a pulley on side P that routes it down to the capstan at motor A, then back up along side P to the top left corner where another pulley corners its direction to along side Q, where it wraps around the gantry/pulley system on side Q, back again to the top left corner, back again all the way along side Q, to a pulley that routes it down to the middle of side R, and left to the effector's top right corner. The exact same routing is done for nylon thread B, but mirrored: starting in the bottom right corner of the effector, traveling right, then bending along a pulley on side R to the motor B capstan, reversing back up to the top right corner, bending to the same gantry/pulley system along side Q that nylon thread A wraps around, back to the top right corner, back along the full length of side Q, then down along side P and right to the top-left corner of the center effector. I have attached an image to show you these two threads, the red line is nylon thread A and the blue line is nylon thread B. For example: when the user clicks the X+ button, we should see the center effector move right along the X axis, and motors A and B spinning positively (half speed, because they are divided by two) with motor C spinning negatively. Another example: When we spin motor A CW, we should see all three axes increase positively. Another example: When we spin motor C, we should only see the Z axis move because the motion is cancelled out at the center gantry/pulley system where both nylon threads are run through. Of course, this is a birds eye view simulation, so we won't see the Z axis moving, so we'll want to show that movement as the effector going from white (up) to black (down) as a fill. We want this simulation to be very minimalistic, showing basically only the motors (and a way to signify they are spinning), the pulleys, a very simplified X,Y frame, the nylon threads moving, and the effector in the center traveling along the movements the user is providing.

Working with this machine was a great way to dip my toes into learning more about kinematics. I never took a lot of physics in university, and tend to shy away from projects that involve a lot of complex movement, but this platform was simple enough to understand, especially if you start reading about CoreXY first. Because the two nylon threads loop around that top gantry from opposite sides to keep the frame perfectly symmetrical and prevent binding, any movement from Motor C inherently drags the effector along the X-axis by pulling tension on one side while providing slack to the other.

>12.3.0

Planning

Our first day was all about defining the scope of our machine and our action items for the coming days to make sure we could finish by our goal of Friday. Again, you can read about this process on the group assignment page to hear more about what we decided on and what was completed. I took the initiative to start jotting down ideas of what was being said in the room on my iPad, and had it broadcast to the main TV in the lab.

planningipadxyz.png

This helped us formulate a plan of attack for the week and get started with all of our excitement!

>12.4.0

KanjiVG

I contributed my time the first few days writing a python script that converts the vector path data in SVGs into X,Y coordinates for our machine. I stumbled across a really cool open-source project called KanjiVG, which has SVG files for over 10,000 characters.

The best part about KanjiVG is that it doesn't just give you a flat outline of the text. It actually stores the exact stroke paths and traditional stroke order, which is exactly what a CNC brush needs to make the calligraphy look authentic and since SVGs are basically just XML files under the hood, I realized I could open them up and extract the raw geometric data to feed into our machine. You can read about how I did this on the group assignment page.

Before our real hardware was ready, I used turtle to create a GUI preview of the strokes to see if I was coding it correctly!

IMAGE CAPTION

Ultimately it was a great opportunity to strengthen my python skills and incorporate libraries that others have made!

>12.5.0

Assembly

I spent the better half of a day putting the whole thing together with the help of my classmates. I wrote a whole section about what I learned on the group assignment page, including things you should look out for if you're building this with only Quentin Bolsee's documentation (took me a reaaaallly long time to figure out what he meant by "distal").

kanjixyzwithcorexyz.png

Here's our version (wood printed PLA) next to Yuichi's prototype.

>12.6.0

Conclusion

I spent the better chunk of two days navigating the frustrating space trying to get this machine to work, and after a week of tinkering, I'm still not confident I fully understand it's quirks. That's the nature of physical things though. Our machine has a LOT of moving parts, a lot of sub-systems that are meant to mesh together perfectly, and if they don't you get some unintended behaviour in places that are very difficult to pinpoint. This whole assignment was a lot of fun - the highlight for me was getting to finally work with my classmates Fumiko and Youssef! Getting to working with something moving certainly pushed me out of my fabrication comfort zone, but I can confidently say after this that I'm not really into motors, haha. I think I prefer the kind of fabrication that doesn't move on it's own. Sorry to my robotics team if you're reading this. I'll be sticking to my little gameboy projects personally.