# CoreXY^2

### Modelling

The idea is to use various two axis plates as builders. The most basic configuration will be to put two corexy's as the walls, allowing for a 4th axis by rotating the bed.

However, what I would really love, is a pseudo 5-axis configuration.

### Aluminum CoreXY

Laser cut components that allows for end effector mounting, x and y gantry movement, and the holding of the aluminum rods. I then waterjet aluminum to create the entire base and the x and y pieces.

The x and y pieces are hot glued to bushings on the aluminum rods. The belts are held onto the gantry by using teeth and using an acrylic square to squish the teeth together. The gantry itself is moved with two stepper motors in an hbot configuration. The plastic pulleys keep the belt in tension and move the gantry accordingly.

### Movement

The corexy uses the following dynamics to determine how much each motor should move to translate rotation of the stepper motors into the x y coordinate system. The image below is from Ilans page (corexy.com).
Therefore, the forward matrix (A,B to X,Y) is [0.5, 0.5 ; 0.5 -0.5].
The reverse matrix (X,Y to A,B) is [1, 1; 1, -1]

Using gestalt, I created a Virtual Machine for CoreXY^2. The code is similar to example virtual machines, except that stepper motors are initiated as pulleys in initKinematics(), and their rotations are translated into x and y coordinates based on the matrix above.

```def initKinematics(self):
# drive components of h-bot. Inputs are A/B stepper motors, outputs are X/Y in machine coordinates.
# elements.elementChain.forward(
# microstep => input microstepcount -> 1/microstepCount -> steps
# stepper =>   input stepAngle (degrees) -> stepAngle/360 -> revolutions
# pulley =>    input pitchDiameter (mm)
# invert =>    if it is inputted backwards. false = its correct connection])
self.xAxis = elements.elementChain.forward([elements.microstep.forward(1), elements.stepper.forward(1.8), elements.pulley.forward(2.03), elements.invert.forward(False)])
self.yAxis = elements.elementChain.forward([elements.microstep.forward(1), elements.stepper.forward(1.8), elements.pulley.forward(2.03), elements.invert.forward(False)])

# define an H-BOT configuration
self.stageKinematics = kinematics.hbot()        # add invertX = True, invertY = True if needed
```

### Some Documentation

The necessary components to build 1 corexy system

The necessary components to run and control 1 corexy system

Modifications made due to scaling issues. Had to laser cut a portion to allow bolt heads to be placed in line with acrylic pieces holding rods in place.

Three systems built and running!

Coupling corexy with more motion. Input is a list of moves as [mm,mm,mm,deg].

### To Do

• Mount stepper motor for fourth axis. Stepper motor decision for base plate angle control was two-fold: servos of this size are expensive! and gestalt does not have full support of servos, yet. The second side will likely be passive for now.
• Integrate base plate with stepper motor. Create coupling? Ones online did not have set screw out far enough for my stepper motor.
• Tap aluminum to assemble corexy^2. Would like thumb screws for easy (dis)assembly.
• Incorporate path planning from an stl. I can currently make it move with coordinates but I want it to be able to do something useful.
• Full BOM
• Actually mill/draw something