@T3P3Tony Hi Tony! Thanks for the update. As a reminder for my future self, here is the source code related to the publication you mentioned: https://github.com/zhangty019/S3_DeformFDM
Posts made by DerAndere
-
RE: Robotic kinematics
-
RE: Robotic kinematics
@JoergS5 List of open source CAM software for multi axis FDM (tool path- and G-code generators). I did not test them yet:
- https://github.com/GuoxinFang/ReinforcedFDM (uses Rhino IIRC)
- https://github.com/zhangty019/MultiAxis_3DP_MotionPlanning
- https://github.com/Spiritdude/Slicer4RTN
- https://xyzdims.com/vgcodectl/ : source code release planned
-
RE: Robotic kinematics
@JoergS5 Re: "My main confusion was reading an article about G-Code based on IJK (using tool vectors in G-Code) versus AC. The article wrote, an advantage of IJK is the machine independence. But in my understanding, AC is also machine independent (with the exception of the axis direction of AC versus BC). If someone knows if this is correct, a confirmation would be very kind."
Answer:
AFAIK, there is no international standard beyond 3 axis CNC G-code (ANSI/EIA RS-274D, ISO 6983-1:2009)XYZIJK notation is usually not interpreted by the CNC controller. It is usually used in an intermediate format of the CAM software. A post processor is used to convert it to the correct NC language for the selected machine.
There are two ways how G-code axis codes XYZABC can be interpreted.
a) direct joint control: each G-code axis is directly mapped to one joint/motor and controls only its position.
b) Tool center point control (TCPC): inverse kinematics are applied so that other joints compensate changes in the commanded position of the rotational axes.This way, G-code axes XYZ control the tool center point (TCP) position and axes ABC control the tool angle/orientation.LinuxCNC is based on "NIST RS274NGC interpreter, Version 3". It cannot interpret the XYZIJK notation. LinuxCNC by default uses identity kinematics ("trivkins") which means direct joint control. it can (should) be configured to use kinetics that match the machine geometry, e.g. by adding this section in the config INI file:
[KINS] KINEMATICS = xyzac-trt-kins
Then, at startup, it applies the correct inverse kinematics to allow TCPC. You can change to direct joint control mode at runtime using a combination of M66 and M68 commands.
For added confusion, LinuxCNC can be configured to start in direct joint control mode at startup:
[KINS] KINEMATICS = xyzac-trt-kins sparm=identityfirst
Source: https://linuxcnc.org/docs/devel/html/motion/switchkins.html
Siemens Sinumeric controllers cannot interpret XYZIJK or XYZABC notation, only their own formats: https://www.manualslib.de/manual/134235/Siemens-Sinumerik-840Di.html?page=69#manual
Haas
direct joint control mode: G49 (default)
TCPC mode: G234
XYZIJK notation: noFanuc:
direct joint control mode: G49 (default)
TCPC mode: G43.4
XYZIJK notation: G43.5 (RTCP type II) -
RE: Robot prototypes, robot kinematics
@JoergS5 yes, your DH parameters could be a good starting point. According to https://docs.duet3d.com/User_manual/Machine_configuration/Configuring_RepRapFirmware_for_a_Robot_printer the DH parameters are configured with M669 D, right? I assume your current work in progress will be added to your 3.5-dev branch. If not, let me know where to find the latest and greatest version.
-
RE: Robot prototypes, robot kinematics
Interesting project. Thanks for keeping the community updated. I have added 5 axis kinematics to Marlin firmware and was invited by Tony to join this discussion. I can offer to compare some return values of your kinematics functions with mine which are copied from LinuxCNC (https://github.com/DerAndere1/Marlin/blob/kinem2/Marlin/src/module/penta_axis_trt.cpp). Is there anything else I can do?
Quote:
"Better to remain in the A negative or positive region or remain at A=0 when trying to print at (0,0)."Agreed. According to my knowledge, this is the typical approach.
Best regards
DerAndere