femto.laserpath module#
- class LaserPath(scan=1, speed=1.0, samplesize=(100, 50), x_init=-2.0, y_init=0.0, z_init=None, lsafe=2.0, speed_closed=5, speed_pos=0.5, cmd_rate_max=1200, acc_max=500, _x=array([], dtype=float32), _y=array([], dtype=float32), _z=array([], dtype=float32), _f=array([], dtype=float32), _s=array([], dtype=float32))#
Bases:
objectClass that computes and stores the coordinates of a laser path.
- scan: int = 1#
Number of overlapped scans.
- speed: float = 1.0#
Opened shutter translation speed [mm/s].
- samplesize: tuple[float, float] = (100, 50)#
Dimensions of the sample (x [mm], y [mm]).
- x_init: float = -2.0#
Initial x-coordinate for the laser path [mm].
- y_init: float = 0.0#
Initial y-coordinate for the laser path [mm]
- z_init: float | None = None#
Initial z-coordinate for the laser path [mm].
- lsafe: float = 2.0#
Safe margin length [mm].
- speed_closed: float = 5#
Closed shutter translation speed [mm/s].
- speed_pos: float = 0.5#
Positioning speed (shutter closed)`[mm/s]`.
- cmd_rate_max: float = 1200#
Maximum command rate [cmd/s].
- acc_max: float = 500#
Maximum acceleration/deceleration [m/s^2].
- classmethod from_dict(param)#
Create an instance of the class from a dictionary.
It takes a class and a dictionary, and returns an instance of the class with the dictionary’s keys as the instance’s attributes.
- Parameters
param (dict[str, Any]) – Dictionary mapping values to class attributes.
dict() – Dictionary mapping values to class attributes.
- Return type
Instance of class
- property init_point: tuple[float, float, float]#
Initial point of the trajectory.
- Returns
[x0, y0, z0] coordinates.
- Return type
tuple(float, float, float)
- property lvelo: float#
Compute the length needed to reach the translation speed.
The length needed to reach the writing speed is computed as 3 times the length needed to accelerate from 0 to the translation speed.
- Returns
Length needed to accelerate to translation speed [mm].
- Return type
float
- property dl: float#
Compute the minimum spatial separation between two points.
The minimum spatial separation between two points is the speed divided by the maximum command rate.
- Returns
The minimum separation between two points [mm]
- Return type
float
- property x_end: float | None#
Compute the x coordinate of the laserpth outside the sample, if the sample size is not None.
- Returns
The end of the laser path outside the sample [mm].
- Return type
float, optional
- property points: ndarray[Any, dtype[float32]]#
Matrix of the unique points in the trajectory.
The matrix of points is parsed through a unique functions that removes all the subsequent identical points in the set.
See also
femto.helpers.unique_filterFilter trajectory points to remove subsequent identical points.
- Returns
[X, Y, Z, F, S] points of the laser trajectory.
- Return type
numpy.ndarray
- property x: ndarray[Any, dtype[float32]]#
x-coordinate vector as a numpy array.
The subsequent identical points in the vector are removed.
See also
femto.helpers.unique_filterFilter trajectory points to remove subsequent identical points.
- Returns
The x-coordinates of the points in the laser path
- Return type
numpy.ndarray
- property lastx: float | None#
Last x value in the trajectory points matrix, if any.
- Returns
The last value of the x array.
- Return type
float, optional
- property y: ndarray[Any, dtype[float32]]#
y-coordinate vector as a numpy array.
The subsequent identical points in the vector are removed.
- Returns
The y-coordinates of the points in the laser path
- Return type
numpy.ndarray
See also
unique_filterFilter trajectory points to remove subsequent identical points.
- property lasty: float | None#
Last y value in the trajectory points matrix, if any.
- Returns
The last value of the y array.
- Return type
float, optional
- property z: ndarray[Any, dtype[float32]]#
z-coordinate vector as a numpy array.
The subsequent identical points in the vector are removed.
- Returns
The z-coordinates of the points in the laser path
- Return type
numpy.ndarray
See also
unique_filterFilter trajectory points to remove subsequent identical points.
- property lastz: float | None#
Last z value in the trajectory points matrix, if any.
- Returns
The last value of the z array.
- Return type
float, optional
- property lastpt: ndarray[Any, dtype[float32]]#
Last point of the laser path, if any.
- Returns
Final [x, y, z] pointof the laser path.
- Return type
numpy.ndarray
- property path: tuple[npt.NDArray[np.float32], npt.NDArray[np.float32]]#
List of x and y-coordinates of the laser path written with open shutter.
- Returns
x, y coordinates arrays.
- Return type
tuple(numpy.ndarray, numpy.ndarray)
See also
path3dList of x, y and z-coordinates of the laser path written with open shutter.
- property path3d: tuple[npt.NDArray[np.float32], npt.NDArray[np.float32], npt.NDArray[np.float32]]#
List of x, y and z-coordinates of the laser path written with open shutter.
It takes the x, y and z, and shutter values s values from the path trajectory and filters out the points written at closed shutter (
s = 0).- Returns
x, y and z coordinates arrays.
- Return type
tuple(numpy.ndarray, numpy.ndarray, numpy.ndarray)
See also
pathList of x and y-coordinates of the laser path written with open shutter.
- property length: float#
Length of the laser path trajectory.
- Returns
The length of the path [mm].
- Return type
float
- property fabrication_time: float#
Total fabrication time in seconds.
It takes the x, y and z of the laser path and calculates the distance between each point and the next, computes the element-wise divison between that distance and the f values of the path to get the time it takes to travel that distance. Finally, it sums all the contribution to get the total fabrication time.
- Returns
Fabrication time [s].
- Return type
float
- property curvature_radius: ndarray[Any, dtype[float32]]#
Point-to-point curvature radius of the trajectory.
The curvature radius is computed as the radius of the circle that best fits the curve at a given point.
- Returns
Array of curvature radii of the trajectory.
- Return type
numpy.ndarray
- property cmd_rate: ndarray[Any, dtype[float32]]#
Point-to-point command rate of the laser path.
- Returns
Array of point-to-point command rate values of the trajectory.
- Return type
numpy.ndarray
- start(init_pos=None, speed_pos=None)#
Start a laser path.
The function starts the laserpath in the optional initial position given as input. If the initial position is not given, the laser path starts in [self.x_init, self.y_init, self.z_init].
- Parameters
init_pos (list[float], optional) – [x, y, z] coordinates of the initial point [mm]. Default value is [self.x_init, self.y_init, self.z_init].
speed_pos (float, optional) – Translation speed [mm/s]. Default value is self.speed_pos.
- Return type
None
- end()#
Ends a laser path.
The function automatically returns to the initial point of the laser path with a translation speed of self.speed_close.
- Return type
None
- add_path(x, y, z, f, s)#
Appends the given arrays to the end of the existing coordinates.
- Parameters
x (numpy.ndarray) – Array of x-coordinate values.
y (numpy.ndarray) – Array of y-coordinate values.
z (numpy.ndarray) – Array of z-coordinate values.
f (numpy.ndarray) – Array of translation speed values.
s (numpy.ndarray) – Array of shutter state values.
- Return type
None
- linear(increment, mode='INC', shutter=1, speed=None)#
Add a linear increment to the current laser path.
- Parameters
increment (list[float]) – List of increments [dx, dy, dz] in incremental (INC) mode [mm]. New position [x_f, y_f, `z_f] in absolute (ABS) mode [mm].
mode (str) – Mode selector. Default value is INC.
shutter (int) – State of the shutter during the transition (0: ‘OFF’, 1: ‘ON’). The default value is 1.
speed (float, optional) – Translation speed [mm/s]. The default value is self.speed.
- Return type
The object itself.
- num_subdivisions(l_curve=0, speed=None)#
Compute the number of points required to work at the maximum command rate.
- Parameters
l_curve (float, optional) – Length of the laser path segment [mm]. The default value is 0.0 mm.
speed (float, optional) – Translation speed [mm/s]. The default value is self.speed.
- Returns
num – The number of subdivisions.
- Return type
int
- export(filename)#
Export the object as a pickle file.
- Parameters
filename (str) – Name of (or path to) the file to be saved.
- Return type
None