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: object

Class 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_filter

Filter 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_filter

Filter 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_filter

Filter 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_filter

Filter 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

path3d

List 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

path

List 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