Per-Axis acceleration April 10, 2011 11:32PM |
Registered: 16 years ago Posts: 1,094 |
Re: Per-Axis acceleration April 11, 2011 04:13AM |
Registered: 13 years ago Posts: 7,616 |
Generation 7 Electronics | Teacup Firmware | RepRap DIY |
Re: Per-Axis acceleration April 11, 2011 04:41AM |
Registered: 16 years ago Posts: 1,094 |
Success! Re: Per-Axis acceleration April 11, 2011 11:00AM |
Registered: 16 years ago Posts: 1,094 |
perl alg.pl 2>alg.data && gnuplot alg.plot && display alg.png
Re: Per-Axis acceleration April 12, 2011 05:34AM |
Registered: 13 years ago Posts: 7,616 |
Generation 7 Electronics | Teacup Firmware | RepRap DIY |
Re: Per-Axis acceleration April 12, 2011 06:21AM |
Registered: 16 years ago Posts: 1,094 |
Re: Per-Axis acceleration April 12, 2011 09:17AM |
Registered: 13 years ago Posts: 7,616 |
Quote
I vote for dropping /all/ acceleration algorithms and having just this when we've worked out the kinks.
Quote
Maybe bresenham isn't so bad at the usual precision of reprap machines?
Quote
We could use all this math to work out the proper acceleration for the leading axis given limits of other moving axes then just bresenham the actual stepping.
Generation 7 Electronics | Teacup Firmware | RepRap DIY |
Re: Per-Axis acceleration April 12, 2011 08:05PM |
Registered: 16 years ago Posts: 1,094 |
Re: Per-Axis acceleration April 13, 2011 02:29PM |
Registered: 13 years ago Posts: 83 |
Re: Per-Axis acceleration April 15, 2011 02:39AM |
Registered: 13 years ago Posts: 7,616 |
inline double junction_jerk(block_t *before, block_t *after) { return(sqrt( pow(before->speed_x-after->speed_x, 2)+ pow(before->speed_y-after->speed_y, 2)+ pow(before->speed_z-after->speed_z, 2)) ); }
double jerk = junction_jerk(previous, current); if (jerk > settings.max_jerk) { entry_factor = (settings.max_jerk/jerk); }
Generation 7 Electronics | Teacup Firmware | RepRap DIY |
Re: Per-Axis acceleration April 15, 2011 04:34AM |
Admin Registered: 17 years ago Posts: 7,879 |
Re: Per-Axis acceleration April 15, 2011 08:29AM |
Registered: 13 years ago Posts: 83 |
Re: Per-Axis acceleration April 15, 2011 09:45AM |
Registered: 13 years ago Posts: 7,616 |
Generation 7 Electronics | Teacup Firmware | RepRap DIY |
Re: Per-Axis acceleration April 16, 2011 11:42AM |
Registered: 16 years ago Posts: 438 |
Re: Per-Axis acceleration April 18, 2011 12:03PM |
Registered: 13 years ago Posts: 27 |
Re: Per-Axis acceleration April 30, 2011 09:15PM |
Registered: 13 years ago Posts: 7,616 |
Generation 7 Electronics | Teacup Firmware | RepRap DIY |
Re: Per-Axis acceleration May 15, 2011 06:18AM |
Registered: 13 years ago Posts: 7,616 |
Generation 7 Electronics | Teacup Firmware | RepRap DIY |
Re: Per-Axis acceleration May 15, 2011 07:53PM |
Registered: 16 years ago Posts: 1,094 |
Re: Per-Axis acceleration May 16, 2011 03:18AM |
Registered: 13 years ago Posts: 7,616 |
Quote
I've found that in terms of accel, all we need to precalculate is start c, minimum c and decel steps for the bresenham master axis. When c <= min_c we have reached our top speed and must stop accelerating. n starts off at 5 so can be set in dda_start. we work out when to start decelerating from the master axis steps remaining counter vs decel steps.
Quote
I think if we're blending moves, we may also need to store n_decel so we're not calculating to stop at the end of the move when we shrink decel_steps to match the start of the next move. We'll also need an n_start to complement the adjusted c_start.
Quote
SO, how do we do the blend? I'm thinking we simply have a blend distance. We work out each axis' speed at end-blend and start+blend and work out relevant accelerations. If any axes accelerate too fast, we cut down blend distance until they all fit, then doctor the queue variables n_decel, decel_steps, c_start, n_start to match what we've worked out. Do we need another n value for the blend stage? Do we need to let the dda know that we're blending, or is that implicit from doctoring the variables? How do we lift bresenham's lockstep for the duration of the blend?
Generation 7 Electronics | Teacup Firmware | RepRap DIY |
Re: Per-Axis acceleration May 16, 2011 03:55AM |
Registered: 16 years ago Posts: 1,094 |
Re: Per-Axis acceleration May 16, 2011 02:47PM |
Registered: 13 years ago Posts: 7,616 |
Quote
so we need to calculate and keep the results for all axes, as if we were doing per-axis, but then do bresenham within the move itself for geometric precision. That'll boost the ram usage a bit - is it worth it?
Quote
I've been thinking that if we can get E to be the master axis during moves with extrusion
Quote
so can we somehow work out counter * c / delta quickly?
Generation 7 Electronics | Teacup Firmware | RepRap DIY |
Re: Per-Axis acceleration May 16, 2011 07:55PM |
Registered: 16 years ago Posts: 1,094 |
Re: Per-Axis acceleration May 17, 2011 12:39PM |
Registered: 13 years ago Posts: 64 |
Re: Per-Axis acceleration May 17, 2011 03:47PM |
Registered: 13 years ago Posts: 7,616 |
Quote
Could this aditional level of complexity be more than AVR's can do realtime?
Generation 7 Electronics | Teacup Firmware | RepRap DIY |
Re: Per-Axis acceleration May 19, 2011 03:54AM |
Registered: 16 years ago Posts: 1,094 |
Re: Per-Axis acceleration May 19, 2011 07:38PM |
Registered: 16 years ago Posts: 1,094 |