TPARA - 3DOF robot arm IK (#21005)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
This commit is contained in:
		@@ -311,7 +311,13 @@ void GcodeSuite::G28() {
 | 
			
		||||
 | 
			
		||||
    TERN_(IMPROVE_HOMING_RELIABILITY, end_slow_homing(slow_homing));
 | 
			
		||||
 | 
			
		||||
  #else // NOT DELTA
 | 
			
		||||
  #elif ENABLED(AXEL_TPARA)
 | 
			
		||||
 | 
			
		||||
    constexpr bool doZ = true; // for NANODLP_Z_SYNC if your DLP is on a TPARA
 | 
			
		||||
 | 
			
		||||
    home_TPARA();
 | 
			
		||||
 | 
			
		||||
  #else
 | 
			
		||||
 | 
			
		||||
    const bool homeZ = parser.seen('Z'),
 | 
			
		||||
               needX = homeZ && TERN0(Z_SAFE_HOMING, axes_should_home(_BV(X_AXIS))),
 | 
			
		||||
@@ -392,7 +398,7 @@ void GcodeSuite::G28() {
 | 
			
		||||
 | 
			
		||||
    sync_plan_position();
 | 
			
		||||
 | 
			
		||||
  #endif // !DELTA (G28)
 | 
			
		||||
  #endif
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Preserve DXC mode across a G28 for IDEX printers in DXC_DUPLICATION_MODE.
 | 
			
		||||
 
 | 
			
		||||
@@ -40,21 +40,21 @@
 | 
			
		||||
   *    X = Alpha (Tower 1) angle trim
 | 
			
		||||
   *    Y = Beta  (Tower 2) angle trim
 | 
			
		||||
   *    Z = Gamma (Tower 3) angle trim
 | 
			
		||||
   *    A = Alpha (Tower 1) digonal rod trim
 | 
			
		||||
   *    B = Beta  (Tower 2) digonal rod trim
 | 
			
		||||
   *    C = Gamma (Tower 3) digonal rod trim
 | 
			
		||||
   *    A = Alpha (Tower 1) diagonal rod trim
 | 
			
		||||
   *    B = Beta  (Tower 2) diagonal rod trim
 | 
			
		||||
   *    C = Gamma (Tower 3) diagonal rod trim
 | 
			
		||||
   */
 | 
			
		||||
  void GcodeSuite::M665() {
 | 
			
		||||
    if (parser.seen('H')) delta_height              = parser.value_linear_units();
 | 
			
		||||
    if (parser.seen('L')) delta_diagonal_rod        = parser.value_linear_units();
 | 
			
		||||
    if (parser.seen('R')) delta_radius              = parser.value_linear_units();
 | 
			
		||||
    if (parser.seen('S')) delta_segments_per_second = parser.value_float();
 | 
			
		||||
    if (parser.seen('X')) delta_tower_angle_trim.a  = parser.value_float();
 | 
			
		||||
    if (parser.seen('Y')) delta_tower_angle_trim.b  = parser.value_float();
 | 
			
		||||
    if (parser.seen('Z')) delta_tower_angle_trim.c  = parser.value_float();
 | 
			
		||||
    if (parser.seen('A')) delta_diagonal_rod_trim.a = parser.value_float();
 | 
			
		||||
    if (parser.seen('B')) delta_diagonal_rod_trim.b = parser.value_float();
 | 
			
		||||
    if (parser.seen('C')) delta_diagonal_rod_trim.c = parser.value_float();
 | 
			
		||||
    if (parser.seenval('H')) delta_height              = parser.value_linear_units();
 | 
			
		||||
    if (parser.seenval('L')) delta_diagonal_rod        = parser.value_linear_units();
 | 
			
		||||
    if (parser.seenval('R')) delta_radius              = parser.value_linear_units();
 | 
			
		||||
    if (parser.seenval('S')) delta_segments_per_second = parser.value_float();
 | 
			
		||||
    if (parser.seenval('X')) delta_tower_angle_trim.a  = parser.value_float();
 | 
			
		||||
    if (parser.seenval('Y')) delta_tower_angle_trim.b  = parser.value_float();
 | 
			
		||||
    if (parser.seenval('Z')) delta_tower_angle_trim.c  = parser.value_float();
 | 
			
		||||
    if (parser.seenval('A')) delta_diagonal_rod_trim.a = parser.value_float();
 | 
			
		||||
    if (parser.seenval('B')) delta_diagonal_rod_trim.b = parser.value_float();
 | 
			
		||||
    if (parser.seenval('C')) delta_diagonal_rod_trim.c = parser.value_float();
 | 
			
		||||
    recalc_delta_settings();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user