Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of Smoothie by
Diff: modules/robot/Block.h
- Revision:
- 2:1df0b61d3b5a
- Parent:
- 0:31e91bb0ef3c
--- a/modules/robot/Block.h Sat Mar 01 02:37:29 2014 +0000 +++ b/modules/robot/Block.h Fri Feb 28 18:52:52 2014 -0800 @@ -1,8 +1,8 @@ -/* +/* This file is part of Smoothie (http://smoothieware.org/). The motion control part is heavily based on Grbl (https://github.com/simen/grbl). Smoothie is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Smoothie is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public License along with Smoothie. If not, see <http://www.gnu.org/licenses/>. + You should have received a copy of the GNU General Public License along with Smoothie. If not, see <http://www.gnu.org/licenses/>. */ #ifndef BLOCK_H @@ -16,66 +16,65 @@ #include "../communication/utils/Gcode.h" #include "Planner.h" class Planner; -class Player; +class Conveyor; -double max_allowable_speed( double acceleration, double target_velocity, double distance); +float max_allowable_speed( float acceleration, float target_velocity, float distance); class Block { public: Block(); - double compute_factor_for_safe_speed(); - void calculate_trapezoid( double entry_factor, double exit_factor ); - double estimate_acceleration_distance( double initial_rate, double target_rate, double acceleration ); - double intersection_distance(double initial_rate, double final_rate, double acceleration, double distance); - void reverse_pass(Block* previous, Block* next); - void forward_pass(Block* previous, Block* next); - void debug(Kernel* kernel); + void calculate_trapezoid( float entry_speed, float exit_speed ); + float estimate_acceleration_distance( float initial_rate, float target_rate, float acceleration ); + float intersection_distance(float initial_rate, float final_rate, float acceleration, float distance); + float get_duration_left(unsigned int already_taken_steps); + + float reverse_pass(float exit_speed); + float forward_pass(float next_entry_speed); + + float max_exit_speed(); + + void debug(); + void append_gcode(Gcode* gcode); - void pop_and_execute_gcode(Kernel* &kernel); - double get_duration_left(unsigned int already_taken_steps); + void take(); void release(); + void ready(); - vector<std::string> commands; - vector<double> travel_distances; + void clear(); + + void begin(); + + //vector<std::string> commands; + //vector<float> travel_distances; vector<Gcode> gcodes; - + unsigned int steps[3]; // Number of steps for each axis for this block unsigned int steps_event_count; // Steps for the longest axis - unsigned int nominal_rate; // Nominal rate in steps per minute - float nominal_speed; // Nominal speed in mm per minute + unsigned int nominal_rate; // Nominal rate in steps per second + float nominal_speed; // Nominal speed in mm per second float millimeters; // Distance for this move - double entry_speed; - unsigned int rate_delta; // Nomber of steps to add to the speed for each acceleration tick - int initial_rate; // Initial speed in steps per minute - int final_rate; // Final speed in steps per minute + float entry_speed; + float exit_speed; + float rate_delta; // Nomber of steps to add to the speed for each acceleration tick + unsigned int initial_rate; // Initial speed in steps per second + unsigned int final_rate; // Final speed in steps per second unsigned int accelerate_until; // Stop accelerating after this number of steps unsigned int decelerate_after; // Start decelerating after this number of steps unsigned int direction_bits; // Direction for each axis in bit form, relative to the direction port's mask - uint8_t recalculate_flag; // Planner flag to recalculate trapezoids on entry junction - uint8_t nominal_length_flag; // Planner flag for nominal speed always reached + bool recalculate_flag; // Planner flag to recalculate trapezoids on entry junction + bool nominal_length_flag; // Planner flag for nominal speed always reached - double max_entry_speed; - Planner* planner; - Player* player; - + float max_entry_speed; + bool is_ready; - short times_taken; // A block can be "taken" by any number of modules, and the next block is not moved to until all the modules have "released" it. This value serves as a tracker. + short times_taken; // A block can be "taken" by any number of modules, and the next block is not moved to until all the modules have "released" it. This value serves as a tracker. }; - - - - - - - - - #endif