Controlling motion of a robotic arm

The method of controlling robotic arms through blend duration and constant accelerations addresses the limitations of existing blending techniques, ensuring smooth and efficient motion transitions by precisely managing dynamic constraints, thus improving robotic arm performance.

WO2026145851A1PCT designated stage Publication Date: 2026-07-09TERADYNE ROBOTICS AS

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
TERADYNE ROBOTICS AS
Filing Date
2025-12-15
Publication Date
2026-07-09

Smart Images

  • Figure DK2025050235_09072026_PF_FP_ABST
    Figure DK2025050235_09072026_PF_FP_ABST
Patent Text Reader

Abstract

Method, controllers, and computer-readable media for controlling a robotic arm. A part of a robotic arm in a first motion segment is to accelerate at a first acceleration for a first time period and, in a second motion segment, the part of the robotic arm is to accelerate at a second acceleration for a second period of time. The accelerations are chosen such that the part of the robotic arm traverses between an entry position and an entry velocity of a first target motion segment and an exit position and an exit velocity of a second target motion segment.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CONTROLLING MOTION OF A ROBOTIC ARM TECHNICAL FIELD

[0002] The present invention relates to controlling motion of a robotic arm. The robotic arm can include a plurality of robot joints connecting a robot base and a robot tool flange.

[0003] BACKGROUND

[0004] Robotic arms include a plurality of robot joints and links. Motors or other actuators can move parts of the robotic arm in relation to each other. Typically, the robotic arm is mounted on a robot base that is affixed to a surface and includes a robot tool flange to which various tools can be attached. The robot joints may be rotational robot joints that are configured to rotate parts of the robotic arm in relation to each other, prismatic joints that are configured to translate parts of the robotic arm in relation to each other, and / or other kind of robot joints configured to move parts of the robotic arm in relation to each other. Typically, it is possible to attach various end effectors to the robot tool flange or other parts of the robotic arm, such as grippers, vacuum grippers, magnetic grippers, screwing machines, welding equipment, dispensing systems, visual systems etc.

[0005] A robot controller is configured to control movement of the robotic arm by controlling the robot joints. For example, the robot tool flange can be moved in relation to the base and / or the robotic arm can be instructed to carry out working instructions. Typically, the robot controller is configured to control the robot joints based on a dynamic model of the robotic arm. The dynamic model defines a relationship between the forces acting on the robotic arm and the resulting accelerations of the robotic arm. Often, the dynamic model considers the inertia and mass of the robotic arm and other parameters that influence movement of the robotic arm. The dynamic model may include a kinematic model of the roboticarm that defines relationships between the different parts of the robotic arm based on information such as, e.g., the length of the joints and links. Kinematic models can describe robotic arms using, e.g., Denavit-Hartenberg parameters or like. Dynamic models make it possible for a controller to determine the torques and / or forces that the joint actuators should provide in order to achieve a desired motion of the robotic arm and its constituent joints and links or to hold the robotic arm in a static posture.

[0006] Robotic arms are generally programmed by a robot integrator or other user who defines various instructions for the robotic arm, such as patterns of movement and other instructions (e.g., gripping, waiting, welding, releasing, screwing instructions). To implement the instructions, the robot controller relies upon sensor or other measurement signals. For example, measurement signals can be provided by joint encoders, safety curtains, vision systems, position indicators, etc.

[0007] In many cases, a user defines the movements of a robotic arm in a program. The program may specify waypoints and possibly movements to be performed between the waypoints. Waypoints are defined positions of a part of the robotic arm. In general, waypoints will define positions of the robot tool flange in relation to the robot base. The positions can be defined, e.g., in a Cartesian reference space, in a joint reference space that refers to angular positions of joints of the robotic arm, or otherwise. In some programs, motions that the robotic arm are to perform between the waypoints are also defined, for instance, in joint space or Cartesian space. In robotic arms with rotational robot joints, motions defined in joint space are often most natural for the robot actuators and may be the quickest way to move between waypoints. In many cases, end-effectors that are being moved to follow instructions that are defined in joint space motions will follow a curved profile. On the other hand, instructions that are defined in linear Cartesian space tend to require a linear end-effectormotion. To achieve such motions, it may be necessary for joints to undergo high accelerations in different directions.

[0008] In some robot motions, it is not a requirement that a portion of the robotic arm arrives at a given waypoint before moving toward the next waypoint. In these situations, a smooth transition between movement before the waypoint and movement after the waypoint can be achieved by "blending" the motion near the waypoint. By blending motion near a waypoint, the robotic arm does not need to arrive at that waypoint and perform a sharp transition between motions. In some cases, such sharp transitions could require standstill at the waypoint before the robotic arm moves towards the next waypoint. This slows execution of the tasks performed by the robotic arm. Motion blending techniques such as Line-Segment-Parabolic-Blend (LSPB), Circular ark, Polynomial curve etc. are widely used blending techniques. However, each of them has limitations when implemented to blend movements of robotic arm. None precisely controls dynamic constraints (such as joint velocity, acceleration, torque, fatigue and various limits) throughout the kinematic chain of the robot.

[0009] WO 00 / 73967A1 describes a system for blending simple moves into a single trajectory by decomposing trajectories of the individual moves into their orthogonal or independent components and overlap them for a given time interval. In this approach the initial motions may be optimally planned, however there is no guarantee that the jerk, acceleration and velocity constraints of the robot joint does not exceed the limits of the robot.

[0010] US 2023 / 019160 discloses a robot controller for controlling a robot arm comprising a first space shaping module configured to provide a shaped first space target motion by convolving a first space target motion with an impulse train, where the first space target motion defines a target motion in a first reference space; and a second space shaping module configured to provide a shaped second space target motion by convolvinga second target motion with the impulse train; where the second target motion defines the target motion in a second reference space. A motor controller module is configured to generate motor control signals to the joint motors based on the shaped first space target motion and the shaped second space target motion. This makes it possible to dynamically adjust in which reference space the input shaping shall be performed whereby vibrations and deviation in one reference space caused by input shaping in another reference space can be reduced and the widely used blending techniques can also be utilized in connection with input shaping.

[0011] SUMMARY

[0012] The objectives of the present invention include addressing the above-described limitations of the prior art or other problems of the prior art. This is achieved by a method of controlling a robotic arm, where the robotic arm comprises a plurality of robot joints connecting a robot base and a robot tool flange. The method comprises receiving -an entry position and an entry velocity of a first target motion segment, and -an exit position and an exit velocity of a second target motion segment, wherein the first target motion segment and the second target motion segment define motion of a part of the robotic arm; based on the entry position, the entry velocity, the exit position, and the exit velocity, determining a blend duration, wherein the blend duration is the difference between an entry time that the part of the robotic arm moving on the first target motion segment is at the entry position and an exit time that the part of the robotic arm moving on the second target motion segment is at the exit position; and for the determined blend duration, determining -a first constant acceleration to be applied between the entry time and a switch time, and -a second constant acceleration to be applied between the switch time and the exit time. The switch time occurs within the blend duration and application of the first constant acceleration and the second constant acceleration to the part of the robotic arm defines a paththat transitions the part of the robotic arm from the entry position and the entry velocity to the exit position and the exit velocity.

[0013] The objectives of the present invention can also be achieved by a method of controlling a robotic arm, where the robotic arm comprises a plurality of robot joints connecting a robot base and a robot tool flange. The method comprises obtaining a first position and a first velocity, where said first velocity indicate the velocity of a part of said robotic arm at said first position; obtaining a second position and a second velocity, where said second velocity indicate the velocity of a part of said robotic arm at said second position; generating a target motion for said part of said robotic arm, where said target motion starts at said first position at said first velocity and ends at said second position at said second velocity. The method is characterized in that it comprises the steps of obtaining a first acceleration; a first time period; a second acceleration and a second time period based on said first position, said second position, said first velocity and said second velocity; wherein said step of generating said target motion comprises: generating a first blend segment, where said part of said robotic arm accelerates at said first acceleration and the said blend segment has a duration of said first time period; and generating a second blend segment, where said part of said robotic arm accelerates at said second acceleration and the said second blend segment has a duration of said second time period.

[0014] The objectives of the present invention can also be achieved by a robot controller for controlling a robotic arm, wherein the robot controller comprises a motion planner module configured to plan a motion of the robotic arm and a motor controller module configured to generate at least one motor control signal for said joint motors based said planned motion. The motion planner module can be configured to perform the methods described above and elsewhere herein.

[0015] The objectives of the present invention can also be achieved by a non-transitory computer-readable medium that stores softwarecomprising instructions executable by one or more computers which, upon such execution, cause the one or more computers to perform operations comprising the methods described above and elsewhere herein.

[0016] Further advantages and benefits are described in the detailed description of the invention.

[0017] The dependent claims describe possible embodiments of the invention. The advantages and benefits of the present invention are described in the detailed description of the invention.

[0018] BRIEF DESCRIPTION OF THE DRAWINGS FIG. 1 schematically illustrates a robotic arm configured according to the present invention.

[0019] FIG. 2 schematically illustrates a simplified structural diagram of the robotic arm of FIG. 1.

[0020] FIG. 3 is a schematic illustration of the concept of blending motions of a robotic arm.

[0021] FIG. 4 schematically illustrates a flow chart of a method of controlling a robotic arm according to the present invention.

[0022] FIG. 5 schematically illustrates the concept of blending between a first target motion segment and the second target motion segment defining a motion of a part of the robotic arm in 3D;.

[0023] FIG. 6 schematically illustrates the concept of blending between a first target motion segment and the second target motion segment to define a motion of a part of the robotic arm in 2D.

[0024] FIG. 7 schematically illustrates an example velocity profile of the motion of a part of a robotic arm within a blend.

[0025] FIG. 8 schematically illustrates an example two-segment velocity profile of the motion of a part of a robotic arm within a blend.FIG. 9 schematically illustrates different scenarios in which the part of the robotic arm is to enter and exit a blend with identical speeds but in different directions.

[0026] FIG. 10 schematically illustrates a blend with a blend volume and blend center point.

[0027] FIG. 11 schematically illustrates profiles of motion components of a blend path within a blend.

[0028] FIG. 12 schematically illustrates profiles of motion components of another blend path within a blend.

[0029] FIG. 13 schematically illustrates profiles of motion components of another blend path within a blend.

[0030] FIG. 14 schematically illustrates additional blend paths along of a part of a robotic arm within a blend.

[0031] FIG. 15 schematically illustrates profiles of velocity components for the x-direction of the blend paths of FIG. 14.

[0032] FIG. 16 schematically illustrates a blend path of a part of a robotic arm entering the blend a relatively low speed and exiting at relatively higher speed.

[0033] FIG. 17 schematically illustrates profiles of the velocity component and the acceleration component in the y-direction of the blend path of FIG. 16.

[0034] FIG. 18 schematically illustrates blending a first target motion segment and a second target motion segment in 3D.

[0035] FIG. 19 schematically illustrates profiles of the velocity component and the acceleration component of the second of the orthogonal components of the entry velocity and the exit velocity of the blend in FIG.

[0036] 18.

[0037] FIG. 20 schematically illustrates profiles of the position component, the velocity component, and the acceleration component of the x-direction of blend paths with and without transition segments.FIG. 21 schematically illustrates profiles of the position component, the velocity component, and the acceleration component of the y-direction of blend paths with and without transition segments.

[0038] FIG. 22 illustrates another blend path of a part of a robotic arm entering the blend a relatively low speed and exiting at relatively higher speed.

[0039] FIG. 23 illustrates profiles of the velocity components and the acceleration component in the y-direction of the blend path of FIG. 22.

[0040] DETAILED DESCRIPTION

[0041] The present invention is described in view of exemplary embodiments that illustrate the principles of the present invention. The skilled person will be able to provide several embodiments within the scope of the claims. Throughout the description, the reference numbers of similar elements providing similar effects have been given the same last two digits. Further it is to be understood that in the case that an embodiment comprises a plurality of the same features then only some of the features may be labeled by a reference number.

[0042] FIG. 1 is a schematic illustration of a robot system 100 that includes a robotic arm 101 and a robot controller 110 configured to control the robotic arm. The robotic arm 101 includes a plurality of robot joints 102a, 102b, 102c, 102d, 102e, 102f that connect a robot base 103 to a robot tool flange 104. A base joint 102a is configured to rotate the robotic arm around a base axis 105a (illustrated by a dashed dotted line) as illustrated by rotation arrow 106a; a shoulder joint 102b is configured to rotate the robotic arm around a shoulder axis 105b (illustrated by a cross indicating the axis) as illustrated by rotation arrow 106b; an elbow joint 102c is configured to rotate the robotic arm around an elbow axis 105c (illustrated by a cross indicating the axis) as illustrated by rotation arrow 106c; a first wrist joint 102d is configured to rotate the robotic arm around a first wrist axis 105d (illustrated by a cross indicating the axis)as illustrated by rotation arrow 106d and a second wrist joint 102e is configured to rotate the robotic arm around a second wrist axis 105e (illustrated by a dashed dotted line) as illustrated by rotation arrow 106e. Robot joint 102f is a robot tool joint and coupled to the robot tool flange 104. Robot tool flange 104 is rotatable around a tool axis 105f (illustrated by a dashed dotted line) as illustrated by rotation arrow 106f. The illustrated robotic arm is thus a six-axis robotic arm with six degrees of freedom with six rotational robot joints. However, other robotic arms can include fewer or more robot joints and / or other types of robot joints (e.g., prismatic robot joints that translate the robotic arm).

[0043] Each of the robot joints may include a robot joint body and an output flange that is rotatable or translatable in relation to the robot joint body. Output flanges can be connected to a neighboring robot joint either directly or indirectly, e.g., via an arm section. Each robot joint includes a joint motor that is configured to rotate or translate the joint's output flange in relation to the robot joint body, for instance, via a gear, a belt, or other transmission or via a direct connection to the motor shaft. The robot joint body can, for instance, be formed as a joint housing and the joint motor can be arranged inside the joint housing. The output flange can extend out of the joint housing. Additionally, robot joints can include joint sensors that provide a sensor signal indicative of, e.g., an angular and / or linear position of the output flange, an angular and / or linear position of the motor shaft of the joint motor, a motor current of the joint motor or an external force, and / or torque trying to rotate the output flange or motor shaft. For instance, the angular position of the output flange can be measured by an output encoder, such as an optical or magnetic encoder that indicates the angular position of the output flange in relation to the robot joint. Also, the angular position of the joint motor shaft can be measured by an input encoder such as an optical or magnetic encoder that indicates the angular position of the motor shaft relative to the robot joint. In some instances, both output encoders and inputencoders are present, e.g., where a gearing is present, it is desirable to measure the relationship between the input and output side of the gearing. Joint sensors can also be implemented as current sensors that indicate the current through the joint motor and thus can be used to determine the torque provided by the motor. For instance, in implementations that include a multiphase motor, a plurality of current sensors can be provided in order to measure the current through each of the phases. Some robot joints may include a plurality of output flanges that are rotatable and / or translatable by the same joint actuator. For instance, a robot joint may include a first output flange that rotates / translates a first part of the robotic arm in relation to the robot joint and a second output flange that rotates / translates a second part of the robotic arm in relation to the robot joint. The joint sensors can also be implemented as force-torque sensors and / or as acceleration sensors. For instance, a force and / or torque sensor may be provided at the tool joint and configured to measure force and / or torque provided to the tool flange. An acceleration sensor may be provided at a tool joint and configured to indicate the acceleration of the tool joint. Other parts of the robotic arm may also comprise force-torque sensors and / or acceleration sensors.

[0044] A robot tool flange reference point 107 (also known as a TCP (Tool Center Point)) is indicated at the robot tool flange and defines the origin of a tool flange coordinate system. The illustrated tool flange coordinate system is a Cartesian coordinate system and defined by three coordinate axes Xfiange, yfiange, Zfiange. In the illustrated embodiment, the origin of the robot tool flange coordinate system has been arranged on the tool flange axis 105f with one axis (zfiange) parallel with the tool flange axis and with the other axes Xfiange, yfiange parallel with the outer surface of the robot tool flange 104. Further, a base reference point 108 defines the origin of a robot base coordinate system. The illustrated robot base coordinate system is a Cartesian coordinate system and defined by three coordinateaxes Xbase, ybase, Zbase. In the illustrated embodiment, the origin of the robot base coordinate system has been arranged on the base axis 105a with one axis (zbase) parallel with the base axis 105a axis and with the other axes Xbase, ybase parallel with at the bottom surface of the robot base. The direction of gravity 109 in relation to the robotic arm is also indicated by an arrow. It is to be understood that the robotic arm can be arranged at any orientation in relation to gravity.

[0045] The robot system comprises at least one robot controller 110 configured to control the robotic arm 101. The robot controller 110 is configured to control the motions of the parts of the robotic arm and the robot joints, for instance, by controlling the motor torque provided to the joint motors based on, e.g., a dynamic model of the robotic arm, the direction of gravity, and joint sensor signal(s). The robot controller 110 may control the motions of the robotic arm in accordance with a program stored in a memory of the robot controller. The controller can be an external device as illustrated in FIG. 1 or integrated into the robotic arm or integrated in part and external in part.

[0046] In many implementations, the robot controller 110 is configured to determine the motor torque based on a dynamic model of the robotic arm Drobot. The dynamic model of the robotic arm Drobot can for instance be stored in memory 222 (fig. 2). The dynamic model makes it possible for the controller 110 to calculate the torques that the joint motors shall provide to each of the joint motors to make the robotic arm perform a target motion of at least a part of the robot arm.

[0047] The robot controller 110 can include an interface device 111 that is configured to interface with a user and enable the user to control and program the robotic arm. The interface device 111 can, for instance, be a teach pendant. Interface device 111 can communicate with the controller via wired or wireless communication protocols. The interface device 111 can for instance include a display 112 and input devices 113 such as buttons, sliders, touchpads, joysticks, track balls, gesturerecognition devices, keyboards, microphones, etc. The display 112 can be a touch screen and act both as a display and as an input device. The interface device 111 can also be an external device that is configured to communicate with the robot controller 110, for instance, a smart phone, tablet, PC, laptop, etc.

[0048] The robot system can also include an end effector 126 (illustrated in dotted lines) attached to the robot tool flange. The illustrated end effector 126 is a gripper. However, the end effector can be any kind of end effector such as grippers, vacuum grippers, magnetic grippers, screwing machines, welding equipment, gluing equipment, dispensing systems, painting equipment, visual systems, cameras, etc.

[0049] FIG. 2 is a simplified schematic diagram of the robot system 100 illustrated in FIG. 1. The robot joints 102a, 102b, and 102f are illustrated. The robot joints 102c, 102d, 102e, and the links connecting the robot joints have been omitted for the sake of simplicity. Further, the robot joints 102a, 102b, and 102f are illustrated as separate elements. However, it is to be understood that they are interconnected either directly or via one or more intervening robot links and / or joints. The illustrated robot joints 102c, 102d, 102e each include an output flange 216a, 216b, 216f and a joint motor 217a, 217b, 217f that acts as an actuator that is arranged to rotate the output flange 216a, 216b, 216f in relation to the robot joint body. In the illustrated implementation, the joint motors 217a, 217b, 217f are each configured to rotate respective output flanges 216a, 216b, 216f via a respective output axle 218a, 218b, 218f. As discussed above, other joint actuators and couplings between the joint actuators and the output flanges (e.g., transmission systems such as gears) are possible. In the illustrated embodiment, the output flange 216f of the tool joint 102f acts as the tool flange 104. The illustrated robot joints each include at least one joint sensor 219a, 219b, 219f that provides a respective sensor signal 220a, 220b, 220f indicative of at least one joint sensor parameter J sensor, a, Jsensor,b , Jsensor,f of therespective joint. The joint sensor parameters can for instance indicate the position and / or orientation of the output flange in relation to the robot joint body, an angular position of a shaft of the joint motor, a motor current of the joint motor, or the like. The joint sensor parameters can be selected from the list comprising: speed, acceleration, torque, motor torque, force, and position. The joint sensor parameters can be values that are directly measured by the sensors or derived from such sensor values. For instance, the angular position of an output flange in relation to the robot joint can be directly measured by an output encoder, such as optical encoders or magnetic encoders. Similarly, the angular position of a joint motor shaft can be directly measured by an input encoder such as an optical encoder or a magnetic encoder. The motor currents can be directly measured by current sensors, and motor torques can be derived from the measured motor currents. Alternatively, torque sensors provided in the robot joints can directly measure torques.

[0050] The end effector 126 connected to the robot tool flange 104 may also be operatively connected to the robot controller 110 in that the robot controller 110 is configured to control the end effector 126 via an end effector control signal 228 and end effector 126 responds thereto. In some cases, the end effector 126 may provide a feedback signal 229 to the robot controller 110, for instance, in order to indicate the status of the end effector 126, values measured by any end effector sensor, etc.

[0051] The robot controller 110 comprises a processor 221, memory 222, and communication interfaces for communicating with external devices, including the user interface, the robot joints, the end effector, etc. The processor 221 includes a motion planner module 230 and a motor controller module 232. The motion planner module 230 and the motor controller module 232 can be, e.g., processes executed by the processor 221. Alternatively, motion planning and motor control functionality can be provided by separate processor units.The motion planner module 230 is configured to plan target motions of the robotic arm, for instance, by generating trajectories of parts of the robotic arm. The trajectories can, for instance, be generated based on a robot program stored in a memory 222, based on an external control signal 224, and / or based on user inputs provided via an interface device 111. In the illustrated embodiment, the motion planner module generates a target motion M of at least a part of the robotic arm. The target motion M may indicate the kinematics of at least the part of the robotic arm, for instance, a path along which that part of the robotic arm shall move, the speed of that part of the robotic arm, the acceleration of that part of the robotic arm, a waypoint to which that part of the robotic arm shall move, or a force / torque to be generated by that part of the robotic arm. The target motion can, for instance, be indicated in a target reference space, such as a Cartesian space that refers to the robot base coordinate system, the tool flange coordinate system, or any other coordinate systems. Alternatively, the target motion M can be defined in joint space where the kinematics of the robot joints are defined; e.g. as angular position qtof output axles of the joint transmissions, a desired angular velocity qtof output axles of the joint transmissions, and a desired angular acceleration qtof the robot transmission.

[0052] Often, the target motion M will define the kinematics of the robot tool flange 104, although this is not necessarily the case. For example, the target motion M can define the kinematics of an end effector, a workpiece held by the robotic arm, or a point in space that bears a spatial relationship to such components (e.g., the tool center point of a gripper). For the sake of brevity, all description of target motion M refers to the kinematics of "a part of the robotic arm," although it is understood that target motion M can define the kinematics of components that may not per se be seen as part of the robotic arm.

[0053] As discussed in more detail below, the motion planner module 230 includes a blend module 231 that is configured to generate a first blendsegment Bi and second blend segment B2 that blend movement before the waypoint and movement after the waypoint to define a target motion M. In the first blend segment, a part of the robotic arm accelerates at a first acceleration ai for a first duration Ti and, in the second blend segment, the part of the robotic arm accelerates at a second acceleration 32 for a second duration T2. The blend module is configured to determine the first acceleration ai, the first duration Ti, the second acceleration 32, and the second time period T2 based on a first velocity of the part of the robotic arm at a first position at which the part of the robotic arm enters a blend volume and based on a second velocity of the part of the robotic arm at a second position at which the part of the robotic arm exits a blend volume. During the first blend segment Bi, the part of the robotic arm has a constant acceleration ai over time t

[0054] Equation 1 B^t) = a for t E T

[0055] where ai is an acceleration of the part of the robotic arm during the first duration Ti that starts after the part enters the blend volume. Similarly, during the second blend segment B2, the part of the robotic arm has a constant acceleration 32 over time t during the second duration T2

[0056] Equation 2 B2(t) = a2for t e T2

[0057] The motion planner module 230 and the blend module 231 are configured to generate the first blend segment Bi and the second blend segment B2 using the method described below. The target motion M provided to the motor controller module defines the first blend segment and the second blend segment.The motor controller module 232 is configured to generate at least one motor control signal 223a-223f to the joint motors based on the target motion M generated by the motion planner 230. The motor controller module 232 is configured to generate at least one motor control signal to the joint motors, for instance, in the form of motor control signals 223a, 223b, 223f that indicate control parameters for the joint motors. The motor control signals 223a, 223b, 223f can be used to control the joint motors. For instance, the control parameters can indicate the motor torque Tmotor,a, Tmotor, b, and Tmotor, f that each joint motor shall provide to the output flanges. The motor controller module 232 may also, as illustrated by dotted line, be configured to generate the motor control signal 223a, 223b, 223f based on at least one of sensor signals 220a, 220b, 220f indicative of at least one joint sensor parameter JSensor,a, Jsensor,b , Jsensor,f and / or other sensor signals indicative of other robot parameters. The sensor signal can, for instance, indicate the angular position q of the output flange; the angular position 0 of the motor axle; or the motor torque Tmotor provided to the motor axle by the joint motor. For instance, the joint motors can be multiphase electromotors, and the robot controller can be configured to adjust the motor torque provided by the joint motors by regulating the current through the phases of the multiphase motors.

[0058] FIG. 3. is a schematic illustration of the concept of blending motions of a robotic arm. A target motion can be defined in which a part of the robotic arm (for instance, the robot tool flange) is to start from waypoint A, move to waypoint B, move to waypoint C, move to waypoint D, move to waypoint E, and stop at waypoint E. The straight dotted lines indicate the trajectory of the robot tool flange if it were instructed to move in linear segments between the waypoints.

[0059] However, in some circumstances, it may not be necessary that the part of the robotic arm reaches certain waypoints, e.g., waypoints B, C, and D. Rather, these waypoints may be considered guides which informthe motion of the part of the robot arm but are not necessarily reached by the part. There may be some acceptable tolerance in the movement of the part of the robotic arm in the vicinity of these waypoints. This tolerance can be expressed as a blend volume 340. In the schematic, two-dimensional representation, blend volumes 340 are indicated by dotted circles that are centered on waypoints B, C, and D.

[0060] Without the need to precisely reach these waypoints, the part of the robot arm can be configured to follow a blended path when the part is inside the blend volume 340. In the illustrated embodiment, these blended paths 341 are illustrated as curved sections inside the blend volume 340 and are shown in solid lines. Blending results in a faster movement from waypoint A to waypoint E, since "cutting the corners" at waypoints B, C, D is faster than moving along the straight lines.

[0061] FIG. 4 illustrates a method of controlling a robotic arm, for instance, the part of the robotic arm described and illustrated in FIGS. 1 and 2. The method comprises a step of obtaining 450 a first position Pi and a first velocity vi at which the part of the robotic arm is to enter the blend volume, a step of obtaining 455 a second position P2 and a second velocity V2 at which the part of the robotic arm is to exit the blend volume, a step 460 of obtaining a first acceleration and a first duration that together define a first blend segment Bi of the part within the blend volume and obtaining a second acceleration and a second duration that together define a second blend segment B2 of the part within the blend volume. The first and second accelerations and the first and second durations are based on the first position, the second position, the first velocity, and the second velocity. The method also comprises a step of generating 470 target motion M for the robotic arm based on the first Bi and second B2 blend segments.

[0062] The step of obtaining 450 a first position Pi and a first velocity vi can be performed by reading the first position Pi and a first velocity vi from a memory wherein the first position Pi and the first velocity vi arestored. Alternatively, the first position Pi and the first velocity vi can be obtained via user input or calculated based on a robot program that indicates target movements of the robotic arm. For instance, in the event that a robot program indicates waypoints and the movements between the waypoints, once a blend volume is known, the first position Pi can be calculated as the point where a robot movement towards a waypoint intersects the blend volume and the first velocity vi is the velocity at that position. Various approaches to determining the blend volume are described below. The step of obtaining 455 a second position P2 and a second velocity V2 can be performed by reading the second position P2 and a second velocity V2 from a memory wherein the second position P2 and the second velocity V2 are stored. Alternatively, the second position P2 and the second velocity V2 can be obtained via user input or calculated based on a robot program that indicates target movements of the robotic arm. For instance, in the event that a robot program indicates waypoints and the movements between the waypoints, once a blend volume is known, the second position P2 can be calculated as the point where a robot movement away from a waypoint intersects the blend volume and the second velocity V2 is the velocity at that position.

[0063] FIG. 5 is a schematic representation of one circumstance in which the target paths of motion of a robotic arm are combined, namely, in a blend 539. In blends, the robot arm is to transition from following a first target path to a second target path. The transition is to occur within a defined blend volume 540. The illustrated example of a blend volume 540 is a sphere defined by a blend radius about a blend center point 542.

[0064] In general, center point 542 will be the intersection of the direction of travel along the first target path when entering blend volume 540 and the direction of travel along the second target path when exiting blend volume 540. For example, the first and second target paths may each be defined with respect to center point 542 e.g., using center point 542 as a waypoint ("follow first target path from point A to center point 542and then follow second target path from center point 542 to point B."). Also, if the blend radius is relatively small, then the direction of travel along both target paths within blend 539 will generally be a straight line segment that intersects center point 542. However, as discussed further below, this is not necessarily the case, especially when complex multidimensional motions are defined, when target paths that are expressed in joint space or in different spaces are blended (e.g., blending a Cartesian target path with a target path defined in joint space), and / or when the target paths do not share a common waypoint (such as when paths are merged in other contexts). Approaches to dealing with such circumstances are discussed further below.

[0065] In the illustrated circumstance, the first target path defines an entry position 543 and an entry velocity 544 at which a part, generally, a tool flange such as robot tool flange 104, on the first target path is to enter blend volume 540. The second target path defines an exit position 545 and an exit velocity 546 at which part is to exit blend volume 540 on the second target path. For illustrative purposes, entry position 543 and exit position 545 are schematically represented as circles on the surface of blend volume 540 and entry velocity 544 and exit velocity 546 are schematically represented as arrows that define a direction and speed (i.e., the lengths of the arrows). The direction of travel along the first target path when entering blend volume 540 is schematically illustrated as a dashed line segment that extends from entry position 543 to center point 542. The direction of travel along the second target path when exiting blend volume 540 is schematically illustrated as a dashed line segment that extends from center point 542to exit position 546.

[0066] FIG. 6 illustrates a scenario in which the first and second target paths are defined in Cartesian space, and, in this scenario, the line segments and their point of intersection define a plane. Further, Cartesian axes can be defined in this plane. For example, an X-axis can be defined in this plane such that both entry velocity 544 and exit velocity 546 havepositive x-components and a Y-axis can be defined such that entry velocity 544 has a positive y-component and exit velocity 546 has a negative y-component. When target paths are defined, e.g., in joint space, the target paths can be defined, e.g., in six-dimensional space, and such a simplistic representation is not possible. For didactic purposes, the Cartesian space case will be illustrated in the drawings. Further, the description below casts blending in terms of components in Cartesian space, i.e., in terms of position, velocity, and acceleration in the x-direction and y-direction, and possibly z-direction. However, the same approaches can be used to blend components in joint space. In other words, the translational motions of a part of a robotic arm and angular displacements of joints of a robotic arm can be blended as described below.

[0067] Returning to FIG. 5, positions 543, 545 are generally points that may or may not be defined with some margin of error. Entry velocity 544 and exit velocity 546 need not be equal. Entry position 543 and exit position 545 can be positioned at any desired location on blend volume 540. In some implementations, the target paths are defined in the same control space, e.g., in joint space or in a space that is referenced to a single point (e.g., at the base of the robot arm) in a Cartesian, polar, or other coordinate system. However, this is not necessarily the case, and the target paths can also be defined in different control spaces.

[0068] As shown, there are a nigh-infinite number of possible paths that are available to define the position, velocity, and acceleration of the part of the robotic arm while traversing blend 539. Even when this search space is constrained, computation of the dynamics of a robotic arm with even a modest number of joints and links becomes burdensome. Motion blending techniques such as Line-Segment-Parabolic-Blend (LSPB), Circular ark, Polynomial curve etc. are widely used and, in some cases can be performed "on-the-fly" during movement of the robotic arm without introducing computational delays to the motion. However, eachof them is limited and does not allow to precisely control dynamic constraints through the entire kinematic chain of the robotic arm.

[0069] FIG. 7 is a graph 790 that represents an example velocity profile 747 of the part within blend 539. Graph 790 includes an x-axis 791 and a y-axis 792. Position along x-axis 791 indicates time. Position along y-axis 792 indicates velocity. The slope of velocity profile 747 in graph 790 thus indicates acceleration.

[0070] In the illustrated implementation, the part on the first target path is to enter blend 539 at the entry position and at entry velocity 544, denoted as QA. This entry occurs at an entry time tA. The part on the second target path is to exit blend 539 at the exit position and at exit velocity 546, denoted as QB. This exit occurs at an exit time tB. Between entry and exit, the velocity of the part must transition from entry velocity QA 544 to exit velocity QB 546. Entry time tA and exit time 1B thus together define the duration of blend 100.

[0071] Velocity profile 747 is one option for transitioning from entry velocity QA 544 to exit velocity QB 546. In particular, velocity profile 790 is a straight line segment that joins the entry velocity QA 544 at entry time tA with exit velocity QB 546 at exit time tB. The straight-line segment velocity profile 747 represents a constant and minimal necessary acceleration of the part within blend 539 to achieve the desired entry and exit velocities, but only in rare cases does this achieve the desired entry and exit positions. In contrast, the two-segment blends described herein can achieve the desired changes in velocity and position from entry to exit for any number of degrees of freedom of a robotic arm.

[0072] Although straight line segment velocity profile 747 represents the minimal acceleration of the part, it very likely does not also represent the minimal acceleration of other joints and links of the robot arm. For many entries and exits, a straight line segment velocity profile of one part of the robotic arm and that is defined in Cartesian space applies large oreven forbidden accelerations of other joints and links and requires large or forbidden torques from joint actuators.

[0073] As an aside, although the transitions between the entry and exit velocities QA 544, Q B 546 and velocity profile 747 are illustrated as discontinuities that occur instantaneously, this is not the case in real world systems. Rather, even relatively small changes in velocity will occur over some period of time. An approach that compensates for these real-world limitations is presented in the description of jerk limits below. However, for didactic purposes, the schematic velocity transitions in the drawings are illustrated as instantaneous.

[0074] FIG. 8 is a graph 890 that represents a two-segment velocity profile 893 within blend 539. The segments in velocity profile 893 can be defined to conserve the velocity and momentum of the robot arm as it enters blend 539 along the first path while still providing sufficient time to allow the robot arm to exit blend 539 along the second path without applying large or even forbidden accelerations and torques to any part of the robotic arm.

[0075] In more detail, velocity profile 893 includes a first blend segment 894 and a second blend segment 895. First blend segment 894 is a straight line segment that joins the entry velocity QA 544 at entry time tA with a switch velocity Qc 896 at switch time tc. Second segment 895 is also straight line segment that joins the switch velocity Qc 896 at switch time tc with exit velocity QB 546 at exit time tB. The magnitude and the direction of the negative acceleration (deceleration) during first segment 894 is constrained to be constant, as is the magnitude and the direction of the acceleration during second segment 895. These magnitudes are generally not equal as in the case for the single-segment motion illustrated in FIG. 7, although by happenstance two-segment motion may collapse to single-segment motion.If it is not possible to define constant accelerations for the blend segments that achieve the desired transition between entry and exit conditions (e.g., a given set of robot components with their dynamic constraints may not be able to achieve the necessary torques and accelerations), then the duration of the blend (i.e., the duration between entry time tA and exit time te) can be increased until it is achievable. Alternatively, or in conjunction, the switch time within a blend can be shifted, e.g., if entry and exist velocities differ greatly from the one anther.

[0076] Switch time tc always occurs between entry time tA and exit time te, i.e., during the duration of the blend. In some implementations, switch time tc can be shifted within the duration of the blend during motion planning. For example, switch time tc can be shifted with the duration of the blend to reduce the time that is spent within the blend or ensure that the paths followed by the robot arm within the blend meet certain constraints, including the dynamic constraints set by the components of the robot arm. However, in the implementations described in detail below, switch time tc is described as occurring at the middle of the blend duration, i.e., the time duration between entry time tA and switch time tc is equal to the time duration between switch time tc entry time tA and exit time ts. Requiring the switch time tc to occur at the middle of the blend duration further reduces the search space of possible acceleration and hence computational burden, often without unduly increasing accelerations and blend duration. In other words, requiring that the switch time tc occur at the middle of the blend duration facilitates on-the-fly computation of a two-segment profile.

[0077] In the illustrated implementation, switch velocity Qc 896 is slower than both the entry velocity QA 544 and the exit velocity QB 546. The part of the robotic arm thus slows down after entering blend 539 with a negative acceleration (deceleration) given by the slope of first blend segment 894 and then accelerates with a positive acceleration given bythe slope of second blend segment 895 to reach exit velocity QB 546. However, in other implementations, switch velocity Q c 896 may be intermediate between or greater that entry velocity QA 544 and exit velocity QB 546 The part of the robotic arm can thus speed up after entering blend 539 and then slow down to reach exit velocity QB 546.

[0078] In almost all cases, two-segment velocity profiles like profile 893 require both a larger range of velocities and higher accelerations of the given part of the robotic arm than would be required had the part just followed velocity profile 747. Referring to the illustrated example, the difference between switch velocity Qc 896 and exit velocity QB 546 is larger than the difference between entry velocity QA 544 and exit velocity QB 546 and the magnitudes of slopes of blend segments 894, 895 is larger than the slope of velocity profile 747 and the accelerations. Only if, by happenstance, the two-segment velocity profile were to overlay precisely on velocity profile 747 would that same range of velocities and identical accelerations be present. Because there are only two accelerations in two-segment velocity profiles (i.e., the acceleration between entry time tA and switch time tc and the acceleration between switch time tc and exit time ts), the search space of possible paths of the part of the robotic arm is reduced. Motion blending can be performed "on-the-fly" during movement of the robotic arm without introducing computational delays to the motion.

[0079] Example scenarios in which two-segment velocity profiles can be used to define blends for the part of a robotic arm are now provided.

[0080] FIG. 9 schematically represents different scenarios in which the part of the robotic arm is to enter and exit the blend 939 with identical speeds but in different directions. The first target path defines an entry position 943 and an entry velocity 944 at which the part on the first target path is to enter blend volume 940 with blend center point 942. The second target path defines an exit position 945 and an exit velocity 946at which the part is to exit blend volume 940 on the second target path. The line segments between positions 943, 945 and center point 942 define a plane, and a Cartesian reference frame is defined in this plane. Since the speeds associated with entry velocity 944 and exit velocity 946 are identical, the lengths of the arrows representing these velocities are identical. However, the directions have changed. The part of the robotic arm can traverse the blend along several different spatial paths with only two (almost always) different and constant accelerations. Three examples of blend paths 941a, 941b, 941c are illustrated. Path 941a corresponds to a scenario in which the duration of the blend has been shortened by accelerating and decelerating in the x-direction. This allows robot operations to be performed more rapidly. Path 941c corresponds to a scenario in which the duration of the blend is relatively long, and the part is decelerated after entering the blend but then accelerated before exiting. The duration of path 941c is longer than the durations of paths 941a, 941b, and the part has more time to decelerate and accelerate. Path 941b corresponds to a scenario in which there is neither acceleration nor deceleration in the x-direction within the blend. The duration of the blend is its "natural" duration in that the part neither accelerates nor decelerates within the blend in the x direction in the illustrated reference frame, i.e., there is no "speeding up to slow down" so that the blend can be traversed more quickly, nor is there any "slowing down to speed up" so that exit velocity and position are achieved despite a long blend duration. As discussed below, the absence of acceleration and deceleration in the x direction does not mean that acceleration and deceleration in the y direction are also absent. Instead, two constant accelerations are present.

[0081] FIG. 10 schematically represents a blend 1039 with blend volume 1040 and blend center point 1042. In the two-dimensional schematic representation, entry position Pi is a position vector in the illustrated Cartesian coordinate system:

[0082]

[0083] Entry velocity vi is a velocity vector in the same coordinate system:

[0084]

[0085] Exit position P2 is a position vector in the coordinate system:

[0086]

[0087] The exit velocity V2 is a velocity vector in the coordinate system:

[0088]

[0089] A first acceleration ai in the first blend segment of the blend, a first duration Ti of the first blend segment of the blend, a second acceleration 32 in the second blend segment of the blend, and a second duration T2 of the second blend segment of the blend can be calculated based on the entry position Pi, the exit position P2 , the entry velocity vi, and the exit velocity V2. In particular, the first acceleration ai, the first duration Ti, the second acceleration 32, and the second duration T2 are chosen such that the part of the robotic arm achieves the desired transition from the entry position and velocity to the exit position and velocity. A displacement vector Qpl-p2can give the displacement between the entry position Pi and the exit position P2:

[0090] Equation 7 QPi-P2 =Pz ~Pi

[0091] and a unit displacement vector epl-p2can be defined:

[0092]

[0093] The "natural" duration for the entire blend is then defined as the duration which requires the smallest velocity changes along the displacement direction. This definition has an important physical interpretation: the kinetic energy that existed in the motion before entering the blend will still exist in the motion after exiting the blend. The amount of "extra energy" that is added to the motion of the part of the robotic arm by applying torques within the duration of the blend is reduced. The average velocity Qpl-p2along the unit displacement vector can be expressed as:

[0094] Equation 9 Qpi-p2= ^(vi ■ epl-p2+ v2■ epl-p2)

[0095] The natural duration TN of the blend is then defined as:

[0096]

[0097] Please note that it may not always be possible or even desirable to achieve the "natural" blend duration in every circumstance. For example, for a given set of robot components with their dynamic constraints the blend volume may be too small to achieve the entry and exit conditions. If possible, blend volume can be increased. However, deviations from the "natural" blend duration may be unavoidable if blend volume is not increased. Further, in some cases, it may be desirable to "speed up" the blending and introduce accelerations that are above those that are strictly necessary were the blending to occur at its natural duration.

[0098] In some implementations, the "natural" blend duration can be used to guide motion planning and the search for blend segments. For example, the natural blend duration can serve as a first proposal for blend duration. The motion that would occur with the accelerations for first and second blend segments that are determined using the "natural" blend duration can be checked against the dynamic constraints of components of the robotic arm to determine whether the constraints are exceeded, orthe robotic arm is overloaded. If it is determined that this is the case, the "natural" blend duration can serve as a lower bound on the duration of the blend, and the search space can be limited to durations that exceed the "natural" blend duration.

[0099] In some implementations, the search space for the blend duration can be further limited by requiring that the blend duration be below a maximum blend duration, namely, shorter than the time that would be required to bring the part of the robotic arm to from the entry position at the entry velocity to the exit position at the exit velocity by following the first target motion segment and the second target motion segment without blending. In implementations that include waypoints, this will generally involve the part following the first target motion segment from the entry point to the waypoint, coming to a stop, and then following the second target motion segment from the waypoint to the exit point. As discussed further below, such a path can be used as a default that is guaranteed to achieve a safe trajectory, albeit without blending. Thus, the search for a blend duration is constrained to durations that that longer than the "natural" blend duration but shorter than the maximum blend duration.

[0100] In some implementations, both the "natural" and the maximum blend durations can be used to select one or more subsequent proposals for blend duration. For example, a time duration that is the average of the "natural" and the maximum blend durations can be used as a second proposal for a blend duration. Motion resulting from this second proposal can be checked against the dynamic constraints of the components of the robotic arm. If the constraints are still exceeded, then a third proposed blend duration that is between the second proposal and the maximum blend duration can be checked. If the dynamic constraints of components of the robotic arm cannot be satisfied after a certain number of proposals are checked, blending can be abandoned, and the motion planning candefault to following the first and second target motion segments without blending.

[0101] In some implementations, the time difference between the "natural" and the maximum blend durations is divided into thirds and the second proposal is selected from the middle third. This ensures that the second proposal differs sufficiently from the "natural" natural duration that overloads the robotic arm but yet is relatively shorter than the maximum blend duration such that blending is warranted.

[0102] In any case, positional, velocity, and acceleration components of the part along each of the illustrated paths in the indicated Cartesian reference frame are now described.

[0103] FIG. 11 is a schematic representation of profiles of examples of positional components 1197x, 1197y, of velocity components 1198x, 1198y, and of acceleration components 1199x, 1199y for path 941a in the Cartesian reference frame of FIG. 9. Profiles 1197y, 1198y, 1199y are in the Y direction whereas profiles 1197x, 1198x, 1199x are in the X direction of that reference frame. Positional component profiles 1197x, 1197y represent the position of the part over time, velocity component profiles 1198x, 1198y represent the velocity of the part over time, and acceleration component profiles 1199x, 1199y represent the acceleration of the part over time. Profiles 1197y, 1198y, 1199y, 1197x, 1198x, 1199x indicate that traversal of the blend by the part has been hastened by increasing and then decreasing velocity in the x direction while in the blend.

[0104] In more detail, acceleration component profile 1199y represents acceleration of the part in the y direction. As shown, the acceleration is a constant, negative value, consistent with the part entering the blend with a positive, upward velocity in the y direction that is reversed to exit the blend with a negative, downward velocity. This transition between a positive (here, upward) velocity and a negative (here, downward) velocity is reflected in velocity component profile 1198y, which starts at a velocitythat is above zero but then turns negative, i.e., the part reverses direction. Positional component profile 1197y shows the position of the part during this time. When the velocity of the part is at its highest value entering the blend, positional profile 1197y shows a rapid upward increase. However, the rate of positive increase decreases and eventually reverses. The transition is parabolic, reflecting the constant acceleration.

[0105] Acceleration component profile 1199x represents acceleration of the part of the robot arm in the x direction. As shown, the acceleration has two values within the blend, namely, a positive value between entry time tA and switch time tc and a negative value between switch time tc and exit time te. Although the directions of these accelerations differ, their magnitudes do not change during their respective segments.

[0106] This transition between a positive acceleration and a negative acceleration (deceleration) is reflected in the velocity component profile 1198x. In particular, during the time when the acceleration of the part has a positive value, the velocity of the part in the x direction increases. However, when the acceleration of the part has a negative value, the velocity of the part in the x direction decreases.

[0107] This transition between a positive acceleration and a negative acceleration (deceleration) is also reflected in position component profile 1197x. The rate of change of the position component reaches its highest value at switch time tc but then decreases as the end of the blend is approached.

[0108] As discussed above, profiles 1197y, 1198y, 1199y, 1197x, 1198x, 1199x indicate that traversal of the blend by the part has been hastened by increasing and then decreasing velocity in the x direction, as represented by position component profile 1197x. In particular, if the velocity in the x direction that is represented in position component profile 1197x were not changed, then position component profile 1197x would remain a straight line. Acceleration component profile 1199x would remain at a zero value, and the duration of the blend (i.e., the timebetween entry time tA and exit time te) would be increased. However, so long as the (negative) magnitude of acceleration component profile 1199y remains within the operational range of the robot arm, the robot can "afford" to shorten the duration of the blend and robot operations can be performed more rapidly. In effect, the part of the robotic arm "speeds up" during the first segment of the blend only to "slow down" during the second.

[0109] In implementations in which the switch time tc occurs in the middle of the blend duration and the magnitudes of the entry and exit velocities are identical, the positive acceleration and the negative acceleration (deceleration) are equal in magnitude but opposite in direction. However, the switch time tc need not occur at the middle of the blend duration. In this case, the acceleration components of the first blend segment and the second blend segment will not be equal with opposite sign even though the magnitudes of the entry and exit velocities are identical. In such cases, the product of the component of the acceleration between entry time tA and switch time tc is opposite to the product of the component of the acceleration between switch time tc and exit time te when the entry velocity and exit velocity are identical. In situations where the entry velocity VA and the exit velocity VB are different, then the sum of the product of the component of the first constant acceleration ai and the time Ti between entry time tA and switch time tc and the product of the component of the second acceleration a2 and the time T2 between the switch time tc and the exit time ts corresponds to the velocity difference between the exit velocity VB and entry velocity VA. Mathematically this can be expressed as:

[0110] Equation 11 vB- vA= a1- T1+ a2- T2

[0111] where Ti can be found as the difference between the switch time and the entry time, mathematically Ti = tc-ta; and T2 can be found as the difference between the exit time and the switch time mathematically T2 = tb-tc.Choosing the velocity at switch time Tcmakes it possible to ensure the desired entry position and exit position are met.

[0112] FIG. 12 is a schematic representation of profiles of examples of positional components 1297x, 1297y, of velocity components 1297x, 1298y, and of acceleration components 1299x, 1299y for path 941b in the Cartesian reference frame of FIG. 9. Profiles 1297x, 1298x, 1299x, 1297y, 1298y, 1299y indicate that the blend is traversed by a part that does not change the component of velocity in the X direction during traversal. The duration of blend can be described as the "natural" duration of the blend.

[0113] Acceleration component profile 1299x represents zero acceleration of the part of the robot arm in the X direction. Velocity component profile 1298x remains unchanged throughout the blend, as does the rate of change of position component profile 1297x.

[0114] However, acceleration component profile 1299y represents that acceleration in the Y direction has a constant, negative value during the blend, Once again, the part entering the blend with a positive, upward velocity in the Y-direction that is reversed to exit the blend with a negative, downward velocity, as reflected in velocity component profile 1298y, which starts at a velocity that is above zero but then turns negative, i.e., the part reverses direction. Positional component profile 1297y again shows a parabolic transition, reflecting the constant acceleration.

[0115] Profiles 1297x, 1298x, 1299x, 1297y, 1298y, 1299y indicate that the duration of the blend is it's "natural" duration. The part neither accelerates nor decelerates within the blend in the x direction. All of the momentum of the part in the x direction is preserved. Wear-and-tear on the robot actuators and energy consumption is reduced.

[0116] FIG. 13 is a schematic representation of profiles of examples of positional components 1397x, 1397y, of velocity components 1398x, 1398y, and of acceleration components 1399x, 1399y for path 941c in the Cartesian reference frame of FIG. 9. Profiles 1397x, 1398x, 1399x,1397y, 1398y, 1399y indicate that the duration of the blend is longer than the natural duration and by the part must be first slowed down and then speeded up to reach the desired exit conditions.

[0117] Acceleration component profile 1399x shows that acceleration of the part of the robot arm in the x direction has two values within the blend, namely, a negative value (deceleration) between entry and switch time tc and a positive value between switch time tc and exit. Although the directions of these accelerations differ, their magnitude does not. Thus, the magnitude of acceleration to which the part is subject remains unchanged.

[0118] This transition between a negative acceleration (deceleration) and a positive acceleration in the x-direction is reflected in the velocity component profile 1398x. In particular, during the time when the acceleration of the part has a negative value, the velocity of the part in the x direction decreases. However, when the deceleration of the part ends and the part again accelerates, the velocity of the part in the x direction increases. Please note that although the velocity of the part in the x direction decreases during the blend duration, it does not reach zero (indicated by a dashed line). Some portion of the momentum of the part in the x direction that is present at entry into the blend is preserved.

[0119] This transition between a positive acceleration and a negative acceleration (deceleration) is also reflected in position component profile 1397x. The rate of change of the position component reaches its lowest value at switch time tc but then increases as the end of the blend is approached.

[0120] In addition to path 941c, FIG. 14 schematically represents two additional blend paths 1441d, 1441e along which the part can enter and exit the blend volume 940 with identical speeds but in different directions. Blend paths 941a and 941b illustrated in FIG. 9 have been omitted for simplicity. FIG. 15 is a schematic representation of profiles of velocity components 1398x, 1598xd, 1598xe for those paths in the x direction.As before, velocity component 1398x represents the component of the velocity of the part of the robotic arm in the x direction along path 941c. Velocity component 1598xd represents the component of the velocity of the part in the x direction along path 1441d and velocity component 1598xe represents the component of the velocity of the part in the x direction along path 1441e.

[0121] For all three paths 941c, 1441d, 1441e, traversal of the blend by the part of the robotic arm must be slowed so that the part has sufficient time within the blend to reach the desired exit conditions without exceeding dynamic constraints and component specifications. Path 941c has been discussed above. For path 1441d, velocity component 1598xd in the x direction reaches zero at the center point 942 and the switch time tc. The velocity component in the y direction for path 141d also reaches zero at the same time and the part follows the line segments between positions 943, 946 and center point 942, coming to a full stop at center point 942. For path 1441e, velocity component 1598xe in the x direction reaches zero after reaching the other, exit side (in the x-direction) of center point 942. Velocity component 1598xe is negative as the part returns to a position on the entry side (in the x-direction) of center point 942. Path 1441e thus loops backward and more distance and time is available for the part to reach the desired exit conditions while remaining within blend. In effect, the duration of the blend is too long relative to the natural duration, and undesired motion occurs within the blend.

[0122] FIG. 16 schematically represents a blend 1639 where a part of a robotic arm can enter the blend volume 1640 with one, relatively lower speed on a first target path but exit with another, relatively higher speed on a second target path, again in different directions. The first target path defines an entry position 1643 and an entry velocity 1644 at which the part on the first target path is to enter blend volume 1640. The second target path defines an exit position 1645 and an exit velocity 1646at which the part is to exit blend volume 1640 on the second target path. With certain target paths that are defined in Cartesian space, the dashed line segments between positions 1643, 1645 and center point 1642 of the blend volume 1640 define a plane, and a Cartesian reference frame is defined in this plane. Since the speeds associated with entry velocity 1644 and exit velocity 1645 differ, the lengths of the arrows representing these velocities differ. However, center point 1642 remains the intersection of the direction of travel along the first target path when entering blend volume 1640 and the direction of travel along the second target path when exiting blend volume 1640 and center point 942 can be a waypoint on both target paths. Further, as shown, the line segment joining exit position 1645 and center point 1642 can be extended.

[0123] As with the paths described above, the time duration between entry time tA and switch time tc is equal to the time duration between switch time tc exit time te. However, because entry velocity 1644 is lower than exit velocity 1646, switch time tc occurs when the part is closer to entry position 1643. For didactic purposes, switch time tc is denoted with a switch position dot 1648 that separates a first blend segment 1694 from a second blend segment 1695.

[0124] As shown, during the first segment 1694, the part of the robotic arm moves (in the Y direction) further away from exit position 1645 than it was at entry position 1643. As a result, more distance and time is available for the part to reach the desired exit conditions while remaining within blend. This movement away from exit position 1645 can be characterized by the intersection 1649 of the velocity vector of the part of the robotic arm at switch time tc 1648 with the extension of the line segment that joins exit position 1645 and center point 1642, rather than with the line segment itself. The movement of the part of the robotic arm to the side of the dashed line segment between position 1643 and center point 1642 that is opposite the side of exit position 1645 can be referred to as a "kick out" of the part of the robotic arm.FIG. 17 is a schematic representation of profiles of the velocity component 1798y in the y direction and the acceleration component 1799y in the y direction for the first blend segment 1694 and the second blend segment 1695 in which the part of the robotic arm moves in the y direction further away from the exit position than it was at entry position.

[0125] As shown, the component of the entry velocity in the y direction is initially slightly above zero. However, rather than starting to drop immediately, the component of velocity in the y direction initially increases, consistent with the slight positive acceleration of acceleration component 1799y. However, at the switch time tc, the acceleration component 1799y in the y direction drops to a large, negative value. The large negative value of the acceleration component 1799y after switch time tc may represent the largest possible negative value that does not exceed dynamic constraints and component specifications (or is within some safe operating margin thereof).

[0126] As discussed above, the switch time tc occurs in the middle of the blend duration and the part of the robotic arm follows a path that "kicks out." In some implementations, the "kick out" may be undesirable. In some implementations, it may be desirable to shift switch time tc within the duration of the blend to reduce or remove "kick out."

[0127] In these and other cases, motion planning amounts to a search process that identifies both the duration of the blend and the timing of the switch time tc within that duration. Further, the motion that results from a proposed duration and switch times can be checked to ensure that dynamic constraints on the components of the robotic arm are not exceeded.

[0128] In some implementations, the planning of the blend can be proceeded in a stepwise fashion. The processor that is planning the path in the blend can first determine a blend duration for which entry and exit conditions are satisfied with a switch time tc occurring in the middle of the blend duration. If a blend segment that is calculated in this way"kicks out," then the processor can shift the switch time tc within the blend duration to reduce or eliminate the "kick out." Although additional computation is needed to determine the shifted switch time tc, the computations are guided by the blend duration, and the search space is limited.

[0129] FIGS. 22 and 23 are schematic representations of blends in which kick out has been reduced and eliminated. In particular, the switch time tc has been shifted within the switch duration such that the time duration between entry time tA and switch time tc is greater than the time duration between switch time tc exit time te.

[0130] In more detail, FIG. 22 schematically represents a blend 2239 where a part of a robotic arm can enter the blend volume 2240 with one, relatively lower speed on a first target path but exit with another, relatively higher speed on a second target path, again in different directions. The first target path defines an entry position 2243 and an entry velocity 2244 at which the part on the first target path is to enter blend volume 2240. The second target path defines an exit position 2245 and an exit velocity 2246 at which the part is to exit blend volume 2240 on the second target path. With certain target paths that are defined in Cartesian space, the dashed line segments between positions 2243, 2245 and center point 2242 of the blend volume 2240 define a plane, and a Cartesian reference frame is defined in this plane. Since the speeds associated with entry velocity 2244 and exit velocity 2246 differ, the lengths of the arrows representing these velocities differ.

[0131] The time duration between entry time tA and switch time tc is longer than the time duration between switch time tc exit time te. The switch time Tccontrols where the switch position occurs. For instance, in the illustrated example, the switch position 2248 is further away from the entry position 2243 that it would be were switch time tc at the middle of the blend duration. In other words, the longer duration of the first blendsegment 2294 allows more distance to be covered between entry and the switch point.

[0132] As shown, during the first segment 2294, the part of the robotic arm moves along the line segment that joins entry position 2243 and center point 2242.

[0133] With the duration of first segment 2294 being increased, less time is available for the part to reach the desired exit conditions while remaining within blend and higher accelerations are required in second segment 2295.

[0134] FIG. 23 is a schematic representation of profiles of the velocity component 2398y in the y-direction and the acceleration component 2399y in the y-direction for the first blend segment 2394 and the second blend segment 2395 in which the part of the robotic arm moves in the y-direction further away from the exit position than it was at entry position.

[0135] As shown, the component of the entry velocity in the y direction is initially slightly above zero. However, rather than starting to drop immediately, the component of velocity in the y direction initially increases, consistent with the slight positive acceleration of acceleration component 2399y. However, at the switch time tc, the acceleration component 2399y in the y direction drops to a large, negative value. The large negative value of the acceleration component 2399y after switch time tc may represent the largest possible negative value that does not exceed dynamic constraints and component specifications (or is within some safe operating margin thereof) and is larger than would be needed if first blend segment 2394 had a larger kick-out. Kick-out has been eliminated with the disadvantage of larger accelerations being required in the second segment of the blend.

[0136] A similar effect will occur in situations where the entry velocity is higher than the exit velocity, where the "kick-out" will appear on the exit side of the blend instead. This kind of kick out can be avoided by reducing the duration of the first blend segment.FIG. 18 is a schematic representation of another circumstance in which the target paths of motion of a robotic arm are combined, namely, in a blend 1839 where the robot arm is to transition from following a first target path to a second target path. In blend 1839, the direction of travel along the first target path when entering the blend volume does not intersect the direction of travel along the second target path, as the case were in blend 539 illustrated in fig. 5. For example, when the first target path and the second target path are defined as multi-dimensional motions which do not share a way-point, then a blend volume may be defined such that both the first target path and second target path have their closest approach to one another within a blend volume, such the entry position and exit position can be defined. In this situation, the two-segment blend method described above can also be used to create a first blend segment and a second blend segment. Consequently, nonintersecting target motions that do not share a waypoint can also be blended.

[0137] In these circumstances, a blend volume may be relevant to only a single target path or irrelevant for both. For example, one of the target paths may be defined in Cartesian space and end at a waypoint. In this case, the blend volume is relevant to identifying where departures from that target path are acceptable. However, if one or both of the target paths are defined in joint space, then the blend volume is not relevant to these paths. Rather, the blending occurs in joint space with the dynamic constraints of the components of the robotic arm as limits.

[0138] With this in mind, the schematic representation includes a spherical volume 1840 that may be suited for determining, e.g., where departures from one of the target paths are acceptable. As before, the first target path defines an entry position 1843 and an entry velocity 1844 at which a part of the robotic arm on the first target path enters volume 1840. Entry position 1843 is schematically represented as a circle on the surface of the volume 1840 and entry velocity 1844 is schematically representedas an arrow that defines a direction and speed via its length. However, in an attempt to better illustrate a three-dimensional circumstance in two-dimensions, the incidence 1851 of the vector of entry velocity 1844 on the other side of volume 1840 is also schematically represented as a circle. Similarly, the second target path defines an exit position 1845 and an exit velocity 1846 at which a part of the robotic arm on the first target path is to exit volume 1840. The incidence 1852 of the vector of exit velocity 1846 on the other side of volume 1840 is also schematically represented as a circle.

[0139] The line segment between entry position 1843 and incidence 1852 and the line segment between exit position 1845 and incidence 1852 do not intersect and there is no center point as such of volume 1840. However, a displacement vector QPI-P2 is defined by entry position 1843 and exit position 1845. Blending is performed with an eye to preserving as much of the momentum of the part along the direction of displacement vector QPI-P2 as possible. In other words, the processor which is performing motion planning seeks to determine a natural blend duration along the direction of the displacement vector QPI-P2. Momentum changes in directions that are perpendicular to that displacement vector QPI-P2 are un-avoidable but still affected by changes in durations of the first blend segment and the second blend segment. Nevertheless, some amount of the inertia that is present in the first target motion segment is preserved for the second target motion segment.

[0140] Because the duration of the blend is constrained by the blending that involves the displacement vector QPI-P2 with an eye to preserving momentum along that vector, achieving the component of the entry velocity 1844 and the exit velocity 1846 outside of the displacement vector Qpi-P2 will generally require that the part of the robotic arm either "speed up to slow down" or "slow down to speed up."

[0141] FIG. 19 is a schematic representation of the "speed up to slow down" scenario for the blending between entry point 1843 and the exit point1845 and illustrates a velocity component 1998 and an acceleration component orthogonal to the displacement vector Qpi-p2,the entry velocity 1844 and the exit velocity 1846. Profiles 1998 and 1999 indicate that during the blend the part of the robotic arm has been hastened by increasing and then decreasing velocity orthogonal to the displacement vector QPI-P2,. In particular, during the first blend segment of the blend, the part of the robotic arm is accelerated (as shown in acceleration component profile 1999) and the velocity of that part increases (as shown in velocity component profile 1998). During the second blend segment of the blend, the part of the robotic arm is decelerated and the velocity of that part decreases. These changes in momentum are necessary to ensure that the part of the robotic arm can satisfy zero displacement requirement outside the displacement vector QPI-P,2 while the corresponding velocity components undergo necessary changes to satisfy the entry and exit conditions.

[0142] The approach illustrated in FIGS. 18, 19 has applications in contexts outside of blending near waypoints. For example, it is often desirable to merge paths in contexts such as robot teaching, path following and others. A position and velocity of a part of the robotic arm during a first operation or movement can be merged with the position and velocity of that part in a second operation or movement so that the robotic arm can smoothly transition between the operations or movements. The operations or movements that are to be merged need not intersect or even reach a volume that is relatively small in relation to the operations or movements that are being merged. Nevertheless, rapid and even on-the-fly computation of a path that achieves such transitions can be achieved. With this in mind, although the terminology used elsewhere in the application consistently refers to blending and items like "blend duration" and "blend segments," the same approaches can be applied in contexts that do not, strictly speaking, require blending as such.FIG. 20 is a schematic representation of profiles of examples of positional components 1197x, 2097, of velocity components 1198x, 2098, and of acceleration components 1199x, 2099y of two different blend paths. Profiles 1197x, 1198x, 1199x illustrate the x direction components in the Cartesian reference frame of blend path 941a illustrated and described in FIGS. 9, 11. Profiles 1197x, 1198x, 1199x are hypothetical and include discontinuous, instantaneous changes in velocity that are not achieved in the real-world.

[0143] However, profiles 2097, 2098, 2099 (in dashed lines) illustrate those x direction components when they are modified to reflect the time required to achieve real-world changes in velocity. Like hypothetical profiles 1197x, 1198x, 1199x, real-world profiles 2097, 2098, 2099 are shown in the Cartesian reference frame of blend path 941a, illustrated in FIG. 9. However, the real-world blend path that includes an entry transition blend segment before the first blend segment, a switch transition blend segment between the first blend segment and the second blend segment and an exit transition blend segment after the second blend segment. The transition blend segments not only reflect the physical reality, but also protect the components of the robotic arm. As discussed above, joints, links, motors, and other components are subject to dynamic constraints. These dynamic constraints can be reflected in "jerk limits" that limit how fast acceleration can be changed. The motion planning described herein can be performed at the jerk limits or within a safety margin of the jerk limits.

[0144] The real-world acceleration component 2099 comprises an entry transition blend segment with increasing acceleration from 0 to a'o in the period between the entry time TA and an entry transition blend time TAI, a first blend segment with constant acceleration a'oin the period between the entry transition blend time TAI and a first switch transition blend time Tci, a switch transition blend segment with decreasing acceleration from a'o to -a'o in the period between the first switch transition blend time Tciand a second switch transition blend time Tc2, a second blend segment with constant acceleration -a'oin the period between the second switch transition blend time Tc2 and an exit transition blend time TBI, and an exit transition blend segment with increasing acceleration from -a'o to 0 in the period between the exit transition blend time TBI and the exit time TB. In all of the transitional segments, jerk is limited.

[0145] Comparing the hypothetical acceleration ao of profile 1199x and the real-world acceleration a'o of profile 2099, the magnitude of the real-world acceleration a'o is larger than the magnitude of the hypothetical acceleration ao. The durations of the blend segments with constant acceleration in real-world acceleration profile 2099 are shorter than the corresponding blend segments with constant acceleration of hypothetical profile 1199x. Further, the accelerations during the transitional segments are (for the most part) lower than acceleration ao of hypothetical profile 1199. Nevertheless, profile 2099 achieves the desired exit position and exit velocity. This can be seen by comparing the hypothetical velocity profile 1198x with discontinuous changes in acceleration with the real-world velocity profile 2098 where the first and last part of the blend the real-world velocity is lower than the hypothetical velocity and in the middle part of the blend the real-world velocity is higher than the hypothetical velocity. Both velocity profiles start and end at velocity vi.

[0146] For jerk limits that are constant, the real-world velocity profile 2098 is constant at vi until time TA where the blend starts, increases quadratically in the period TA to TAI, increases linearly in the period TAI to Tci, decreases quadratically in the period Tci to Tc2, decreases linearly in the period Tc2 to TBI and decreases quadratically in the period TBI to TB and continues at constant velocity vi after the blend ends at time TB.

[0147] Still assuming constant jerk limits, the real-world position profile 2099 shows that the position (in the x direction) changes linearly until position pi at time TA where the blend starts, changes cubically in the period TA to TAI, changes quadratically in the period TAI to Tci, changescubically in the period Tci to Tc2, changes quadratically in the period Tc2 to TBI and changes cubically in the period TBI to TB and reaches position P2 whereafter the position changes linearly after the blend. In some implementations, jerk limits are not constant and other profiles will be a result.

[0148] FIG. 21 illustrates a schematic representation of profiles of examples of positional components 1197y, 2197, of velocity components 1198y, 2198, and of acceleration components 1199y, 2199 of two different blend paths. Profiles 1197y, 1198y, 1199y illustrate the y direction components in the Cartesian reference frame of hypothetical blend path 941a and profiles 2197, 2198, 2199 (in dashed lines) illustrate a real world blend path. It is to be understood that similar component profiles can be applied to other axes orthogonal to the displacement vector. The real-world blend path includes transition blend segments before the first blend segment and second blend segment. In this example, the acceleration of the first blend segment and the second blend segments are the same, and there is no transition segment between the first blend segment and the second blend segment. However, in other situations such a transition blend segment may be needed. The modified acceleration component 2199 comprises an entry transition blend segment with gradually decreasing acceleration from 0 to a'yin the period between the entry time TA and an entry transition blend time TAI, a first blend segment with constant acceleration -a'yin the period between the entry transition time TAI and the switch time Tc, a second blend segment with constant acceleration -a'yin the period between the switch time Tc and an entry transition blend time TBI, and a second transition blend segment with gradually increasing acceleration from -a'yto 0 in the period between the exit transition blend time TBI and the exit time TB. In the first transitional segment the jerk is limited, and the acceleration is changing linearly with a slope corresponding to a constant jerk. In the y-direction there is no change in acceleration between the first blendsegment and second blend segment and thus there is no need for a transition blend segment between the first blend segment and the scend blend segment.

[0149] In the examples illustrated in FIG, 20 and FIG. 21 the accelerations of the part of the robotic arm at the entry position and the exit position are zero, however it is to be understood that the accelerations of the part of the robotic arm at the entry position and the exit position also can have other values. In such situation the acceleration of the part of the robotic arm changes from the acceleration at the entry position to first constant acceleration during the entry transitional blend segment, and from second constant acceleration to the acceleration at the exit during the exit transitional blend segment.

[0150] As described above, by determining a blend duration and accelerations to be applied during the blend duration, the search space of possible trajectories is reduced. Even if the switch transition time is to be shifted away from the middle of the blend duration, the search space may be small enough that motion planning can occur on-the-fly, during movement of the robotic arm.

[0151] However, for a given set of entry and exit conditions, an initial search may not suffice to arrive at a blend duration and accelerations that do not exceed the dynamic constraints imposed by the links, joints, motors, and other components of the robotic arm. The initial search may yield a blend that is unsafe or a blend that results in undesirable wear-and-tear and fatigue of components like gears.

[0152] As discussed above, to avoid an unsafe or even unduly taxing blend, an initial search can be repeated, for example, with a longer blend duration. In some implementations, searches can be repeated multiple times, with successively longer blend durations. In some implementations, if motion segments cannot be blended after a certain number of searches (for example, two), the robotic arm can default to a fall-back strategy inwhich entry and exit motions are planned with a full-stop at a waypoint. Using this approach, the robot will always be able to achieve a safe trajectory, or a trajectory that does not unduly burden the components of the robotic arm. A variety of different approaches can be used to determine whether the calculated motion segments of a blend exceed the dynamic constraints of the components of a robotic arm.

[0153] For example, in implementations where target motions that are defined in joint space are to be blended, torque limits of the components of a robotic arm can be converted into duration limits using dynamic equations. For each combination of position, velocity and acceleration (in, e.g., 6D), it is possible to convert an inequality: torque_min< dynamic_torque<torque_max into intervals of blend duration. In many cases, the permitted intervals of blend duration are likely to straddle the natural blend duration, but this is not always the case. In some implementations, such duration intervals can be used to constrain the search space in that they indicate where the duration of the blend is permitted to be, rather than used for checking the success or failure of a given calculated motion segments.

[0154] In implementations where target motions that are defined in Cartesian space are to be blended, it is generally preferable to first calculate motion segments of a possible blend and then check whether the calculate motion segments satisfy the dynamic constraints of the components of the robotic arm.

[0155] in implementations where a target motion that is defined in Cartesian space is to be blended with a target motion that is defined in joint space, it is generally preferable to convert the target motion defined in Cartesian space into joint space and then use the duration intervals that are determined from torque limits to constrain the search space. As described above, the entry / exit conditions can be calculated from the intersection of the target motion defined in Cartesian space with a blend volume prior to the conversion of that target motion into joint space.Although the blending described above generally occurs in joint space, it is also possible that blending occurs in Cartesian space. For example, the translational and rotational degrees of freedom of a target motion defined in Cartesian space can be split and treated separately. The translations are blended in the same way as if they are in joint space. However, the rotations are interpolated from the entry to the exit. One approach to interpolating the rotations between two sets of orientations uses spherical linear interpolation (SLERP). Alternatively, a two-segment interpolation of part rotations can be implemented using a variety of representations of rotations, such as: quaternions, Euler angles, Roll-Pitch-Yaw angles, angle-axis. The orientation (or rotations) can be represented in a variety of different ways, e.g., Euler angles, RPY angles, angle-axis, etc.

[0156] The described systems, methods, and techniques may be implemented in digital electronic circuitry, computer hardware, firmware, software, or combinations of these elements. Apparatus implementing these techniques may include appropriate input and output devices, a computer processor, and a computer program product tangibly embodied in a machine-readable storage device for execution by a programmable processor. A process implementing these techniques may be performed by a programmable processor executing a program of instructions to perform desired functions by operating on input data and generating appropriate output. The techniques may be implemented in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device.

[0157] Each computer program may be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language if desired; and in any case, the language may be a compiled or interpreted language. Suitable processors include, by wayof example, both general and special purpose microprocessors. Generally, a processor will receive instructions and data from a read-only memory and / or a random access memory. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and Compact Disc Read-Only Memory (CD-ROM). Any of the foregoing may be supplemented by, or incorporated in, specially designed ASICs (application-specific integrated circuits).

[0158] The following table sets forth reference numbers used herein.

[0159]

[0160]

[0161]

[0162]

[0163] A number of implementations have been described. Nevertheless, it is to be understood that various modifications may be made. The scope of protection is defined by the claims.

Claims

CLAIMS1. A method of controlling a robotic arm, where the robotic arm comprises a plurality of robot joints (102a-102f) connecting a robot base (103) and a robot tool flange (104i), the method comprising:receiving-an entry position and an entry velocity of a first target motion segment, and-an exit position and an exit velocity of a second target motion segment, wherein the first target motion segment and the second target motion segment define motion of a part of the robotic arm;based on the entry position, the entry velocity, the exit position, and the exit velocity, determining a blend duration, wherein the blend duration is the difference between an entry time that the part of the robotic arm moving on the first target motion segment is at the entry position and an exit time that the part of the robotic arm moving on the second target motion segment is at the exit position; andfor the determined blend duration, determining-a first constant acceleration to be applied between the entry time and a switch time, and-a second constant acceleration to be applied between the switch time and the exit time,wherein the switch time occurs within the blend duration and application of the first constant acceleration and the second constant acceleration to the part of the robotic arm defines a path that transitions the part of the robotic arm from the entry position and the entry velocity to the exit position and the exit velocity.

2. The method of claim 1, wherein the method further comprises:receiving the first target motion segment and the second targetmotion segment; anddetermining, based on intersection of the first target motion segment and the second target motion segment with a volume, the entry position, the entry velocity, the exit position, and the exit velocity.

3. The method of claim 2, wherein the first target motion segment and the second target motion segment are defined in Cartesian space and the volume is a blend volume within which the first target motion segment and the second target motion segment are to be blended.

4. The method of any one of claims 2-3, wherein the volume is received from a robot program that defines movements of the robotic arm.

5. The method of any one of claims 2-4, wherein the blend volume is defined based on a tolerance for positional deviations in positions of the robotic arm.

6. The method of any one of the preceding claims, wherein determining the blend duration comprises determining a natural blend duration that achieves the smallest velocity changes along a direction of a displacement between the entry position and the exit position.

7. The method of claims 6, wherein determining the blend duration comprises:determining whether a blend at the natural duration overloads or exceeds dynamic constraints of components of the robotic arm; and in response to determining that a blend at the natural duration overloads or exceeds dynamic constraints of component of the robotic arm, determining that the blend duration exceeds the natural duration.

8. The method according to any one of claim 6 or 7, further comprising:determining a maximum blend duration, where the maximumblend duration is time required to bring the part of the robotic arm to from the entry position at the entry velocity to the exit position at the exit velocity along the first target motion segment and the second target motion segment without blending.

9. The method of claim 8, wherein determining the blend duration comprises determining the blend duration to be between the natural duration and the maximum duration, for example, wherein the blend duration blend duration is determined to be in a middle third of a difference between the natural duration and the maximum duration.

10. The method of any preceding claim, wherein determining the blend duration comprises constraining a range of possible blend durations based on dynamic constraints of components of the robotic arm and determining the blend duration within the range.

11. The method of any preceding claim, wherein the sum of a product of the first constant acceleration and the time between entry time and switch time and a product of the second constant acceleration and the time between the switch time and the exit time corresponds to the velocity difference between the exit velocity and entry velocity.

12. The method of any preceding claim comprises selecting a velocity at the switch time such that that the entry position and the exit position are satisfied.

13. The method of any preceding claim, wherein:the first target motion segment and the second target motion segment intersect at an intersection point, and optionally wherein the intersection is a waypoint defined in a robot program that defines movements of the robotic arm.

14. The method of claim 13, comprising a determining a volume referenced to the intersection point, and optionally wherein the volume is a blend volume, for example, a sphere.

15. The method of any preceding claim, wherein the first target motion segment and the second target motion segment define motion of the tool flange of the robotic arm.

16. The method of any preceding claim, wherein determining the blend duration comprises:determining, for a proposed blend duration, that either a first proposed constant acceleration or a second proposed constant acceleration requires that a dynamic constraint of the robotic arm be exceeded; andin response to the determination that exceeding the dynamic constraint is required for a proposed blend duration, proposing a second proposed blend duration, wherein the second proposed blend duration is longer than the proposed blend duration.

17. The method of any preceding claim, wherein the first target motion segment and the second target motion segment do not intersect.

18. The method of claim 17, further comprising:defining a displacement vector between the entry position and the exit position, wherein the first constant acceleration and the second constant acceleration are selected to ensure the natural blend duration along the displacement vector.

19. The method of any preceding claim, wherein the switch time does not occur at a middle of time between the entry time and the exit time.

20. The method of any preceding claim, further comprising determining at least one of:a first switch transition blend time to be applied between the entry time and the switch time and a second switch transitionblend time to be applied between the switch time and the exit time;an entry transition blend time to be applied between the entry time and the switch time or the first switch transition blend time; andan exit transition blend time to be applied between the switch time and the exit time or the second first switch transition blend time;and wherein at least one of:the acceleration of the part of the robotic arm is changed from an entry acceleration to the first constant acceleration between the entry time and the entry transition blend time;wherein the acceleration of the part of the robotic arm is changed from the first constant acceleration to the second constant acceleration between the first switch transition blend time and the second switch transition blend time;wherein the acceleration of the part of the robotic arm is changed from the second constant acceleration to an exit acceleration between the exit transition blend time and the exit time.

21. The method of any preceding claim, comprising: determining, for a proposed blend duration in which a proposed switch time occurs at a middle of time between the entry time and the exit time, that-a first proposed constant acceleration or a second proposed constant acceleration requires that a dynamic constraint of the robotic arm be exceeded, or-a path planned using the first proposed constantacceleration or the second proposed constant acceleration kicks out; andin response to the determination, shifting the proposed switch time.

22. The method of any preceding claim, wherein the first constant acceleration and the second constant acceleration are determined based on a jerk limit of a component of the robotic arm.

23. The method of any preceding claim, further comprising moving the robotic arm by applying the first constant acceleration between the entry time and a switch time and applying the second constant acceleration between the switch time and the exit time.

24. A method of controlling a robotic arm, where the robotic arm comprises a plurality of robot joints (102a-102f) connecting a robot base (103) and a robot tool flange (104i), the method comprising:obtaining (450) a first position and a first velocity, where said first velocity indicate the velocity of a part of said robotic arm at said first position;obtaining (455) a second position and a second velocity, where said second velocity indicate the velocity of a part of said robotic arm at said second position;generating (470) a target motion (M) for said part of said robotic arm, where said target motion starts at said first position at said first velocity and ends at said second position at said second velocity.characterized in that said method comprises the steps of: obtaining (460) a first acceleration; a first time period; a second acceleration and a second time period based on said first position, said second position, said first velocity and said second velocity;wherein said step of generating said target motion comprises: generating (471) a first blend segment, where said part of said robotic arm accelerates at said first acceleration and the said first blendsegment has a duration of said first time period; andgenerating (472) a second blend segment, where said part of said robotic arm accelerates at said second acceleration and the said second blend segment has a duration of said second time period.

25. The method according to claim 24, wherein at least one of said first acceleration, said first time period, said second acceleration and said second time period is obtained based on at least one robot motion restriction parameter, where said robot motion restriction parameter indicates at least one motion restriction of said robotics arm.

26. The method according to any one of claims 24-25, wherein at least one of said first position, said second position, said first velocity and said second velocity are based on a robot program defining movements of said robotic arm.

27. The method according to any one of claims 24-26, wherein said method comprise a step of generating at least one motor control signal for at least one joint motor of said robot joints based on said first blend segment and said second blend segment.

28. The method according to claim 27, wherein said at least one motor control signal causes said part of said robotic arm to accelerate at said first acceleration for said first time period and thereafter to accelerate at said second acceleration for said second time period.

29. The method according to any one of claims 24-28, wherein the sum of a product of the first constant acceleration and the first time period and a product of the second constant acceleration and the second time period corresponds to the velocity difference between the second velocity and the first velocity.

30. The method according to any one of claims 24-29, wherein said step of generating said target motion comprises further comprises generating at least one of:- an entry transition blend segment, wherein the acceleration of the part of the robotic arm is changed from an entry acceleration to the first constant acceleration;- a switch transition blend segment, where the acceleration of the part of the robotic arm is changed from the first constant acceleration to the second constant acceleration; and- an exit transition blend segment, where the acceleration of the part of the robotic arm is changed from the second constant acceleration to an exit acceleration.

31. A robot controller (110) for controlling a robotic arm (101), where said robotic arm comprises a plurality of robot joints (102a-102f) connecting a robot base (103) and a robot tool flange (104i), where said robot joints comprises a joint motor configured to move said output flange in relation to a robot joint body, said robot controller comprises a motion planner module (230) configured to plan motion of the robotic arm and a motor controller module (232) configured to generate the at least one motor control signal (223a-223f) for said joint motors based said planned motion (M), characterized in that said motion planner is configured to generate a first motion segment and a second motion segment, where a part of the robotic arm in said first motion segment accelerates at a first acceleration for a first time period and in the second target motion segment accelerates at a second acceleration for a second period of time.

32. A robot controller (110) for controlling a robotic arm (101), where said robotic arm comprises a plurality of robot joints (102a-102f) connecting a robot base (103) and a robot tool flange (104i), where said robot joints comprises a joint motor configured to move said output flange in relation to a robot joint body, said robot controller comprises a motion planner module (230) configured to plan motion of the robotic arm and a motor controller module (232) configured to generate the at least one motor control signal (223a-223f) for said joint motors based said planned motion, wherein said robot controller is characterized in that said motion planner module is configured to plant the motion based on the method according to any one of claims 1-23 or the method according to any one of claims 24-30.

33. A non-transitory computer-readable medium that stores software comprising instructions executable by one or more computers which, upon such execution, cause the one or more computers to perform operations comprising the method according to any one of claims 1-23 or the method according to any one of claims 23-30.