I tried to make a just for test funtion of homing. it is not using my direct axis rotation function, just using movetoreal for x, y and moveRelativeDistanceInSteps for z.
the idea is just to test if the X Y motors doesn't move because of my direct axis rotation function or not. And I think it is not the cause.
I order it to move Z, Y, then X.
Z motor is moving, but it doesn't stop if I press Z endstop. it stop if I press X endstop.
I've tried to invert Z, it stop if I press Z endstop. but it also stop if I press X endstop.
if(p->delta[axis]) === if(p->delta[axis] != 0) just a short form of it. Works for all integer values.
p->setMoveOfAxis(axis); sets a flag that we know this motor/axis should move.
You can use one of these
/** Uncomment, to see detailed data for every move. Only for debugging purposes! */
//#define DEBUG_QUEUE_MOVE
/** write infos about path planner changes */
//#define DEBUG_PLANNER
to debug moves. DEBUG_QUEUE_MOVE gives lot of infos if echo is enabled (debug option). So if you see results here you know the move was accepted and what steps in virtual resolution it wanted. If you don't see it the move got prevent from boundary check or some other check. For homing we set homing flag to disable these checks.
On the one-handed SCARA significant vibration, on two hand SCARA vibration is much smaller, but there is. Perhaps you need to adjust the speed and acceleration of the movement to be smoother. You have a very long arm for Z, the vibration can not be avoided. My printer hand movements are the same as you.
Need rigid structure of the printer, and smoothness of arm movement.I have the speed in the slicer 70 mm/s. The author of Pavlog have made several printers SCARA http://roboforum.ru/forum107/topic13406.html
Hi grean, i don't understand the language. But thanks anyway. I will release my version firmware, beside the kinematics, i also modify user interface and semi auto calibration tools. so please be patient. It's not ready now.
#define SHOULDER_MIN_ANGLE 90 // dalam derajat. in degree
#define ELBOW_MIN_ANGLE 5 // dalam derajat. in degree
#define SHOULDER_MAX_ANGLE 270 // dalam derajat. in degree
#define ELBOW_MAX_ANGLE 180 // dalam derajat. in degree
#define SHOULDER_BED_CENTER_ANGLE 135 // Posisi sudut bahu Scara di pusat papan dalam derajat. Position of Scara shoulder angle at bed center in degree
#define ELBOW_BED_CENTER_ANGLE 90 // Posisi sudut siku Scara di pusat papan dalam derajat. Position of Scara elbow angle at bed center in degree
Shoulder is x motor, elbow is y motor Angle counter clockwise Cartesian x positive axis is 0 degree. You define where you want the bed center & where is your endstop. Shoulder min angle is where your endstop from cartesian x positive. It affect your print orientation.
Elbow 0 degree is where your end nozzle make a straight line with elbow and shoulder. Elbow max is where your y endstop.
This is for right hand scara. For left hand just play with min max.
If you use lcd display you can rotate the joint individually. If you use repetier host, use g5 command G5 x for rotate x motor in degree G5 y for rotate y motor in degree
I just found this thread. This explain everythings. This give me clear understanding how repetier works.Create segments for NonLinear move is very smart strategy. It save time because repetier only do some calcuation once in every 22 segment. This what makes repetier can print better in Delta.
I plan to use repetier for robotic Arm. I will start with 3DOF arm. But I am affraid I will have not enough memory and computation power. Robotic arm will have heavier inverse kinematic calculation.
The other problem, robotic_arm can have more than 3 joint (X,Y,Z). Pick and Place need at least 4 DOF + 1 for gripper. It can be U,V,W,X,Y,Z. for 6 DOF arm. Z for pan-base joint, Y for shoulder joint, X for elbow joint, W for elbow rotation, V for wrist joint, and U for wirst rotation + 1 for tools (gripper/laser/suction/extruder). That makes total 7 motor.
Some color printer can have 5 extruder for CMYK and White. I still dont know how to deal with this.
Maybe Endstop can be problem too, because there are 2 move strategy. Base on cartesian system (XYZ) or base on joint/angle position. move base on cartesian system should watch for all endstop, but move base on joint should only deal with moving joint endstop.
Because there are so many drive_system for robotic / 3d printer. Maybe we should make separete file for inverse/forward kinematic and homing axis. This way printer.cpp and motion.cpp can be more readable.
Comments
/** Uncomment, to see detailed data for every move. Only for debugging purposes! */
//#define DEBUG_QUEUE_MOVE
/** write infos about path planner changes */
//#define DEBUG_PLANNER
to debug moves. DEBUG_QUEUE_MOVE gives lot of infos if echo is enabled (debug option). So if you see results here you know the move was accepted and what steps in virtual resolution it wanted. If you don't see it the move got prevent from boundary check or some other check. For homing we set homing flag to disable these checks.
I still don't understand what is the meaning of
P->
D->
Cur->
Can you please explain to me?
I think they are struc???
It's working now but still not prefect
https://www.youtube.com/watch?v=V-ltmE66adw
https://www.youtube.com/watch?v=QEI8J-BrP04
Do you use marlin?
I will release my version firmware, beside the kinematics, i also modify user interface and semi auto calibration tools. so please be patient. It's not ready now.
Angle counter clockwise
Cartesian x positive axis is 0 degree.
You define where you want the bed center & where is your endstop.
Shoulder min angle is where your endstop from cartesian x positive.
It affect your print orientation.
Elbow 0 degree is where your end nozzle make a straight line with elbow and shoulder.
Elbow max is where your y endstop.
This is for right hand scara. For left hand just play with min max.
If you use lcd display you can rotate the joint individually.
If you use repetier host, use g5 command
G5 x for rotate x motor in degree
G5 y for rotate y motor in degree
I just found this thread. This explain everythings. This give me clear understanding how repetier works.Create segments for NonLinear move is very smart strategy. It save time because repetier only do some calcuation once in every 22 segment. This what makes repetier can print better in Delta.
I plan to use repetier for robotic Arm. I will start with 3DOF arm.
But I am affraid I will have not enough memory and computation power.
Robotic arm will have heavier inverse kinematic calculation.
The other problem, robotic_arm can have more than 3 joint (X,Y,Z).
Pick and Place need at least 4 DOF + 1 for gripper. It can be U,V,W,X,Y,Z. for 6 DOF arm.
Z for pan-base joint, Y for shoulder joint, X for elbow joint, W for elbow rotation, V for wrist joint, and U for wirst rotation + 1 for tools (gripper/laser/suction/extruder). That makes total 7 motor.
Some color printer can have 5 extruder for CMYK and White.
I still dont know how to deal with this.
Maybe Endstop can be problem too, because there are 2 move strategy.
Base on cartesian system (XYZ) or base on joint/angle position.
move base on cartesian system should watch for all endstop, but move base on joint should only deal with moving joint endstop.
Because there are so many drive_system for robotic / 3d printer. Maybe we should make separete file for inverse/forward kinematic and homing axis. This way printer.cpp and motion.cpp can be more readable.
Needs guiden from all of you.
Best Regards
Robby.