Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
POWDER REMOVAL COVERAGES
Document Type and Number:
WIPO Patent Application WO/2024/080986
Kind Code:
A1
Abstract:
Examples of methods are described. In some examples, a method includes planning, by a processor, a coverage path based on a three-dimensional (3D) model. In some examples, the method includes calculating, by the processor, based on the coverage path, a coverage trajectory of a robotic device to remove powder from a 3D-printed object corresponding to the 3D model.

Inventors:
THACH DO VAN (SG)
CUONG PHAM QUANG (SG)
ADRIAN NICHOLAS (SG)
Application Number:
PCT/US2022/046443
Publication Date:
April 18, 2024
Filing Date:
October 12, 2022
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HEWLETT PACKARD DEV COMPANY L P (US)
NANYANG TECHNOLOGICAL UNIV (SG)
International Classes:
B22F10/68; B08B5/04; B25J9/16; B29C64/153; B29C64/35; B33Y40/20; G05B19/4099
Attorney, Agent or Firm:
MCFARLAND, Elena K. et al. (US)
Download PDF:
Claims:
CLAIMS

1 . A method, comprising: planning, by a processor, a coverage path based on a three-dimensional (3D) model; and calculating, by the processor, based on the coverage path, a coverage trajectory of a robotic device to remove powder from a 3D-printed object corresponding to the 3D model.

2. The method of claim 1 , further comprising controlling the robotic device to remove the powder from the 3D-printed object based on the coverage trajectory.

3. The method of claim 1 , wherein the robotic device is to steer a nozzle that blows a substance to remove the powder from the 3D-printed object.

4. The method of claim 1 , wherein planning the coverage path comprises determining, by the processor, a set of rays extending from a surface of the 3D model.

5. The method of claim 4, wherein determining the set of rays comprises: determining, by the processor, a set of line segments at intersections of a plane and respective facets of the 3D model; and calculating, by the processor, the set of rays, wherein each ray is normal to a respective facet and intersects a respective line segment.

6. The method of claim 4, wherein planning the coverage path further comprises refining, by the processor, a colliding ray in the set of rays.

7. The method of claim 6, wherein refining the colliding ray comprises selecting, by the processor, a candidate ray to replace the colliding ray.

8. The method of claim 4, wherein planning the coverage path comprises determining a route constructed from the set of rays.

9. The method of claim 1 , wherein calculating the coverage trajectory is based on a bounded ray tip velocity.

10. An apparatus, comprising: a memory; and a processor coupled to the memory, wherein the processor is to: determine a set of rays extending from a surface of a three- dimensional (3D) model; plan a coverage path for the 3D model based on the set of rays; and calculate, based on the coverage path, a coverage trajectory of a robotic manipulator to remove powder from a 3D-printed object corresponding to the 3D model.

11 . The apparatus of claim 10, wherein the processor is to determine a route that intersects the set of rays to plan the coverage path.

12. The apparatus of claim 11 , wherein the processor is to control the robotic manipulator to remove the powder from the 3D-printed object based on the coverage trajectory.

13. A non-transitory tangible computer-readable medium comprising instructions when executed cause a processor of an electronic device to: calculate a coverage trajectory of a robotic manipulator to remove powder from a three-dimensional (3D) printed object, wherein the robotic manipulator is to steer a nozzle to expel a substance to remove the powder from the 3D-printed object.

14. The non-transitory tangible computer-readable medium of claim 13, wherein the instructions when executed cause the processor of the electronic device to calculate the coverage trajectory based on a bounded ray tip velocity. 15. The non-transitory tangible computer-readable medium of claim 13, wherein the instructions when executed cause the processor of the electronic device to plan a coverage path for a 3D model, wherein the 3D-printed object corresponds to the 3D model, and wherein the coverage trajectory is calculated based on the coverage path.

Description:
POWDER REMOVAL COVERAGES

BACKGROUND

[0001] Additive manufacturing is a technique to form three-dimensional (3D) objects by adding material until the object is formed. The material may be added by forming several layers of material with each layer stacked on top of the previous layer. Examples of additive manufacturing include sintering, melting, or binding powder to form each layer of the 3D object (e.g., selective laser sintering or melting, multi jet fusion, metal jet fusion, etc.), and binding sheets of material to form the 3D object (e.g., laminated object manufacturing, etc.).

BRIEF DESCRIPTION OF THE DRAWINGS

[0002] Figure 1 is a flow diagram illustrating an example of a method for object coverage planning;

[0003] Figure 2 is a flow diagram illustrating an example of a method for object coverage planning for a robotic manipulator(s);

[0004] Figure 3 is a block diagram of an example of an apparatus that may be used in object coverage planning;

[0005] Figure 4 is a block diagram illustrating an example of a computer- readable medium for calculating a coverage trajectory;

[0006] Figure 5 is a diagram illustrating a perspective view of an example of a 3D model with examples of coverage paths and points;

[0007] Figure 6 is a diagram illustrating a cross-sectional perspective view of an example of a 3D model with examples of rays and points; [0008] Figure 7 is a diagram illustrating an example of a robotic manipulator that may be utilized in accordance with some examples of the techniques described herein; and

[0009] Figure 8 is a diagram illustrating an example of candidate rays to determine a non-colliding ray in accordance with some examples of the techniques described herein.

DETAILED DESCRIPTION

[0010] 3D printing may be used to manufacture three-dimensional (3D) objects. In some examples of 3D printing, manufacturing powder may be utilized to form a 3D object. Manufacturing powder (and/or “powder” herein) is particles of material for manufacturing an object or objects. Polymer particles are an example of manufacturing powder. In some examples, a region(s) (e.g., area(s), volume(s), etc.) of powder may be sintered, melted, or solidified. For example, an object may be formed from sintered or melted powder. In some examples of 3D printing, layers of manufacturing powder are delivered to a build volume. After each layer is delivered, heat is applied to portions of the layer to cause the powder to coalesce (e.g., sinter) in those portions and/or to remove solvents from a fusing agent or binding agent. For example, a fusing agent or a binding agent may be applied to some portions for coalescence or binding, and/or a detailing agent may be applied to some portions to reduce or avoid coalescence. An energy source (e.g., heat lamp(s), laser(s), etc.) may deliver energy that is absorbed by the fusing agent or binding agent to cause the powder to coalesce. Additional layers are delivered and selectively heated to build up a 3D object from the coalesced powder. After the layers have been delivered and heated, the build volume may be allowed to cool for a period of time. The 3D objects are then removed from the powder bed. Excess powder may stick to a 3D object.

[0011] In some approaches, 3D-printed (3DP) objects may undergo a postprocess treatment(s) such as support removal, powder removal, and/or surface finishing, which may be time-consuming and costly. Thus, automating the postprocessing treatment(s) may save time and/or labor costs.

[0012] Some examples of the techniques described herein may be utilized to plan a coverage path(s) and/or coverage trajectory(ies) for an object(s). For instance, some of the techniques described herein may provide a pipeline for path planning, trajectory planning, and/or motion execution (e.g., controlling and/or sending instructions to a robotic device to perform powder removal for 3DP objects). For example, a coverage path(s) and/or coverage trajectory(ies) may be determined to obtain partial or complete coverage of an object surface or surfaces in some applications such as powder removal, cleaning, etc. For instance, some of the techniques described herein may perform powder removal from a 3DP object(s) using a robotic manipulator(s). In some cases, residual powder may remain on a 3DP object after unpacking from a 3D printing station. Some examples of the techniques described herein may plan a coverage path and/or coverage trajectory to move a robotically actuated nozzle to remove the residual powder. For instance, a nozzle (e.g., blast nozzle) may be attached to a robotic manipulator. The nozzle may deliver a pressurized air stream to remove the residual powder from the 3DP object. In some examples, the air stream may be utilized with or without abrasive particles (e.g., glass beads, sand, etc.). An example of a setup for removing residual powder from a 3DP object is given in Figure 7. For instance, some of the techniques may be utilized to robotically actuate a nozzle to clean an object (e.g., spray water and/or a solution to wash a vehicle), actuate a nozzle to blast powder from a 3DP object, etc.

[0013] In some examples, the term “coverage” and/or variation(s) thereof may denote that a path, route, trajectory, and/or course may partially or completely span a dimension of a surface. In some examples, the term “coverage” and/or variation(s) thereof may denote that a dimension(s) of a surface may be traversed (e.g., tracked, sampled, interacted with, etc.) with a resolution (e.g., spatial density, spacing, frequency, etc.). In some examples, the term “coverage” and/or variation(s) thereof may indicate that an interaction with a surface may completely span the surface. For instance, a nozzle may “cover” a surface by blasting an entire surface (e.g., side of an object) with a substance. In some examples, the term “coverage” and/or variation(s) thereof may indicate that a robotic device following a path, route, course, trajectory, and/or grid at a resolution may permit interaction with (e.g., blasting, cleaning, etc.) of an entire surface (e.g., side of an object).

[0014] Throughout the drawings, similar reference numbers may designate similar or identical elements. When an element is referred to without a reference number, this may refer to the element generally, with and/or without limitation to any particular drawing or figure. In some examples, the drawings are not to scale and/or the size of some parts may be exaggerated to more clearly illustrate the example shown. Moreover, the drawings provide examples in accordance with the description. However, the description is not limited to the examples provided in the drawings.

[0015] Figure 1 is a flow diagram illustrating an example of a method 100 for object coverage planning. The method 100 and/or an element or elements of the method 100 may be performed by an electronic device. For example, the method 100 may be performed by the apparatus 324 described in relation to Figure 3.

[0016] The apparatus may plan 102 a coverage path based on a 3D model. For instance, the apparatus may plan a coverage path of a 3DP object corresponding to a 3D model. A 3D model is data indicating a 3D structure. For instance, a 3D model may be a polygonal model (e.g., mesh model) that expresses a structure in 3D space. In some examples, a 3D model may be formatted and/or stored in a 3D computer-aided design (CAD) file or other file type(s). A coverage path is data indicating a course (e.g., a course of movement, a course between locations, points, etc.). For instance, a coverage path may indicate a course between points (e.g., over a series of points). In some examples, a coverage path may indicate and/or correspond to a set of rays. A ray may be a line in 3D space indicating a point (e.g., origin) and a direction. In some examples, a point of a ray may be situated on (e.g., intersect with) a surface of the 3D model. In some examples, a coverage path may indicate a set of rays, where the rays may indicate a sequence of locations and/or orientations that may be followed by a robotic device to move between locations. For instance, a robotic device may move a nozzle to be oriented in the direction of a ray (e.g., oriented toward the ray origin) at a distance from the point of the ray. A coverage path may be a path that provides coverage over a portion or all of a surface(s) of a 3D model.

[0017] In some examples, planning 102 the coverage path may include determining a set of rays extending from the surface of the 3D model. For instance, the apparatus may determine a set of rays spaced along a surface of the 3D model. In some examples, determining the set of rays may include determining a set of line segments at intersections of a plane and respective facets of the 3D model. For instance, a plane (e.g., vertical plane) may be situated to intersect with (e.g., slice) the 3D model. Facets (e.g., polygonal faces, triangles, etc.) may intersect with the plane to produce a line segment for each facet. The apparatus may calculate a ray for a line segment(s), where a ray is normal to a facet and intersects the line segment. For instance, the apparatus may determine a point (e.g., origin) of a ray on a line segment and calculate a normal to the facet to produce a ray. In some examples, a point (e.g., origin) of a ray may be calculated as a center point of a line segment (e.g., halfway between line segment endpoints) or another point of a line segment (e.g., a line segment endpoint or midpoint, which may be any point between line segment endpoints).

[0018] In some examples, points may be spaced in accordance with a spacing and/or resolution (e.g., 5 millimeters (mm), 10 mm, 1 centimeter (cm), 0.5 inches, etc.). For instance, points on line segments may be selected in accordance with a spacing over a series of lines segments. In some examples, the points may be approximately uniformly spaced along a dimension. An example of points is given in Figure 5. In some examples, the point spacing may provide a resolution along a dimension(s) of an object to provide coverage along the dimension(s).

[0019] In some examples, a ray may be filtered based on a direction of the ray. For instance, if the ray has a direction that fails to satisfy a threshold (e.g., a ray with an elevation angle greater than a threshold), the ray (and a corresponding line segment and/or point) may be removed. For instance, the set of rays may be filtered to select rays corresponding to one side (e.g., a top side or a bottom side) of a 3DP object. In some examples, the elevation threshold may be 90 degrees in a spherical coordinate system.

[0020] In some examples, planning 102 the coverage path may include refining a colliding ray in the set of rays. A colliding ray is a ray that collides with (e.g., intersects with) a 3D model (e.g., collides with a 3D model at a location other than a point or ray origin). In some examples, refining the colliding ray may include selecting a candidate ray to replace the colliding ray. For instance, the apparatus may determine a set of directionally varying candidate rays that intersect the point (e.g., origin) of the colliding ray. The apparatus may replace the colliding ray with a non-colliding candidate ray nearest to the colliding ray. If a non-colliding ray is not found, the colliding ray (and a corresponding line segment and/or point) may be removed. An example of candidate rays is given in Figure 8. An example of a set of rays (e.g., rays including a refined and/or non-colliding ray(s) with a mesh model) is given in Figure 6. In some examples, the refining procedure may be utilized for other rays, configurations, and/or use cases (e.g., may be utilized to determine collision-free robot configurations).

[0021] In some examples, planning 102 the coverage path may include determining a route (e.g., optimal route or near-optimal route) constructed from the set of rays. In some examples, the coverage path may be obtained by determining a shortest route traversing points (e.g., ray origins) once. For instance, the set of rays may be unordered initially. In some examples, the apparatus may set reference endpoints and sort the rays (e.g., corresponding line segments and/or points) between the reference endpoints. For instance, the reference endpoints may be set as points in the slicing plane to the sides of the 3D object, or the reference endpoints may be set from line segment endpoints in the plane that are the most distant from each other. The apparatus may determine the route by determining an order of points and/or line segments that has smaller distances between points and/or line segments. The route (e.g., shortest route) that connects the points and/or line segments (e.g., ray origins) may be the planned coverage path for a slice of the 3D model. [0022] In some examples, the apparatus may separate the determined points (e.g., midpoints) and corresponding line segments into two subsets and may define reference endpoints for each subset. The apparatus may impose an internal cost constraint for each line segment and find a sub-route (e.g., a shortest route that traverses line segments once) for each subset. In some approaches, based on imposing internal cost constraints, finding the shortest sub-routes that traverse line segments (e.g., traverse line segments exactly once) may be transformed into finding a shortest route that visits a set of given points once (e.g., exactly once). However, it may be difficult to directly find the shortest route within polynomial time. In some examples, a heuristic approach(es) may be utilized to find near-optimal sub-routes. Because the reference endpoints are defined, the route (e.g., a coverage path, a sorted intersection line, or coverage line) may be obtained by connecting the two subsets at the subset endpoints. Using the foregoing approach may achieve a lower time complexity and/or approximation ratio compared to some baseline approaches. For instance, the apparatus may determine coverage paths (e.g., routes, coverage lines, etc.) in less time and/or with lower approximation error.

[0023] In some examples, multiple coverage paths may be planned. For instance, a coverage path may be planned for each of a set of planes. For instance, the set of planes may include parallel and/or orthogonal planes. In some examples, the coverage paths may be joined in an end-to-end fashion (e.g., in a serpentine and/or crisscross fashion) to cover a surface (e.g., an entire surface) of the 3D model. In some examples, the order of rays may be sorted based on the order of ray origins in the obtained coverage path. In some examples, the coverage path(s) may be planned in a task space.

[0024] In some examples, the apparatus may determine a set of robot configurations in a configuration space from rays (e.g., sorted, collision-free rays). A robot configuration may indicate a state(s) and/or configuration(s) of a link(s) and/or joint(s) of a robotic device. For instance, a robot configuration may refer to an inverse kinematic solution. In some examples, a robot configuration may be a parameter(s) to move a robotic device (e.g., data and/or control information for joint(s), link(s), tools(s), etc.) to a position(s) and/or orientation(s). For instance, a configuration space may be utilized to convert obtained rays to robot configurations by reversing the ray and/or aligning a robot end-effector to the ray origin in the direction of the ray (where each ray may contain one or multiple robot configurations to represent the ray), determine collision-free robot configurations, and/or compute the optimal set of robot configurations corresponding to each ray.

[0025] In some examples, a cleaning task may be performed regardless of ray tip rotation (e.g., ray tip rotation may be irrelevant to the cleaning task). In some examples, a set of discretized rotation angles may be utilized for each ray (in the set of sorted rays, for instance). For each ray, robot configurations may be computed to align with a ray(s) (e.g., set of rays) at corresponding discretized rotation angles as follows. The obtained rays may be reversed. Robot configuration(s) (e.g., an inverse kinematics solution(s), if any) may be computed by aligning a robot tool (e.g., an instrument or attachment, nozzle tip in a cleaning task, etc.) to the origin of the reversed rays in the direction of the reversed ray, where the robot tool is rotated about the ray axis at the discretized rotation angles. A robot tool may be a device, instrument, and/or attachment attached to a robotic device (e.g., to an end-effector of a robotic manipulator). An example of a robot tool is a nozzle attached to a tube or hose to deliver a substance (e.g., air with abrasive particles, etc.).

[0026] Robot configurations in the configuration space may account for potential collisions between the robotic device and the surrounding environment, including the 3D model (e.g., 3DP object corresponding to the 3D model). In some examples, the apparatus may check the collision of a robot configuration by using motion planning frameworks (e.g., OpenRAVE, Movelt, etc.) to adjust (if possible) the collided robot configuration to a collision-free configuration (e.g., such that the adjusted ray is nearest to the collided ray). For instance, determining a non-colliding robot configuration may be performed similarly to performing a refining procedure (e.g., determining a non-colliding ray) as described herein. In some examples, a set of candidate robot configurations (e.g., directions) may be determined, and the non-colliding candidate robot configuration direction (e.g., reversed direction of the associated ray) nearest to the collided robot configuration direction may be selected to produce a valid robot configuration direction. In some examples, the candidate rays (e.g., candidate rays described in relation to Figure 8) may be reused to support the adjustment of robot configurations by finding the nearest collision-free ray. A robot configuration may be valid if it satisfies: (1 ) the obtained robot configuration and a corresponding ray (with the same direction as the robot tool) are collision-free and (2) the elevation of the corresponding ray satisfies (e.g., is less than, is less than or not more than, etc.) the specified threshold. In some examples, if a valid robot configuration is not obtained at a ray (due to potential collision with surroundings, joint limits, and/or when no inverse kinematics solution is found, for example), then the operation at that ray may be ignored.

[0027] In some examples, the apparatus may select robot configurations from the set of robot configurations (e.g., one for each associated ray). For instance, the apparatus may construct a graph of the set of robot configurations and select a set of robot configurations (e.g., optimal configurations) based on the graph. For instance, the apparatus may utilize a graph search procedure to reduce (e.g., minimize) a tour cost in the configuration space metric to reduce joint movement distance and/or to increase coverage efficiency. Accordingly, the apparatus may determine a tour (e.g., enhanced tour, optimal tour, etc.) of valid robot configurations.

[0028] The apparatus may calculate 104, based on the coverage path (e.g., valid robot configurations), a coverage trajectory of a robotic device to remove powder from a 3DP object corresponding to the 3D model. A robotic device is a device with controllable motion. Examples of a robotic device may include a cable-driven parallel robot, a robotic manipulator (e.g., robotic arm, linear rail system (e.g., a carriage with controllable motion on a rail(s) in a dimension(s)), etc. In some examples, a robotic device may include an articulable (e.g., rotatable, translatable, tiltable, etc.) mechanism(s) (e.g., link(s), joint(s), or a combination thereof). For instance, a robotic device may include a sequence of link and joint combinations. In some examples, a “robotic device” may include multiple robotic devices (e.g., multiple cable-driven parallel robots, multiple robotic arms, an articulable object holder and a robotic arm, etc.). In some examples, robotic device motion may be controllable in multiple (e.g., 2, 3, 4, 5, 6, or 7, etc.) dimensions and/or degrees of freedom. An example of a robotic device (e.g., robotic manipulator) is a robotic arm with six-axis controllable motion. For instance, a robotic device may be controllable in a dimension(s), such as three axes of translation (e.g., x, y, and z dimensions) and three axes of rotation (e.g., yaw, pitch, and roll). An example of a robotic manipulator with a nozzle is given in Figure 6. While some of the examples are described herein in terms of a robotic manipulator, the examples may also be applicable to a robotic device. For instance, an aspect(s) of the technique(s) described herein (e.g., the pipeline) may be applied to a cable-driven parallel robot instead of a robotic manipulator to perform a cleaning task in some examples.

[0029] A coverage trajectory is data indicating motion through a route(s), course(s), and/or coverage path(s). In some examples, a coverage trajectory may indicate a quantity(ies) for a translation axis (or axes) and/or a rotation axis (or axes). For instance, a coverage trajectory may be data to control the motion of a robotic device along the coverage path. In some examples, a coverage trajectory may indicate a velocity(ies) and/or acceleration(s) for motion. In some examples, calculating 104 the coverage trajectory may include executing a motion planning procedure. A motion planning procedure may provide point-to- point motion planning using (e.g., satisfying) a joint velocity constraint and/or a joint acceleration constraint. Examples of a motion planning procedure that may be utilized may include time-optimal path parameterization (TOPP) to impose additional constraints such as tool Cartesian velocity and/or tool Cartesian acceleration constraints, etc. In some examples, TOPP may be based on reachability analysis (TOPP-RA), etc. For instance, the apparatus may execute the motion planning procedure based on the coverage path (e.g., optimal robot configurations) to produce the coverage trajectory (e.g., robot trajectory).

[0030] In some examples, calculating 104 the coverage trajectory may be based on a bounded ray tip velocity. A ray tip velocity is a velocity of a tip of a ray extending from a robot tool (e.g., nozzle) of a robotic device. The tip of the ray may be disposed on (e.g., intersecting) a surface of the 3D model. The bounded ray tip velocity may limit a maximum velocity allowed for the ray tip to traverse the surface of the 3D model (e.g., to follow a coverage path and/or coverage trajectory over a surface of an object corresponding to the 3D model). Some examples of maximum velocity may be 1 mm/second, 2 mm/second, 5 mm/second, 10 mm/second, 1 cm/second, 5 cm/second, 10 cm/second, 1 inch/second, 3 inches/second, 7 inches/second, etc. For example, the velocity of a nozzle traversing the 3DP object may be bounded to allow adequate time to remove the excess powder and/or to provide smooth motion over the coverage path (e.g., set of rays). For instance, the apparatus may utilize a bounded ray tip velocity (in addition to the joint velocity constraint and/or the joint acceleration constraint, for example) to calculate 104 the coverage trajectory. In some examples, the apparatus may utilize TOPP-RA with an additional ray tip velocity bound to produce the coverage trajectory. Calculating 104 the coverage trajectory in accordance with some examples of the techniques described herein may provide smooth motion along the coverage path (e.g., reduce and/or avoid deceleration and acceleration at each ray or point) and/or may reduce total coverage time. For cleaning tasks (e.g., powder removal), bounding the ray tip velocity (e.g., bounding the maximum traversing speed of the nozzle tip) on the 3DP object surface may ensure adequate cleaning time in a specific region(s).

[0031] In some examples, planning 102 the coverage path and/or calculating 104 the coverage trajectory may be performed (e.g., performed offline) without using a captured image(s) and/or without computer vision. For instance, captured image(s) and/or computer vision may be difficult to utilize for coverage path planning and/or coverage trajectory calculation for 3DP objects that are partially or completely covered with excess powder, which may obscure and/or conceal the 3DP object. In some examples, 3DP object position may be estimated based on a portion of the 3DP object (e.g., a base of the 3DP object) when the 3DP object is mounted to an object holder (e.g., clamp).

[0032] In some examples, the method 100 may include controlling the robotic device to remove the powder from the 3DP object based on the coverage trajectory. For instance, the apparatus may control the robotic device in accordance with the coverage trajectory to remove excess powder from the 3DP object. In some examples, the robotic device may steer a nozzle that blows a substance (e.g., air, air with abrasive particles, water, etc.) to remove the powder from the 3DP object.

[0033] Figure 2 is a flow diagram illustrating an example of a method 200 for object coverage planning for a robotic manipulator(s). The method 200 and/or an element or elements of the method 200 may be performed by an electronic device. For example, the method 200 may be performed by the apparatus 324 described in relation to Figure 3.

[0034] The apparatus may determine 202 a set of rays extending from a surface of a 3D model. In some examples, determining 202 the set of rays may be performed as described in relation to Figure 1 . For instance, the apparatus may compute a set of rays that are distributed (e.g., uniformly distributed, near- uniformly distributed, irregularly distributed, etc.) over a surface of the 3D model. The 3D model may correspond to a 3DP object or other object in some examples.

[0035] In some examples, the apparatus may generate N orthogonal slicing planes (e.g., sagittal and coronal planes) over the 3D model. In some examples, N may be calculated (e.g., to provide a resolution for a given 3D model) and/or may be determined based on received input (e.g., a user may input N). For instance, N may depend on the size (e.g., dimension(s)) of a 3D object model and may indicate a coverage resolution (e.g., 1 mm, 5 mm, 10 mm, 20 mm, 50 mm, 1 cm, 0.5 inches, etc.). The apparatus may utilize the set of planes to determine intersecting line segments between the 3D model and the planes. In some examples, the intersecting line segments may include unordered line segments due to an unstructured connectivity of triangles of the 3D model. In some examples, unordered line segments may not be directly utilized to determine robotic manipulator trajectories. In some examples, the apparatus may construct a set of rays originating at the midpoints of the line segments intersecting the planes. In some examples, line segments that have ray directions less than a threshold may be removed.

[0036] The apparatus may determine 204 a coverage path on the surface by computing a route connecting points corresponding to the set of rays. In some examples, determining 204 the coverage path may be performed as described in relation to Figure 1 and/or Figure 5. For instance, the coverage path on the surface may be determined by computing a shortest route connecting points (e.g., ray origin points, intersecting points between the surface and the rays, etc.).

[0037] Computing the route may provide a coverage path(s) in less time and/or with lower approximation error (when the 3D model (e.g., mesh model) includes a large number of triangles, for instance). In some examples, the set of rays may be densely concentrated at intersected places of the spanned planes with high curvature regions of the 3D model while being distributed sparingly on flat regions. In some cases, reaching of the ray tip to all points lying on the intersected lines may not be ensured if the distance between two adjacent points is long (e.g., on flat surfaces). In some cases, performing collision checks for all rays in dense areas may be inefficient and/or time-consuming, since the nozzle may blow a substance in an area in a circle of a radius (e.g., radius specified by a user) on the 3DP object surface. In some examples, the apparatus may resample the points on the intersected line segments such that the distances between adjacent points (e.g., pairs of adjacent points) are approximately equal.

[0038] The apparatus may sort 206 the set of rays based on an order of the points in the route. In some examples, sorting 206 the rays may be performed as described herein (e.g., as described in relation to Figure 1 ).

[0039] The apparatus may refine 208 any colliding ray(s) in the set of rays. To help ensure coverage (e.g., to ensure that the air stream blown from the nozzle reaches the points), for instance, a ray direction may be adjusted if the ray collides with the surface of the 3D model. In some examples, adjusting a colliding ray may be performed as described in relation to Figure 1 and/or Figure 8. In some examples, the apparatus may refine a ray(s) that are unreachable by a robotic manipulator. For instance, the apparatus may adjust and/or replace a ray(s) that are unreachable by the robotic manipulator due to an arm length limitation and/or potential collision with the object. In some examples, a ray refining procedure (as described in relation to the example of Figure 8, for instance) may be utilized in applications such as powder removal, inspection, 3D reconstruction, and/or painting, etc.

[0040] The apparatus may determine 210 a set of robot configurations. In some examples, the apparatus may determine 210 the set of robot configurations as described herein. For instance, the apparatus may determine robot configurations that are aligned to the set of rays at a distance from the points (e.g., ray origins). The distance may provide a space between the robotic manipulator (and/or tool) and a 3DP object.

[0041] The apparatus may calculate 212, based on the set of robot configurations, a coverage trajectory of a robotic manipulator to remove powder from a 3DP object corresponding to the 3D model. In some examples, calculating 212 the coverage trajectory may be performed as described in relation to Figure 1 . For instance, the apparatus may calculate 212 the coverage trajectory using a motion planning procedure with a joint velocity constraint, a joint acceleration constraint, and/or a constraint(s) in a Cartesian space (e.g., velocity and/or acceleration) for a robot tool.

[0042] The apparatus may control 214 the robotic manipulator to remove the powder from the 3DP object based on the coverage trajectory. In some examples, controlling 214 the robotic manipulator may be performed as described in relation to Figure 1 . For instance, the apparatus may be the robotic manipulator, may include the robotic manipulator, or may be in communication with the robotic manipulator. The apparatus may execute the coverage trajectory to control the robotic manipulator to remove excess powder from the 3DP object or may send the coverage trajectory to a controller of the robotic manipulator.

[0043] Figure 3 is a block diagram of an example of an apparatus 324 that may be used in object coverage planning. The apparatus 324 may be a computing device, such as a personal computer, a server computer, a robotic controller, a smartphone, a tablet computer, etc. The apparatus 324 may include and/or may be coupled to a processor 328, a communication interface 330, and/or a memory 326. In some examples, the apparatus 324 may be in communication with (e.g., coupled to, have a communication link with) a robotic manipulator or a robotic manipulator controller. In some examples, the apparatus 324 may be an example of a computing device, a robotic manipulator, a robotic manipulator controller. The apparatus 324 may include additional components (not shown) and/or some of the components described herein may be removed and/or modified without departing from the scope of the disclosure.

[0044] The processor 328 may be any of a central processing unit (CPU), a semiconductor-based microprocessor, graphics processing unit (GPU), field- programmable gate array (FPGA), an application-specific integrated circuit (ASIC), and/or other hardware device suitable for retrieval and execution of instructions stored in the memory 326. The processor 328 may fetch, decode, and/or execute instructions stored on the memory 326. In some examples, the processor 328 may include an electronic circuit or circuits that include electronic components for performing a functionality or functionalities of the instructions. In some examples, the processor 328 may perform one, some, or all of the aspects, elements, techniques, etc., described in relation to one, some, or all of Figures 1-8.

[0045] The memory 326 is an electronic, magnetic, optical, and/or other physical storage device that contains or stores electronic information (e.g., instructions and/or data). The memory 326 may be, for example, Random Access Memory (RAM), Electrically Erasable Programmable Read-Only Memory (EEPROM), a storage device, an optical disc, and/or the like. In some examples, the memory 326 may be volatile and/or non-volatile memory, such as Dynamic Random Access Memory (DRAM), EEPROM, magnetoresistive random-access memory (MRAM), phase change RAM (PCRAM), memristor, flash memory, and/or the like. In some examples, the memory 326 may be a non-transitory tangible machine-readable storage medium (e.g., non-transitory tangible computer-readable medium), where the term “non-transitory” does not encompass transitory propagating signals. In some examples, the memory 326 may include multiple devices (e.g., a RAM card and a solid-state drive (SSD)).

[0046] The apparatus 324 may include a communication interface 330 through which the processor 328 may communicate with an external device or devices (not shown), for instance, to receive and store the information pertaining to an object or objects. The communication interface 330 may include hardware and/or machine-readable instructions to enable the processor 328 to communicate with the external device or devices. The communication interface 330 may enable a wired or wireless connection to the external device or devices. In some examples, the communication interface 330 may include a network interface card and/or may also include hardware and/or machine- readable instructions to enable the processor 328 to communicate with various input and/or output devices, such as a keyboard, a mouse, a display, another apparatus, electronic device, computing device, printer, robotic manipulator, robotic manipulator controller, etc. In some examples, a user may input instructions and/or data into the apparatus 324 via an input device.

[0047] In some examples, the memory 326 may store model data 340. The model data 340 may include and/or indicate a model or models (e.g., 3D object model(s), etc.). For instance, the model data 340 may include and/or indicate 3D object models. The apparatus 324 may generate the model data 340 and/or may receive the model data 340 from another device. For example, the apparatus 324 may receive a 3D object model(s) from another device (e.g., web server, remote computer via a network, etc.), may read a 3D object model(s) from a storage repository (e.g., memory, storage, etc.), may receive a 3D object model(s) from an input device, and/or may generate a 3D object model(s).

[0048] In some examples, the memory 326 may store path determination instructions 341. The processor 328 may execute the path determination instructions 341 to determine a set of rays extending from a surface of a 3D model. In some examples, determining the set of rays may be performed as described in relation to Figure 1 and/or Figure 2. For instance, the apparatus 324 may determine line segments intersecting a plane(s) and may determine a set of rays originating from respective points on respective line segments.

[0049] In some examples, the processor 328 may execute the path determination instructions 341 to plan a coverage path for (e.g., to cover, to traverse, etc.) the 3D model based on the set of rays. For instance, planning the coverage path may be performed as described in relation to Figure 1 and/or Figure 2. In some examples, the processor 328 may determine a route that intersects the set of rays to plan the coverage path.

[0050] In some examples, the memory 326 may store trajectory calculation instructions 342. The processor 328 may execute the trajectory calculation instructions 342 to calculate, based on the coverage path, a coverage trajectory of a robotic manipulator to remove power from a 3DP object corresponding to the 3D model. For instance, the processor 328 may calculate the coverage trajectory as described in relation to Figure 1 and/or Figure 2.

[0051] In some examples, the memory 326 may store operation instructions 346. In some examples, the processor 328 may execute the operation instructions 346 to perform an operation. For instance, the processor 328 may execute the operation instructions 346 to control the robotic manipulator to remove the power from the 3DP object based on the coverage trajectory. In some examples, the apparatus 324 may directly control the robotic manipulator (e.g., provide control signals to robotic manipulator joints). In some examples, the apparatus 324 may control the robotic manipulator by sending the coverage trajectory and/or a signal(s) to another device (e.g., robotic manipulator controller) to execute the coverage trajectory. For instance, the apparatus 324 may utilize the communication interface 330 to send the coverage trajectory and/or the signal(s) to another device.

[0052] In some examples, the operation instructions 346 may include object positioning instructions. For instance, the processor 328 may execute the object positioning instructions to position the 3DP object. In some examples, the processor 328 may control a positioning device (e.g., object holder, adjustable platform, conveyor, etc.). For instance, the processor 328 may rotate, orient, translate, etc., the 3DP object in 3D space. In some examples, the 3DP object may be moved into a position for the robotic manipulator to remove the excess powder. For instance, powder may be removed from a first side (e.g., top side) of the 3DP object, and then the 3DP object may be moved (e.g., rotated) to allow powder to be removed from a second side (e.g., bottom side).

[0053] Figure 4 is a block diagram illustrating an example of a computer- readable medium 448 for calculating a coverage trajectory. The computer- readable medium 448 is a non-transitory, tangible computer-readable medium. The computer-readable medium 448 may be, for example, RAM, EEPROM, a storage device, an optical disc, and the like. In some examples, the computer- readable medium 448 may be volatile and/or non-volatile memory, such as DRAM, EEPROM, MRAM, PCRAM, memristor, flash memory, and/or the like. In some examples, the memory 326 described in relation to Figure 3 may be an example of the computer-readable medium 448 described in relation to Figure 4. In some examples, the computer-readable medium 448 may include code, instructions, and/or data to cause a processor to perform one, some, or all of the operations, aspects, elements, etc., described in relation to one, some, or all of Figures 1-8.

[0054] The computer-readable medium 448 may include data (e.g., information and/or executable instructions). For example, the computer- readable medium 448 may include trajectory calculation instructions 450 and/or velocity bound data 452.

[0055] The trajectory calculation instructions 450 may be instructions when executed cause a processor of an electronic device to calculate a coverage trajectory of a robotic manipulator to remove powder from a 3DP object. The robotic manipulator may steer a nozzle to expel (e.g., blow, blast, etc.) a substance to remove the powder from the 3DP object. In some examples, calculating a coverage trajectory of a robotic manipulator may be performed as described in relation to Figure 1 , Figure 2, and/or Figure 3.

[0056] In some examples, the processor may execute the trajectory calculation instructions 450 to calculate the coverage trajectory based on a bounded ray tip velocity. For instance, the computer-readable medium 448 may store velocity bound data 452. The velocity bound data 452 may indicate the bounded ray tip velocity. In some examples, the velocity bound data 452 (e.g., bounded ray tip velocity) may be received from an interface (e.g., keyboard, touch pad, touchscreen, communication interface, network interface, etc.).

[0057] In some examples, the computer-readable medium 448 may include instructions (not shown in Figure 4) to plan a coverage path. For instance, the processor may execute the instructions to plan a coverage path for (e.g., to cover, to traverse, etc.) a 3D model. The 3DP object may correspond to the 3D model. In some examples, the coverage trajectory is calculated based on the coverage path. In some examples, the processor may calculate the coverage trajectory without planning the coverage path. For instance, the coverage path may be provided to the processor, may be planned by a separate device, and/or may be provided from an interface.

[0058] Figure 5 is a diagram illustrating a perspective view of an example of a 3D model 554 with examples of coverage paths 556 and points 558. In the example of Figure 5, orthogonal planes (e.g., orthogonal vertical planes) may be intersected with the 3D model 554. Line segments may be determined where facets of the 3D model 554 intersect with the planes. Points 558 may be determined on the line segments. The points 558 may be utilized as ray origins. For instance, rays may be determined extending in directions normal to respective facets from respective points. In some examples, a spacing may be applied between points and/or rays. For instance, the spacing may approximately equally space points along a course and/or coverage path (e.g., coverage line).

[0059] Figure 6 is a diagram illustrating a cross-sectional perspective view of an example of a 3D model 660 with examples of rays and points. In the example of Figure 6, rays are determined in accordance with some of the techniques described herein. For instance, rays may be determined that extend from points on the surface of the 3D model 660. In the example of Figure 6, a collided ray may be determined extending from a point 664. An adjusted ray 662 may be selected from a set of candidate rays in accordance with some of the techniques described herein, where the adjusted ray 662 does not collide with the 3D model 660.

[0060] Figure 7 is a diagram illustrating an example of a robotic manipulator 766 that may be utilized in accordance with some examples of the techniques described herein. The robotic manipulator 766 may be controllable in six axes (e.g., x, y, z, roll, pitch, and yaw). In the example of Figure 7, a nozzle 768 is attached to the robotic manipulator 766. For instance, the robotic manipulator 766 may steer the nozzle 768 in six axes. The nozzle 768 may expel a substance (e.g., a high-pressure compressed air stream containing glass beads) to remove powder from the 3DP object 774.

[0061] In the example of Figure 7, a 3DP object 774 may be held in an object holder 772. The object holder 772 may be an example of a positioning device. For instance, after powder is removed from a top surface of the 3DP object 774, the object holder 772 may rotate the 3DP object 774 for powder removal from a bottom surface of the 3DP object 774. In some examples of the techniques described herein, calculating a coverage trajectory of the robotic manipulator 766 may be based on a bounded velocity of a ray tip 770. For instance, the ray tip 770 may be a point on the 3DP object 774 along a pointing direction of the nozzle 768.

[0062] Figure 8 is a diagram illustrating an example of candidate rays 876 to determine a non-colliding ray in accordance with some examples of the techniques described herein. For example, an apparatus may determine a set of candidate rays 876 intersecting with a first point 874 (e.g., origin) of a colliding ray. In the example of Figure 8, the set of candidate rays 876 may be determined between the first point 874 and center points of circles 878 at a distance (e.g., radius) from the first point 874. In some examples, the circles 878 may be constructed by using a technique (e.g., solving optimization formulation(s)), where a second point 880 (e.g., a centroid of a center circle) and the first point 874 are aligned to the ray origin and tip of a colliding ray. In some approaches, the technique may be performed for each colliding ray.

[0063] In some examples, an apparatus may sort the center points of the circles 878 according to a distance (e.g., angular distance, Euclidean distance, etc.) from the colliding ray. For instance, the center points (and/or corresponding candidate rays) may be sorted in an order from the nearest to the colliding ray to the farthest from the colliding ray. The sorted center points (and/or corresponding candidate rays) may be evaluated in order to determine whether the current candidate ray is a non-colliding ray. The first candidate ray (e.g., the nearest candidate ray) that is a non-colliding ray may be selected as a replacement ray for the colliding ray and/or the direction of the colliding ray may be adjusted to the direction of the non-colliding ray. For instance, the candidate rays 876 may be evaluated in a pattern that spirals outward from the colliding ray until a non-colliding ray is determined.

[0064] In some examples, the refining procedure and/or an aspect(s) of the technique(s) described in relation to Figure 8 may be utilized to determine collision-free robot configurations. For instance, the procedure or an aspect(s) thereof may be utilized in various applications including cleaning, painting, inspection, and/or 3D reconstruction, implemented in a robotic platform, such as an unmanned aerial vehicle (UAV), mobile robotic manipulators, etc.

[0065] As used herein, the term “and/or” may mean an item or items. For example, the phrase “A, B, and/or C” may mean any of: A (without B and C), B (without A and C), C (without A and B), A and B (without C), B and C (without A), A and C (without B), or all of A, B, and C.

[0066] While various examples are described herein, the disclosure is not limited to the examples. Variations of the examples described herein may be implemented within the scope of the disclosure. For example, aspects or elements of the examples described herein may be omitted or combined.