I’m new to the Maslow project, and just beginning to get my feet wet. I have been on the waitlist for a while and ordered a unit right when the project opened up a week ago, so while the next round of kits are being assembled I figured I would get familiar with the current state of the project.
As a caveat, I am completely new to this project, so am trying to provide a fresh perspective. If I’m completely off-base please let me know!
I have been reviewing the assembly instructions, looking through the software, reviewing open and closed issues, just trying to become familiar with what the focus has been in the past and where it seems to be going. One thing caught my attention during this, regarding the calculations of the chain lengths.
For the sake of simplicity I’m going to discuss the triangular kinematics here, but the same theory applies to the quadrilateral kinematics as well.
The software, specifically looking at the Kinematics.cpp, seems to be designed around the idea that the chain length is equivalent to the distance from the motor axis to the sled centerpoint. However, there are two aspects which can introduce errors into this formula.
First, the chain can wrap around the sprocket, causing the effective length of the chain to change. Take as an example the desire to cut an arc with the left motor axis as the radius of the arc. In the current code the left motor would remain stationary while the right motor extends or retracts the right chain. But as the sled moves over this trajectory, the chain would wrap around the sprocket up to approximately 45 degrees, given a long arc or close proximity to the left motor. With the sprocket in use, I estimate this could shorten the distance from the sled to the left motor by over 1/4", causing the desired profile to be distorted. Granted, 1/4" isn’t much, but considering the goal is to be much more accurate as well as the fact that it could be corrected in software, it seems like it would be good to examine.
The second aspect I believe has less of an impact, but similarly can be corrected for in software so I figured I would mention it as well. That is that the “origin” point of the chain is not the motor axis, but instead a point on the sprocket where the chain follows a path normal to the sprocket to the sled. As the sled moves throughout the work area and the chain angle changes this point changes, adding additional error to the sled position.
I’ve been brainstorming on this topic, and feel both issues can be corrected in software without too much additional headache. Again, focusing for now on the triangular kinematics for simplicity.
Rather than calculating the chain length from the motor axis to the sled, what if we measured the chain length beginning at the centerpoint of the chain at the 12 o’clock position on the motor sprocket. With this measurement style, the chain length would be comprised of two components, assuming the sled remains in the work area:
- The length of the chain along the arc of the sprocket from the 12 o’clock position until where it becomes normal to the sprocket.
- The length of the chain along the line normal to the sprocket, beginning at the sprocket and ending at the sled centerpoint.
Value 2 is easy to calculate, as it is sqrt((length of motor axis to sled centerpoint)^2 - (effective radius of the chain centerline when wrapped around the sprocket)^2). The length of the motor axis to the sled centerpoint is the current value calculated in the kinematics formulas I believe, so the only additional information needed is the effective radius of the sprocket.
Value 1 takes a little more work. I calculated it as: (180 degrees) - (arccos((yTarget - yCordOfMotor) / (length of motor axis to sled centerpoint))) - (arccos((sprocket radius) / (length of motor axis to sled centerpoint))). This starts at the top of the sprocket, and then subtracts the angle from a vertical line to the line between the motor axis and the sled, and then subtracts the angle from the line between the motor axis and the sled and the point on the sprocket where the chain follows the normal line to the sled. This calculated arc length of the chain on the sprocket from the 12 o’clock position would then allow the value 1 calculation: 2 * 3.14159 * (radius of sprocket) * (chain arc length / 360 degrees).
These two values added together would become the calculated chain length, as it applies in the Kinematics.cpp file. However, I would anticipate calibration would still be performed to the motor axis itself.
Given this setup, I feel accuracy would be improved, particular at the corners or over large pieces. Examining the previous example again of cutting an arc with radius equal to the left motor axis, this formula would recognize the effective shortening of the left chain as the right motor extends the right chain, and would extend the left chain to compensate and maintain the desired profile more accurately.
In the triangular kinematics these calculations are easy as the sled point you are calculating against is the centerpoint of the sled. The quadrilateral would calculate to the chain mounting points on the sled instead.
I’ve been drawing it up and believe I have it all accounted for, but without having actually ever even seen a Maslow in person as well as being brand new I recognize I could be missing something substantial.