Operation path setting device and program

JPWO2024095827A5Pending Publication Date: 2025-07-10
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2024554419
Authority / Receiving Office
JP · JP
Patent Type
Applications
Priority Date
2023-10-24
Filing Date
2023-10-24
Publication Date
2025-07-10

AI Technical Summary

Technical Problem

Existing robot motion path planning technologies fail to efficiently set motion paths that avoid obstacles in complex workspaces, leading to potential collisions and reduced operational efficiency.

Method used

A device and program that prioritize motion route candidates based on usage priority and perform interference determination processing to select a path that prevents collisions with obstacles, utilizing a priority setting unit, determination unit, and route setting unit to set a safe and efficient motion path for the robot.

Benefits of technology

The solution enables the robot to move along a path that avoids obstacles, enhancing operational efficiency and safety by systematically evaluating and selecting motion routes that minimize interference with workspace obstacles.

✦ Generated by Eureka AI based on patent content.
Patent Text Reader

Abstract

This operation path setting device comprises a priority setting unit, a determination unit, and a path setting unit. The priority setting unit sets a priority of use of each of a plurality of operation path candidates. The determination unit selects at least one operation priority candidate from among the plurality of operation path candidates on the basis of the priorities of use, and performs an interference determination process for determining, with respect to the selected operation path candidate, whether a robot interferes with an obstacle. The path setting unit sets an operation path of the robot on the basis of the operation path candidate on which it is determined by the determination unit that the robot is not interfering with the obstacle.
Need to check novelty before this filing date? Find Prior Art

Description

Operation path setting device and program

[0001] The present disclosure relates to a technique for setting a motion path for a robot.

[0002] Patent Document 1 describes a technique related to planning a motion path for a robot.

[0003] Japanese Patent Application Laid-Open No. 2000-20117

[0004] A movement path setting device and a program are disclosed. In one embodiment, the movement path setting device includes a priority setting unit, a determination unit, and a path setting unit. The priority setting unit sets a usage priority for each of a plurality of movement path candidates. The determination unit selects at least one movement path candidate from the plurality of movement path candidates based on the usage priority, and performs interference determination processing to determine whether or not the robot will interfere with an obstacle for the selected movement path candidate. The path setting unit sets a movement path for the robot based on the movement path candidate determined by the determination unit not to interfere with an obstacle.

[0005] In one embodiment, the program causes the computer device to execute a priority setting process that sets a usage priority of each of a plurality of movement path candidates for the movement path candidate. The program also causes the computer device to execute a selection execution process that selects at least one movement path candidate from the plurality of movement path candidates based on the usage priority, and executes an interference determination process that determines whether or not the robot will interfere with an obstacle for the selected movement path candidate. The program also causes the computer device to execute a path setting process that sets a movement path for the robot based on the movement path candidate that is determined not to interfere with an obstacle in the selection execution process.

[0006] 1 is a schematic diagram showing an example of the configuration of a movement path setting device. FIG. 1 is a schematic diagram showing an example of an actual workspace. FIG. 1 is a schematic diagram showing an example of the configuration of a robot. FIG. 2 is a schematic diagram showing an example of how the shape of a robot is represented by a plurality of rectangular parallelepipeds. FIG. 3 is a flowchart showing an example of the operation of the movement path setting device. FIG. 4 is a schematic diagram for explaining an example of a method for acquiring movement path candidates. FIG. 5 is a schematic diagram for explaining an example of a method for acquiring movement path candidates. FIG. 6 is a schematic diagram for explaining an example of a method for acquiring movement path candidates. FIG. 7 is a schematic diagram for explaining an example of a method for acquiring movement path candidates. FIG. 8 is a schematic diagram for explaining an example of a method for acquiring movement path candidates. FIG. 9 is a schematic diagram for explaining an example of a method for acquiring movement path candidates. FIG. 10 is a schematic diagram for explaining an example of a method for acquiring movement path candidates. FIG. 1 is a schematic diagram for explaining an example of the operation of a determination unit. FIG. 2 is a schematic diagram for explaining an example of the operation of a determination unit. FIG. 3 is a schematic diagram for explaining an example of the operation of a determination unit. FIG. 4 is a schematic diagram for explaining an example of the operation of a determination unit. FIG. 5 is a schematic diagram showing an example of a configuration space. FIG. 6 is a schematic diagram for explaining an example of the operation of a determination unit. FIG. 7 is a schematic diagram for explaining an example of the operation of a priority setting unit.

[0007] Fig. 1 is a schematic diagram showing an example of the configuration of a movement path setting device 1 that sets a movement path for a robot 10. Fig. 2 is a schematic diagram showing an example of an actual workspace (also called a work range) 100 in which the robot 10 performs work. The actual workspace 100 is a multidimensional space. Specifically, the actual workspace 100 is a three-dimensional space.

[0008] The robot 10 performs a task of moving, for example, a work object 50 (also simply referred to as the object 50) from a source area to a destination area in the actual workspace 100. The robot 10 holds the object 50 in the source area and moves the held object 50 from the source area to the destination area. For example, the robot 10 moves the held object 50 from the source area to the destination area by changing the posture of the robot 10. The object 50 is also referred to as, for example, a workpiece. Hereinafter, the posture of the robot 10 will also be referred to as the robot posture.

[0009] The source area and the destination area are, for example, trays. A plurality of work objects 50 are present in a tray 17 (also referred to as a source tray 17) serving as the source area. The robot 10, for example, holds each of the work objects 50 in the source tray 17 and moves them to a tray 18 (also referred to as a destination tray 18) serving as the destination area. The source tray 17 and the destination tray 18 are, for example, placed on a work table 15 and a work table 16, respectively. The work table 15 can also be referred to as a work start table 15, and the work table 16 can also be referred to as a work target table 16. The robot 10 moves the object 50 on the work start table 15 to the work target table 16.

[0010] The robot 10 includes, for example, an arm 11 and a robot hand 12 connected to the arm 11. The robot hand 12 is also called an end effector. The robot hand 12 is capable of holding an object 50. The robot hand 12 is capable of pinching the object 50 between, for example, two fingers. Such a robot hand 12 is also called a gripper. However, the configuration of the robot hand 12 is not limited to this.

[0011] The robot 10 holds the object 50 on the source tray 17 with the robot hand 12. Then, the robot 10 moves the arm 11 while the robot hand 12 is holding the object 50, thereby moving the object 50 to the destination tray 18. For example, the robot 10 moves the object 50 to the destination tray 18 by changing the posture of the arm 11. Note that the work performed by the robot 10 is not limited to this.

[0012] The robot 10 may be, for example, a multi-axis robot. The robot 10 according to this embodiment is, for example, a six-axis robot. The number of movable axes of the robot 10 is, for example, six. The degrees of freedom of the robot 10 are, for example, six. The arm 11 of the robot 10 has, for example, six joints, and each joint has a movable axis. Note that the robot 10 is not limited to a six-axis robot, and may be, for example, a seven-axis robot.

[0013] FIG. 3 is a schematic diagram showing an example of six movable axes 101, 102, 103, 104, 105, and 106 provided in the robot 10. In FIG. 3, the rotation angles of the arm 11 around the movable axes 101, 102, 103, 104, 105, and 106 are represented by θa, θb, θc, θd, θe, and θf, respectively. The robot posture is represented by the rotation angles θa, θb, θc, θd, θe, and θf, which are parameters. Note that the number of movable axes of the robot 10 (in other words, the degrees of freedom of the robot 10) is not limited to this. Hereinafter, the rotation angles θa, θb, θc, θd, θe, and θf representing the robot posture may be referred to as parameters θa, θb, θc, θd, θe, and θf.

[0014] The movement path setting device 1 is, for example, a type of computer device. The movement path setting device 1 is capable of not only setting a movement path for the robot 10, but also controlling the robot 10 so that the robot 10 moves along the set movement path. In other words, the movement path setting device 1 also functions as a robot control device that controls the robot 10. Note that a robot control device that controls the robot 10 may be provided separately from the movement path setting device 1. In this case, the movement path set by the movement path setting device 1 is notified to the robot control device. Then, the robot control device controls the robot 10 so that the robot 10 moves along the notified movement path. Hereinafter, simply referring to a movement path means the movement path of the robot 10.

[0015] 1, the movement path setting device 1 includes, for example, a control unit 2, a storage unit 3, an interface 4, and an input unit 5. The movement path setting device 1 can also be called, for example, a movement path setting circuit.

[0016] The interface 4 is capable of exchanging signals with the robot 10. The control unit 2 is able to control the robot 10 through the interface 4. The interface 4 can also be considered, for example, as an interface circuit. Note that when a robot control device that controls the robot 10 is provided separately from the movement path setting device 1, the movement path setting device 1 may be provided with an interface that exchanges signals with the robot control device instead of the interface 4.

[0017] The control unit 2 can generally manage the operation of the motion path setting device 1 by controlling the other components of the motion path setting device 1. The control unit 2 can also be referred to as a control circuit, for example. The control unit 2 includes at least one processor to provide control and processing power for performing various functions, as will be described in more detail below.

[0018] According to various embodiments, the at least one processor may be implemented as a single integrated circuit (IC) or as multiple communicatively connected integrated circuits ICs and / or discrete circuits. The at least one processor may be implemented according to various known techniques.

[0019] In one embodiment, a processor includes one or more circuits or units configured to perform one or more data computational procedures or processes, for example, by executing instructions stored in associated memory. In other embodiments, a processor may be firmware (e.g., discrete logic components) configured to perform one or more data computational procedures or processes.

[0020] According to various embodiments, the processor may include one or more processors, controllers, microprocessors, microcontrollers, application specific integrated circuits (ASICs), digital signal processors, programmable logic devices, field programmable gate arrays, or any combination of these devices or configurations, or other known devices and configurations, to perform the functions described below.

[0021] The control unit 2 may include, for example, a CPU (Central Processing Unit) as a processor. The storage unit 3 may include a non-transitory recording medium readable by the CPU of the control unit 2, such as a ROM (Read Only Memory) and a RAM (Random Access Memory). The storage unit 3 stores, for example, a program 30 for controlling the operation path setting device 1. The various functions of the control unit 2 are realized, for example, by the CPU of the control unit 2 executing the program 30 in the storage unit 3.

[0022] In addition to the program 30, the memory unit 3 also stores, for example, robot information 31 and obstacle information 32 used in setting a movement path. The robot information 31 is information about the robot 10. The robot information 31 includes, for example, information representing the shape of the robot 10. The obstacle information 32 is information about obstacles that hinder the movement of the robot 10 when the robot 10 is working. The obstacle information 32 includes, for example, information representing the position of the obstacle, information representing the shape of the obstacle, and information representing the size of the obstacle. The obstacle includes at least one object present in the actual workspace 100. The obstacle includes, for example, the work table 15, the work table 16, the tray 17, and the tray 18. The obstacle may also include objects other than the work table 15, the work table 16, the tray 17, and the tray 18. For example, the obstacle may include at least one of a structure such as a wall or a pillar, a chair, a desk, a shelf, a partition, and a lighting fixture.

[0023] The configuration of the control unit 2 is not limited to the above example. For example, the control unit 2 may include multiple CPUs. The control unit 2 may also include at least one DSP (Digital Signal Processor). All or some of the functions of the control unit 2 may be realized by a hardware circuit that does not require software to realize the function. The storage unit 3 may also include a computer-readable non-transitory recording medium other than ROM and RAM. The storage unit 3 may also include, for example, a small hard disk drive or SSD (Solid State Drive).

[0024] The input unit 5 can accept various inputs from the user. The input unit 5 may include, for example, a mouse and a keyboard. The input unit 5 may also include a touch sensor that accepts touch operations by the user. In this case, if the movement path setting device 1 includes a display unit such as a liquid crystal display, the display unit and the touch sensor may form a touch panel display having a display function and a touch detection function. The input unit 5 may also include a microphone that accepts voice input from the user. The control unit 2 recognizes the content of the user input accepted by the input unit 5 based on the output signal from the input unit 5.

[0025] The control unit 2 includes, for example, a priority setting unit 20, a determination unit 21, and a path setting unit 22. The priority setting unit 20, the determination unit 21, and the path setting unit 22 are functional blocks formed in the control unit 2, for example, when the CPU of the control unit 2 executes a program 30 in the storage unit 3. Note that all or some of the functions of the priority setting unit 20 may be realized by a hardware circuit that does not require software to realize the function. The same applies to the determination unit 21 and the path setting unit 22.

[0026] The priority setting unit 20 performs a priority setting process to set a usage priority of each of a plurality of movement path candidates for the robot 10. The determination unit 21 selects at least one movement path candidate from the plurality of movement path candidates based on the usage priority, and performs a selection execution process to execute an interference determination process to determine whether or not the robot 10 will interfere with an obstacle 60 for the selected movement path candidate. The path setting unit 22 performs a path setting process to set a movement path of the robot 10 based on the movement path candidate determined by the determination unit 21 that the robot 10 will not interfere with an obstacle. The plurality of movement path candidates may be acquired by the control unit 2, or may be specified to the control unit 2 by the user via the input unit 5.

[0027] The interference detection process executed by the determination unit 21 determines, for example, not only whether the robot 10 will interfere with an obstacle, but also whether the object 50 held by the robot 10 will interfere with the obstacle. The determination unit 21 may perform the interference detection process by approximating the shapes of the robot 10 and the obstacle. As shown in FIG. 4 , the shape of the robot 10 is approximated by, for example, a plurality of rectangular parallelepipeds 110 (for example, five rectangular parallelepipeds 110). The shape of the arm 11 of the robot 10 is approximated by, for example, four rectangular parallelepipeds 110, and the shape of the robot hand 12 is approximated by, for example, one rectangular parallelepiped 110. The shape of the object 50 is also approximated by, for example, one rectangular parallelepiped 111.

[0028] In this example, the interference detection process is performed by including the object 50 held by the robot 10 in the robot 10. That is, in the interference detection process, the object 50 held by the robot 10 is treated as part of the robot 10, and it is determined whether the robot 10 will interfere with an obstacle. Hereinafter, unless otherwise specified, the term "robot 10" refers to both the robot 10 and the object 50 held by the robot 10. Furthermore, the term "robot 10 alone" refers to the robot 10 alone, excluding the object 50. The robot 10 alone can be said to be the robot 10 not holding the object 50. Furthermore, the rectangular parallelepiped 111 representing the shape of the object 50 may also be referred to as a rectangular parallelepiped 110. In the example of FIG. 4 , the shape of the robot 10 is represented by six rectangular parallelepipeds 110. The robot information 31 in the storage unit 3 includes information representing the positional relationship of the six rectangular parallelepipeds 110 representing the shape of the robot 10 and the shape of each of the six rectangular parallelepipeds. The control unit 2 can identify the shape of the robot 10 based on the robot information 31.

[0029] Furthermore, the shape of the obstacle is approximated, for example, by at least one rectangular parallelepiped. For example, if the obstacle includes multiple objects, the shape of the obstacle is approximated by multiple rectangular parallelepipeds. The obstacle information 32 stored in the memory unit 3 includes information representing the position and shape of at least one rectangular parallelepiped that represents the shape of the obstacle. The control unit 2 can identify the position, shape, and size of the obstacle based on the obstacle information 32.

[0030] An example of the operation of the priority setting unit 20, the determination unit 21, and the path setting unit 22 will be described in detail below.

[0031] <Example of operation of priority setting unit, determination unit, and path setting unit> Fig. 5 is a flowchart showing an example of a movement path setting process executed by the control unit 2 to set a movement path of the robot 10. First, an overview of the movement path setting process will be described, and then the details of the movement path setting process will be described. Hereinafter, a movement path candidate of interest (in other words, a movement path candidate to be described) may be referred to as a movement path candidate of interest.

[0032] 5, a priority setting process is executed in step s1. In step s1, the priority setting unit 20 sets a use priority for each of A (A is an integer equal to or greater than 2) operation path candidates.

[0033] Next, in step s2, a selection execution process is executed. In step s2, the determination unit 21 selects at least one movement path candidate from the A movement path candidates based on the use priority set in step s1. Then, the determination unit 21 performs a collision detection process for the selected movement path candidate.

[0034] In step s2, the determination unit 21 may execute the interference detection process only for the movement path candidates selected based on the usage priority from among the A movement path candidates. Alternatively, in step s2, the determination unit 21 may select the A movement path candidates in an order according to the usage priority and execute the interference detection process. Hereinafter, the process in which the determination unit 21 executes the interference detection process only for the movement path candidates selected based on the usage priority from among the A movement path candidates may be referred to as a selection execution process. Furthermore, the process in which the determination unit 21 executes the interference detection process by selecting the A movement path candidates in an order according to the usage priority and executes the interference detection process may be referred to as an ordering execution process.

[0035] In the ordering execution process, the determination unit 21 orders the execution of the interference detection process for the A movement path candidates based on the usage priority. That is, the determination unit 21 determines the execution order of the interference detection process for each of the A movement path candidates based on the usage priority. For example, the determination unit 21 sets the execution order of the interference detection process for each of the A movement path candidates such that the higher the usage priority corresponding to the movement path candidate, the earlier the execution order of the interference detection process for that movement path candidate. Then, the determination unit 21 performs the interference detection process for the movement path candidate with the earliest order set (i.e., the movement path candidate with the highest usage priority) among the A movement path candidates. If it is determined in the interference detection process for the movement path candidate with the earliest order set that the robot will not interfere with the obstacle, step s3 is executed. On the other hand, if it is determined in the interference detection process for the movement path candidate with the earliest order set that the robot will interfere with the obstacle, the determination unit 21 performs the interference detection process for the movement path candidate with the second earliest order set (i.e., the movement path candidate with the second highest usage priority) among the A movement path candidates. If it is determined in the interference detection process for the movement path candidate set with the second-earliest order that the robot will not interfere with an obstacle, step s3 is executed. On the other hand, if it is determined in the interference detection process for the movement path candidate set with the second-earliest order that the robot will interfere with an obstacle, the determination unit 21 executes interference detection process for the movement path candidate set with the third-earliest order among the A movement path candidates. Thereafter, the determination unit 21 operates in the same manner.

[0036] In the selection execution process, the determination unit 21 selects, for example, B (B is an integer equal to or greater than 1) movement path candidates with high usage priorities from A movement path candidates. Then, similar to the ordering execution process, the determination unit 21 selects the selected B movement path candidates in an order according to their usage priorities and executes the interference detection process. On the other hand, the determination unit 21 does not execute the interference detection process for movement path candidates other than the selected B movement path candidates out of the A movement path candidates.

[0037] In the selection execution process, the determination unit 21 may select any one movement path candidate from the selected B movement path candidates without using the use priority. In this case, if the determination unit 21 determines that the robot 10 will interfere with an obstacle on the selected movement path candidate, it may select any other movement path candidate from the B movement path candidates without using the use priority, and execute the interference determination process for the selected movement path candidate. The determination unit 21 may repeatedly execute such a process until a movement path candidate that will not interfere with an obstacle is found.

[0038] In step s3, a path setting process is executed. In step s3, the path setting unit 22 sets a movement path for the robot 10 based on one movement path candidate determined in step s2 that the robot 10 will not interfere with an obstacle. For example, the path setting unit 22 may set the one movement path candidate determined in step s2 that the robot 10 will not interfere with an obstacle as is as the movement path for the robot 10. Alternatively, the determination unit 21 may modify the one movement path candidate and set it as the movement path for the robot 10. Note that after modifying the movement path candidate, it may be determined again whether the robot 10 will not interfere with an obstacle.

[0039] The movement path setting device 1 controls the robot 10 so that the robot 10 moves along the movement path set in the movement path setting process shown in Fig. 5. Specifically, once the path setting unit 22 sets the movement path of the robot 10, the control unit 2 sets the movement of the robot 10 along the set movement path based on the set movement path (also referred to as a set movement path). For example, the control unit 2 sets the movement of each joint of the arm 11 along the set movement path. That is, the movement of the robot 10 can be set by setting, for each of a plurality of points representing the set movement path, the time to reach those points and the posture of the robot at those points.

[0040] The control unit 2 may set an interpolation curve that interpolates the movement between multiple points that indicate the set movement path. The interpolation curve may be, for example, a spline curve or another curve. The control unit 2 sets multiple points for the set interpolation curve. The control unit 2 can generate movement data that indicates the set movement of each joint of the robot 10, and set the movement of the robot 10, using the multiple points that indicate the set movement path and the multiple points that indicate the interpolation curve as final movement points that indicate the movement of the robot 10.

[0041] As a result of the above, the robot 10 moves, for example, the object 50 it is holding from the source tray 17 to the destination tray 18. Thereafter, the movement path setting device 1 executes the movement path setting process shown in FIG. 5 again to set the movement path of the robot 10 again. Then, the movement path setting device 1 controls the robot 10 so that the robot 10 moves along the re-set movement path. As a result, the other object 50 on the source tray 17 moves to the destination tray 18. The movement path setting device 1 operates in the same manner thereafter. The movement path setting device 1 may execute the movement path setting process every time the robot 10 moves one object 50 from the source tray 17 to the destination tray 18.

[0042] <Example of multiple movement path candidates> The following describes a case where the control unit 2 acquires A movement path candidates. In this case, the control unit 2 functions as a candidate acquisition unit that acquires movement path candidates. Note that the A movement path candidates may be specified by the user.

[0043] The control unit 2 can acquire, for example, A movement path candidates for a predetermined location 10P of the robot 10 in the actual workspace 100. As shown in Fig. 3 , the predetermined location 10P is set, for example, at the tip of the robot 10 alone, that is, at the tip of the robot hand 12. In this case, the movement path candidates acquired by the control unit 2 can be said to be movement path candidates for the tip of the robot alone 10. In the example of Fig. 3 , the predetermined location 10P is set, for example, on the movable shaft 106, at the midpoint between two fingers of the robot hand 12.

[0044] Fig. 6 is a schematic diagram for explaining an example of the operation of the control unit 2. As shown in Fig. 6, the control unit 2 can acquire A candidate movement paths from a start point 120 to an end point 121 of the movement of the robot 10 in the actual workspace 100, for example, based on a basic path (also referred to as a hypothetical movement path) 130 that has the shortest distance connecting the start point 120 and the end point 121. The basic path 130 is represented by a line segment connecting the start point 120 and the end point 121. Fig. 6 schematically shows an example of an obstacle 60 present in the actual workspace 100.

[0045] A starting point 120 of the robot 10's movement in the actual workspace 100 indicates, for example, the position of the robot 10 when the robot 10, holding the target object 50, starts a movement operation to move the target object 50 to the tray 18. The starting point 120 indicates, for example, the position of a predetermined location 10P of the robot 10 when the robot 10 starts the movement operation. Furthermore, an ending point 121 of the robot's movement in the actual workspace 100 indicates, for example, the position of the robot 10 when the robot 10 ends the movement operation. The ending point 121 indicates, for example, the position of the predetermined location 10P of the robot 10 when the robot 10 ends the movement operation. A line connecting the starting point 120 and the ending point 121 indicates the change in the position of the predetermined location 10P of the robot 10 from the start to the end of the movement operation. In other words, the line connecting the starting point 120 and the ending point 121 indicates the trajectory of the position of the predetermined location 10P of the robot 10 from the start to the end of the movement operation. 5, for example, one movement path candidate connecting the start point 120 and the end point 121 is set as the movement path of the robot 10. The movement path of the robot 10 set by the path setting unit 22 in the actual workspace 100 is expressed as a change in the position of a predetermined location 10P of the robot 10 (in other words, a position trajectory).

[0046] The starting point 120 is set, for example, directly above the tray 17 and slightly above the tray 17. The ending point 121 is set, for example, directly above the tray 18 and slightly above the tray 18. Note that the starting point 120 may be set inside the tray 17, and the ending point 121 may be set inside the tray 18.

[0047] The basic path 130 can be said to be the shortest movement path from the start point 120 to the end point 121 for a predetermined location 10P of the robot 10. The control unit 2 may, for example, move the basic path 130 to acquire A movement path candidates. The control unit 2 may, for example, translate the basic path 130 to acquire A movement path candidates. The control unit 2 may, for example, translate the basic path 130 in a first direction 141 perpendicular to the basic path 130 to acquire A movement path candidates. In this example, a plurality of first directions 141 perpendicular to the basic path 130 are set. Then, the control unit 2 translates the basic path 130 in the first direction 141 for each of the plurality of first directions 141 to acquire A movement path candidates.

[0048] When moving the basic path 130 to acquire a movement path candidate, the control unit 2 connects, with a straight path 132a, one end 131a of the basic path 130 after movement that was connected to the starting point 120 when the basic path 130 was in its initial position, to the starting point 120, as shown in Fig. 7 . The initial position of the basic path 130 is the position of the basic path 130 before movement, that is, the position of the basic path 130 connecting the starting point 120 and the ending point 121. Furthermore, the control unit 2 connects, with a straight path 132b, one end 131b of the basic path 130 that was connected to the ending point 121 when the basic path 130 was in its initial position to the ending point 121. Each of the straight path 132a and 132b is represented by a line segment. Then, the control unit 2 determines a path from the start point 120 to the end point 121, which is composed of the basic path 130 after movement, the straight path 132a, and the straight path 132b, as one movement path candidate 135. In other words, the control unit 2 determines a path obtained by connecting one end and the other end of the basic path 130 after movement with the start point 120 and the end point 121, respectively, as one movement path candidate 135. One movement path candidate 135 is represented by a line connecting the start point 120 and the end point 121. In FIG. 7 , the basic path 130 before movement, i.e., the basic path 130 at the initial position connecting the start point 120 and the end point 121, is indicated by a two-dot chain line. Hereinafter, the basic path 130 at the initial position may be referred to as the basic path 130 at the initial position 130i.

[0049] In this example, as shown in Fig. 6 , a virtual plane 150 perpendicular to the basic path 130 is set. In the example of Fig. 6 , the outer shape of the plane 150 is circular, but it may be rectangular or another shape. The control unit 2 translates the basic path 130 in a first direction 141 so that the basic path 130 passes through a pass point set on the plane 150, thereby acquiring one movement path candidate 135 as shown in the example of Fig. 7 . When acquiring a new movement path candidate 135, the control unit 2 changes the position of the pass point on the plane 150. Then, the control unit 2 translates the basic path 130 in the first direction 141 so that the basic path 130 passes through the relocated pass point, thereby acquiring the new movement path candidate 135.

[0050] 8 is a schematic diagram illustrating an example of a method for setting the position of a passing point 155 on a plane 150. The position of the passing point 155 on the plane 150 is expressed, for example, in polar coordinate format. As shown in FIG. 8 , a starting line 152 extending from an intersection 151 between the plane 150 and the basic path 130 is set on the plane 150. The starting line 152 is perpendicular to the basic path 130. The position of the passing point 155 on the plane 150 is expressed, for example, by a pair (r, α) of a distance r from the intersection 151 to the passing point 155 and a deflection angle α from the starting line 152 to the passing point 155. The distance r and the deflection angle α are variables.

[0051] The control unit 2 can change the position (r, α) of the passing point 155 by changing the combination of the set values ​​of the distance r and the deflection angle α. If the position (r, α) of the passing point 155 is changed, the acquired movement path candidate 135 changes. Therefore, the control unit 2 can acquire multiple movement path candidates 135 by changing the combination of the set values ​​of the distance r and the deflection angle α.

[0052] The orientation of the first direction 141 in which the basic path 130 moves in parallel is determined by α. The first direction 141 in which the basic path 130 moves in parallel is a direction in which the deflection angle from the starting line 152 to the first direction 141 is α. The basic path 130 moves in the first direction 141 in which the deflection angle from the starting line 152 is α. Furthermore, the moving distance of the basic path 130 is determined by r. The basic path 130 moves in parallel by the distance r.

[0053] The control unit 2 changes the value of α by a predetermined angle between 0 degrees and less than 360 degrees, for example. The predetermined angle may be 10 degrees, 1 degree, or another value. The predetermined angle may be set according to the length of the shortest side of each of the six rectangular parallelepipeds 110 that represent the shape of the robot 10, for example.

[0054] The control unit 2, for example, changes the value of r within a predetermined range by a predetermined distance. The lower limit of the predetermined range is set, for example, to be greater than 0. The upper limit of the predetermined range may be set, for example, according to the size of the actual workspace 100. Alternatively, the upper limit of the predetermined range may be set, for example, according to the length of the longest side of at least one rectangular parallelepiped representing the shape of the obstacle 60. The predetermined distance may be set, for example, according to the length of the shortest side of each of the six rectangular parallelepipeds 110 representing the shape of the robot 10.

[0055] In this example, for example, U1 setting values ​​(U1 is an integer equal to or greater than 2) are prepared as the setting values ​​of α, and U2 setting values ​​(U2 is an integer equal to or greater than 2) are prepared as the setting values ​​of r. In this case, there are (U1 x U2) combinations of the setting values ​​of r and α. Therefore, the control unit 2 can set (U1 x U2) passing points 155 on the plane 150. Therefore, the control unit 2 can obtain (U1 x U2) movement path candidates. In this example, A = U1 x U2.

[0056] Fig. 9 is a schematic diagram showing an example of (U1 x U2) passing points 155. In the example of Fig. 9, U1 = 12 and U2 = 5. In the example of Fig. 9, the setting values ​​of α are prepared as 0 degrees, 30 degrees, 60 degrees, 90 degrees, 120 degrees, 150 degrees, 180 degrees, 210 degrees, 240 degrees, 270 degrees, 300 degrees, and 330 degrees.

[0057] Note that the basic path 130 at the initial position, i.e., the basic path 130 connecting the start point 120 and the end point 121 by the shortest distance, may be adopted as one of the motion path candidates 135. The basic path 130 at the initial position can also be said to be the basic path 130 that passes through the passing point 155 when r=0.

[0058] In the above example, the position of the passing point 155 is expressed in polar coordinate format, but the method for setting the position of the passing point 155 is not limited to this. Figure 10 is a schematic diagram for explaining another example of the method for setting the position of the passing point 155.

[0059] 10 , the control unit 2 sets grid lines 156 (also referred to as lattice lines 156) on, for example, a rectangular plane 150, thereby dividing the plane 150 into a grid. At this time, the grid lines 156 are set on the plane 150 so that, for example, an intersection 151 between the plane 150 and the basic path 130 is located at the center of the grid lines 156.

[0060] The control unit 2 sets each of the plurality of lattice points 157 on the grid lines 156 as a passing point 155. The plurality of lattice points 157 on the grid lines 156 become a plurality of passing points 155 that can be set on the plane 150. The plurality of lattice points 157 may or may not include an intersection 151 as shown in FIG. 10 . The control unit 2 can change the movement path candidate 135 to be acquired by changing the lattice point 157 set as the passing point 155. The control unit 2 can acquire the same number of movement path candidates as the number of the plurality of lattice points 157. In this example, the value of A matches the number of the plurality of lattice points 157. When the plurality of lattice points 157 includes an intersection 151, the basic path 130i of the initial position is used as one movement path candidate 135.

[0061] It should be noted that the movement path candidates are not limited to the above examples. For example, the A movement path candidates may include a movement path candidate that includes a basic path 130 that has been translated not only in the first direction 141 but also in a second direction parallel to the basic path 130 (the left-right direction in FIGS. 6 and 7 ). The A movement path candidates may also include a movement path candidate that includes a basic path 130 that has been rotated. In this case, the A movement path candidates may include, for example, a movement path candidate that includes a basic path 130 that has been rotated around a rotation axis perpendicular to the basic path 130i of the initial position. The A movement path candidates may also include a movement path candidate that includes a basic path 130 that has been both translated and rotated.

[0062] Furthermore, the A movement path candidates may include movement path candidates that include a transformed basic path 130, in addition to or instead of movement path candidates that include a moved basic path 130. In this case, the A movement path candidates may include movement path candidates that include a basic path 130 that has been transformed into a curve such as a Bezier curve, a spline curve, or a quadratic curve. The A movement path candidates may also include movement path candidates that include a basic path 130 that has been both moved and transformed. The A movement path candidates do not necessarily have to include a movement path candidate that includes a basic path 130 that has been translated in the first direction 141 as shown in FIG. 7 .

[0063] When one end 131a of the basic path 130 that has been moved and / or transformed is not connected to the starting point 120, a straight line path 132a connects the one end 131a and the starting point 120, as in the example of FIG. 7 . Then, a movement path candidate including the straight line path 132a and the basic path 130 that has been moved and / or transformed is obtained. When one end 131b of the basic path 130 that has been moved and / or transformed is not connected to the end point 121, a straight line path 132b connects the one end 131b and the end point 121, as in the example of FIG. 7 . Then, a movement path candidate including the straight line path 132b and the basic path 130 that has been moved and / or transformed is obtained. One movement path candidate may be set without using the basic path 130.

[0064] <Example of Interference Determination Processing> When determining whether the robot 10 will interfere with an obstacle 60 on a target movement path candidate, the determination unit 21 determines whether the robot 10 will interfere with the obstacle 60 when a predetermined position 10P of the robot 10 is present at a certain position (also referred to as a target position) on the target movement path candidate. In this example, the posture of the robot 10 is uniquely set according to the position of the predetermined position 10P of the robot 10. The robot information 31 in the storage unit 3 includes information for specifying the posture of the robot 10 according to each position of the predetermined position 10P of the robot 10 in the actual workspace 100. Based on the robot information 31, the determination unit 21 specifies the posture and shape of the robot 10 when the predetermined position 10P of the robot 10 is present at the target position on the target movement path candidate. Furthermore, the determination unit 21 specifies the position and shape of the obstacle 60 based on the obstacle information 32 in the storage unit 3. Then, the judgment unit 21 judges whether the robot 10 will interfere with the obstacle 60 when the specified part 10P of the robot 10 is located at the target position on the candidate target movement path, based on the posture and shape of the robot 10 when the specified part 10P of the robot 10 is located at the target position on the candidate target movement path, and the position and shape of the obstacle 60.

[0065] The control unit 2 determines, for each position from the start point 120 to the end point 121 on the target movement path candidate, whether or not the robot 10 will interfere with the obstacle 60 when a predetermined position 10P of the robot 10 is present at that position. Then, when the determination unit 21 determines that the robot 10 will not interfere with the obstacle 60 for all positions on the target movement path candidate, it determines that the robot 10 will not interfere with the obstacle on the target movement path candidate. On the other hand, when the determination unit 21 determines that the robot 10 will interfere with the obstacle 60 when a predetermined position 10P is present at any position on the target movement path candidate, it determines that the robot 10 will interfere with the obstacle on the target movement path candidate.

[0066] Hereinafter, a movement path candidate determined that the robot 10 will not interfere with the obstacle 60 may be referred to as a non-interference path candidate. Also, a movement path candidate determined that the robot 10 will interfere with the obstacle 60 may be referred to as an interference path candidate.

[0067] As described above, in this example, the determination unit 21 selects at least one movement path candidate from the plurality of movement path candidates based on the use priority of the movement path candidates, and executes the interference detection process for the selected movement path candidate. This allows the movement path of the robot 10 to be set more efficiently than when the interference detection process is executed without distinction for each of the plurality of movement path candidates.

[0068] <Example of a Method for Setting Usage Priorities> The priority setting unit 20 sets, for example, a specific potential field (also referred to as a specific potential field) for the actual workspace 100. Note that the potential field may be set within the operating area of ​​the robot 10. The specific potential field is, for example, a three-dimensional potential field. The specific potential field includes multiple potentials. Multiple positions x, at which potentials are set, are set in the actual workspace 100. The multiple positions x are set three-dimensionally throughout the entire actual workspace 100. The potential P(x) at a certain position x in the actual workspace 100 represents the degree to which it is preferable for the robot 10 to pass through the certain position x in the actual workspace 100. In this example, the larger the value of the potential P(x) at a certain position x, the greater the degree to which it is preferable for the robot 10 to pass through the certain position x. Therefore, in this example, it can be said that it is preferable for the movement path of the robot 10 to pass through a position x in the actual workspace 100 where the potential P(x) is large. The potential P(x) at a certain position x in the actual workspace 100 can be said to represent the degree to which it is desirable for the robot 10 to pass through the certain position x. An example of a method for setting the potential P(x) will be described later.

[0069] The priority setting unit 20 sets the use priority of the movement path candidate based on, for example, a specific potential field. For example, the priority setting unit 20 sets the use priority of the attention movement path candidate based on a specific potential field and the range (also referred to as the robot range) that the robot 10 occupies in the actual workspace 100 in each of the multiple robot postures in the attention movement path candidate. The priority setting unit 20 can specify the robot range 115 of each of the multiple robot postures in the movement path candidate 135 based on the robot information 31 in the storage unit 3. Below, a specific example of a method in which the priority setting unit 20 sets the use priority of the movement path candidate based on a specific potential field will be described. Hereinafter, the posture of the robot 10 that is of interest may be referred to as the attention posture or the attention robot posture.

[0070] 11 is a schematic diagram showing the robot range 115 for multiple robot postures in a target movement path candidate 135 superimposed on a specific potential field 200. For ease of explanation, multiple positions x in the specific potential field 200 are arranged two-dimensionally in FIG. 11. Also, in FIG. 11, the robot range 115 is indicated by a two-dot chain line.

[0071] The priority setting unit 20 calculates, as the first summation value, the summation value of the potential P(x) at a plurality of positions x included in the robot range 115 of the robot 10 in the posture of interest in the candidate attention movement path 135. In other words, the priority setting unit 20 calculates, as the first summation value, the summation value of the potential P(x) at a plurality of positions x included in the robot range 115 of the robot 10 in the posture of interest when the robot 10 moves along the candidate attention movement path 135. In further words, the priority setting unit 20 calculates, as the first summation value, the summation value of the potential P(x) at a plurality of positions x included in the robot range 115 in the posture of interest when a predetermined part 10P of the robot 10 moves along the candidate attention movement path 135. The summation value of the potential P(x) at a plurality of positions x included in one robot range 115 shown in FIG. 11 becomes the first summation value. The first summation value for the posture of interest can also be said to be the degree to which it is preferable for the robot 10 to take the posture of interest (also referred to as the degree of posture goodness). In other words, the larger the first sum value for the posture of interest, the greater the degree of goodness of the posture of interest. The first sum value for a certain robot posture can also be said to be the degree of goodness of the posture of the certain robot posture.

[0072] The priority setting unit 20 calculates a first sum value for each of a plurality of robot postures in the target movement path candidate. In other words, the priority setting unit 20 calculates a first sum value for each of a plurality of robot postures when the robot 10 moves along the target movement path candidate. The priority setting unit 20 then sets the usage priority of the target movement path candidate based on the sum of the first sum values ​​calculated for the plurality of robot postures. Here, the sum of the first sum values ​​calculated for the plurality of robot postures is referred to as the second sum value. The second sum value calculated for the movement path candidate represents the usage priority of the movement path candidate. The larger the second sum value of the movement path candidate, the higher the usage priority of the movement path candidate. In this example, the priority setting unit 20 calculates the second sum value of the movement path candidate to set the usage priority of the movement path candidate. Among the A movement path candidates, the movement path candidate with the largest corresponding second sum value is the movement path candidate with the highest usage priority. Hereinafter, the second sum value may be referred to as the potential evaluation value.

[0073] In the selection execution process, the determination unit 21 may select B movement path candidates having potential evaluation values ​​equal to or greater than a threshold value from the A movement path candidates. In the ordering execution process, the determination unit 21 may set an order of execution of the collision detection process for each of the A movement path candidates such that the larger the potential evaluation value corresponding to the movement path candidate, the earlier the order of execution of the collision detection process for that movement path candidate.

[0074] Here, each of the multiple robot postures for which the priority setting unit 20 calculates the first sum value for one movement path candidate 135 is referred to as a target robot posture. Furthermore, two temporally adjacent target robot postures are referred to as a first target robot posture and a second target robot posture, respectively. Two temporally adjacent target robot postures refer to a certain target robot posture that appears when the robot 10 moves along one movement path candidate 135 and the target robot posture that appears after that certain target robot posture. Furthermore, the predetermined location 10P of the robot 10 in the first target robot posture is referred to as a first predetermined location 10P1, and the predetermined location 10P of the robot 10 in the second target robot posture is referred to as a second predetermined location 10P2.

[0075] FIG. 12 is a schematic diagram showing an example of the robot 10 in a first target robot posture and a second target robot posture that are adjacent in time. The target robot postures for which the first summation value is calculated for one movement path candidate 135 may be determined so that the distance d12 (see FIG. 12 ) between the first predetermined location 10P1 and the second predetermined location 10P2 is equal to or less than a predetermined value. The predetermined value may be set, for example, equal to or less than the length of the shortest side of the rectangular parallelepiped 110 representing the shape of the robot hand 12. This allows the use priority of the movement path candidate 135 to be appropriately evaluated based on the multiple first summation values ​​calculated for each of the multiple target robot postures. In other words, the accuracy of the use priority of the movement path candidate 135, as represented by the potential evaluation value obtained for the movement path candidate 135 (i.e., the sum of the multiple first summation values), can be improved.

[0076] In this way, the priority setting unit 20 sets the use priorities of the movement path candidates based on a specific potential field in which the potential P(x) of each position x indicates the degree to which it is preferable for the robot 10 to pass through the position x, thereby making it possible to appropriately set the use priorities of the movement path candidates 135. Therefore, it becomes possible to efficiently set the movement paths of the robot 10.

[0077] 13, multiple representative points 117 may be set for the robot 10. In this case, the priority setting unit 20 may calculate, as the first sum, the sum of the potentials P(x) at multiple positions x that are closest to each of the multiple representative points 117 of the robot 10 in the target posture in the target movement path candidate 135. The priority setting unit 20 may then set the use priority of the target movement path candidate based on the sum of the first sums calculated for the multiple target robot postures. This reduces the amount of calculation required for the potential evaluation value. For example, at least one representative point 117 may be set for each of the six rectangular parallelepipeds 110 that represent the shape of the robot 10.

[0078] Furthermore, the use priority may be set using a predetermined location P of the robot 10 as the representative point 117. In this case, the potential P(x) of the position x closest to the predetermined location P of the robot 10 for each of the target postures in the target movement path candidate 135 may be identified, and the identified potential P(x) may be used instead of the first summation value. Then, the priority setting unit 20 may set the use priority of the target movement path candidate based on the summation value of the potential P(x) identified for multiple target robot postures instead of the first summation value. This makes it possible to reduce the amount of calculation of the potential evaluation value.

[0079] <Example of Potential Setting> The priority setting unit 20 may set the potential P(x) of the specific potential field 200 based on, for example, the obstacle information 32 in the storage unit 3. In this case, it can be said that the priority setting unit 20 sets the use priority of the movement path candidate based on the obstacle information 32.

[0080] The priority setting unit 20 may, for example, calculate an obstacle density ρo(x) for each position x based on the obstacle information 32, which changes depending on the extent to which obstacles 60 exist around the position x, and set the potential P(x) based on the calculated obstacle density ρ(x). In this case, it can be said that the priority setting unit 20 sets the usage priority based on the obstacle density ρ(x). It can also be said that the obstacle density ρo(x) at the position x is a value that represents the extent to which obstacles 60 exist around the position x. The larger the value of the obstacle density ρo(x) at the position x, the greater the extent to which obstacles 60 exist around the position x. In other words, the larger the value of the obstacle density ρo(x) at the position x, the greater the range in which obstacles 60 exist around the position x.

[0081] The greater the obstacle density ρo(x) at a certain position x, the more obstacles 60 there are around the certain position x. Therefore, it can be said that the greater the obstacle density ρo(x) at a certain position x, the less desirable it is for the robot 10 to pass through the certain position x.

[0082] Therefore, the priority setting unit 20 sets the negative value of the obstacle density ρo(x) at a certain position x as the potential P(x) at the certain position x. Hereinafter, the position x of interest may be referred to as the “position of interest x.”

[0083] FIG. 14 is a schematic diagram illustrating an example of a method for acquiring the obstacle density ρo(x). The priority setting unit 20 identifies a portion 60a of the obstacle 60 that is located around the focus position x based on the obstacle information 32. Specifically, the priority setting unit 20 identifies a portion 60a of the obstacle 60 that is located within a predetermined range 250 from the focus position x. The shape of the predetermined range 250 is a three-dimensional shape, for example, a sphere with the focus position x as its center position. However, the shape of the predetermined range 250 is not limited to this. The shape of the predetermined range 250 may be a cube with the focus position x as its center position, or may be another shape. Hereinafter, the portion 60a may be referred to as a surrounding portion 60a.

[0084] Next, the priority setting unit 20 calculates the size of the surrounding portion 60a of the obstacle 60 (also referred to as a first size degree). For example, the priority setting unit 20 may calculate the volume of the surrounding portion 60a based on the obstacle information 32 and set the calculated volume as the first size degree. The priority setting unit 20 sets the first size degree calculated for the focus position x as the obstacle density ρo(x) at the focus position x.

[0085] The size of the predetermined range 250 may be set based on, for example, the dimensions of the robot 10. For example, if the outer shape of the predetermined range 250 is a sphere, the radius of the predetermined range 250 may be set to a value smaller than the length of the shortest side of each of the six rectangular parallelepipeds that represent the shape of the robot 10.

[0086] In this way, when the use priority of the movement path candidates is set based on the obstacle information 32, it is possible to increase the use priority of the movement path candidates that are less likely to cause the robot 10 to interfere with the obstacle 60. Therefore, the determination unit 21 can efficiently find a movement path that will not cause the robot 10 to interfere with the obstacle 60.

[0087] Furthermore, when the usage priority is set based on the obstacle density ρo(x), as in the above example, it is possible to appropriately increase the usage priority of the operation path candidate that is less likely to cause the robot 10 to interfere with the obstacle 60.

[0088] The method for calculating the first size degree is not limited to the above. FIG. 15 is a schematic diagram illustrating another method for calculating the first size degree. In the example of FIG. 15, the priority setting unit 20 sets three-dimensional grid lines 270 on the actual workspace 100 and divides the actual workspace 100 into a grid pattern. For ease of explanation, the grid lines 270 are shown two-dimensionally in FIG. 15. Then, the priority setting unit 20 sets each of the grid points 271 on the grid lines 270 that is included in the obstacle 60 as a representative point 600 of the obstacle 60 (also referred to as an obstacle representative point 600). The priority setting unit 20 sets the number of obstacle representative points 600 within a predetermined range 250 from the focus position x as a first size degree that represents the size of a surrounding portion 60a of the obstacle 60 that is located around the focus position x. The priority setting unit 20 then sets the calculated first size degree as the obstacle density ρo(x) at the focus position x. When the actual workspace 100 is divided into a grid like this example, each grid point 271 may be set as the position x.

[0089] 15 , the size of the predetermined range 250 may be set based on, for example, the spacing between the grid lines 270 and the dimensions of the robot 10. For example, if the outer shape of the predetermined range 250 is a sphere, the radius of the predetermined range 250 may be set to a value that is larger than the spacing between the grid lines 270 and smaller than the length of the shortest side of each of the six rectangular parallelepipeds that represent the shape of the robot 10.

[0090] In this way, when the obstacle density ρo(x) of the focus position x is set based on the obstacle representative points 600 located within a predetermined range 250 from the focus position x, the amount of calculation required to calculate the obstacle density ρo(x) can be reduced.

[0091] The method for setting the obstacle representative point 600 is not limited to the above. For example, if the obstacle information 32 includes point cloud data representing the shape of the obstacle 60, the priority setting unit 20 may adopt each of the multiple points constituting the point cloud represented by the point cloud data as the obstacle representative point 600.

[0092] The method by which the priority setting unit 20 sets the obstacle density ρo(x) based on the obstacle representative points 600 located within the predetermined range 250 from the focus position x is not limited to the above example. For example, the priority setting unit 20 sets a degree of proximity (also referred to as a first degree of proximity) from the focus position x to each representative point 600 located within the predetermined range 250 from the focus position x. The first degree of proximity set for a certain obstacle representative point 600 becomes larger as the distance from the focus position x to the certain obstacle representative point 600 becomes shorter. The priority setting unit 20 then sets the sum of the multiple first degrees of proximity set for the multiple representative points 600 located within the predetermined range 250 from the focus position x as the obstacle density ρo(x) of the focus position x. As a result, the obstacle density ρo(x) of the focus position x changes depending on the extent to which obstacles 60 exist around the focus position x, and also changes depending on the proximity of the obstacles 60 around the focus position x to the focus position x. When the attention position x is close to an obstacle 60 around the attention position x, it is not desirable for the robot 10 to pass through the attention position x. Therefore, by setting the potential P(x) of the attention position x based on the obstacle density ρo(x), which also changes depending on the proximity of the attention position x to the obstacles 60 around the attention position x, it is possible to appropriately set the degree to which it is desirable for the robot 10 to pass through the attention position x. In other words, it is possible to improve the accuracy of the degree to which it is desirable for the robot 10 to pass through the attention position x, which is represented by the potential P(x) of the attention position x. Furthermore, by setting the use priority based on the obstacle density ρo(x), which also changes depending on the proximity of the attention position x to the obstacles 60 around the attention position x, it is possible to appropriately increase the use priority of a movement path candidate that is less likely to cause the robot 10 to interfere with the obstacle 60.

[0093] As in the above example, when a negative value of the obstacle density ρo(x) is adopted as the potential P(x), the potential evaluation value (i.e., the second sum value) obtained for the target movement path candidate can be said to be an evaluation value representing the distance between the target movement path candidate and the obstacle 60 (in other words, the degree of distance between the target movement path candidate and the obstacle 60). When a negative value of the obstacle density ρo(x) is adopted as the potential P(x), the potential evaluation value obtained for the target movement path candidate can also be said to be an evaluation value representing the distance between the robot 10 and the obstacle 60 when the robot 10 operates along the target movement path candidate. Hereinafter, the potential evaluation value when a negative value of the obstacle density ρo(x) is adopted as the potential P(x) may be referred to as the obstacle density evaluation value. In the above example, the obstacle density evaluation value for the movement path candidate is used as an evaluation value representing the usage priority of the movement path candidate.

[0094] <Other Examples of Methods for Setting Usage Priority> <Example of Method for Setting Usage Priority Based on Basic Route> The priority setting unit 20 may set usage priority based on the obstacle information 32 and the basic route 130 of the initial position. An example of the operation of the priority setting unit 20 in this case will be described below. Hereinafter, simply referring to the basic route 130 means the basic route 130 of the initial position.

[0095] For example, the priority setting unit 20 calculates, for each position x in the actual workspace 100, a robot density ρr(x) that changes depending on the extent to which a space through which the robot 10 passes when the robot 10 moves along the basic path 130 exists around the position x. The space through which the robot 10 passes when the robot 10 moves along the basic path 130 can also be said to be the operating range of the entire robot 10 when the robot 10 moves along the basic path 130. Hereinafter, the space through which the robot 10 passes when the robot 10 moves along the basic path 130 will also be referred to as a basic path sweep space.

[0096] The robot density ρr(x) at a certain position x can also be said to be a value that represents the extent to which the basic path sweep space exists around the certain position x. The larger the value of the robot density ρr(x) at a certain position x, the greater the extent to which the basic path sweep space exists around the certain position x. In other words, the larger the value of the robot density ρr(x) at a certain position x, the greater the range occupied by the basic path sweep space around the certain position x. The priority setting unit 20 can identify the basic path sweep space based on the basic path 130 and the robot information 31.

[0097] Here, the basic path 130 is the shortest path from the start point 120 to the end point 121. Therefore, the closer the movement path of the robot 10 is to the basic path 130, the shorter the movement path of the robot 10 is likely to be. Therefore, it can be said that the closer a certain position x is to the basic path sweep space, the more preferable it is for the robot 10 to pass through the certain position x.

[0098] Therefore, the priority setting unit 20 may determine the use priority based on the robot density ρr(x), which changes depending on the extent to which the basic path sweep space exists around the position x, and the obstacle density ρo(x). For example, the priority setting unit 20 sets the potential P(x) for each position x based on the robot density ρr(x) and the obstacle density ρo(x). For example, the priority setting unit 20 calculates the potential P(x) using the following equation (1):

[0099]

[0100] In formula (1), C1 is a constant. The priority setting unit 20 uses the potential P(x) calculated using formula (1) to calculate a potential evaluation value representing the use priority as described above. By calculating the potential evaluation value of the movement path candidate, the use priority of the movement path candidate is set.

[0101] In this way, the priority setting unit 20 sets the use priority based on the obstacle information 32 and the basic route 130, thereby making it possible to increase the use priority of a candidate movement route that is less likely to cause the robot 10 to interfere with the obstacle 60 and has a short route length. This makes it possible to efficiently set a movement route that does not cause the robot 10 to interfere with the obstacle 60 and has a short route length.

[0102] The priority setting unit 20 can calculate the robot density ρr(x) in the same manner as the obstacle density ρo(x). For example, the priority setting unit 20 identifies a portion 300a located around the focus position x in the basic path sweep space 300 based on the robot information 31, as shown in FIG. 16 . Specifically, the priority setting unit 20 identifies a portion 300a located within a predetermined range 310 from the focus position x in the basic path sweep space 300. The shape of the predetermined range 310 is a three-dimensional shape, such as a sphere with the focus position x as its center. However, the shape of the predetermined range 310 is not limited to this. The shape of the predetermined range 310 may be a cube with the focus position x as its center, or may be another shape. Furthermore, the predetermined range 310 may be the same as or different from the above-mentioned predetermined range 250. Hereinafter, the portion 300a may be referred to as a surrounding portion 300a.

[0103] Next, the priority setting unit 20 calculates the degree of size of the surrounding portion 300a (also referred to as the second size degree). For example, the priority setting unit 20 may calculate the volume of the surrounding portion 300a and set the calculated volume as the second size degree. The priority setting unit 20 sets the second size degree calculated for the focus position x as the robot density ρr(x) at the focus position x. The size of the predetermined range 310 may be set, for example, in the same manner as the above-mentioned predetermined range 250.

[0104] Note that the method for calculating the second magnitude degree is not limited to the above. For example, the priority setting unit 20 sets three-dimensional grid lines 270 in the actual workspace 100, as shown in FIG. 15 above. Then, the priority setting unit 20 sets each of the grid points 271 of the grid lines 270 that is included in the basic path sweep space 300 as a representative point of the basic path sweep space 300 (also referred to as a sweep space representative point). The priority setting unit 20 may set the number of sweep space representative points within a predetermined range 310 from the focus position x as the second magnitude degree of the surrounding portion 300a.

[0105] Furthermore, the priority setting unit 20 may set a degree of proximity (also referred to as a second degree of proximity) from the focus position x to each sweep space representative point located within the predetermined range 310 from the focus position x. The second degree of proximity set for a certain sweep space representative point becomes larger as the distance from the focus position x to the certain sweep space representative point becomes shorter. The priority setting unit 20 may then set the sum of multiple second degrees of proximity set for multiple sweep space representative points located within the predetermined range 310 from the focus position x as the robot density ρr(x) at the focus position x. In this way, the robot density ρr(x) at the focus position x changes depending on the extent to which the basic path sweep space 300 exists around the focus position x, and also changes depending on the proximity between the focus position x and the basic path sweep space 300 around the focus position x. When the basic path sweep space 300 around the attention position x is close to the attention position x, it is preferable for the robot 10 to pass through the attention position x in order to shorten the movement path. Therefore, by setting the potential P(x) of the attention position x based on the robot density ρr(x), which also changes depending on the proximity of the attention position x to the basic path sweep space 300 around the attention position x, it is possible to appropriately increase the use priority of movement path candidates with short path lengths.

[0106] The method of setting the usage priority based on the obstacle information 32 and the basic path 130 is not limited to the above example. For example, the priority setting unit 20 calculates the second summation value using the robot density ρr(x) instead of the potential P(x) in the above-described method of calculating the potential evaluation value. Specifically, the priority setting unit 20 calculates, as the first summation value, the summation value of the robot densities ρr(x) at multiple positions x included in the robot range 115 of the robot 10 in the target posture in the target movement path candidate 135. The priority setting unit 20 calculates the first summation value for each of multiple target robot postures in the target movement path candidate. Then, the priority setting unit 20 calculates, as the second summation value, the summation value of the first summation values ​​calculated for the multiple target robot postures. This second summation value is referred to as the robot density evaluation value Vρr. The robot density evaluation value Vρr for the target movement path candidate can be said to be an evaluation value representing the closeness between the target movement path candidate and the basic path 130.

[0107] The priority setting unit 20 may set the use priority based on the robot density evaluation value Vρr and the obstacle density evaluation value Vρo for the movement path candidate. For example, the priority setting unit 20 integrates the robot density evaluation value Vρr and the obstacle density evaluation value Vρo for the movement path candidate to obtain an integrated evaluation value CV1r that represents the use priority of the movement path candidate. The priority setting unit 20 calculates the integrated evaluation value CV1r using, for example, the following equation (2).

[0108]

[0109] C2 in Equation (2) is a constant. The integrated evaluation value CV1r of the target movement path candidate indicates a larger value the farther the target movement path candidate is from the obstacle 60, and indicates a larger value the closer the target movement path candidate is to the basic path 130. The larger the integrated evaluation value CV1r of the movement path candidate, the higher the use priority of the movement path candidate. The priority setting unit 20 uses the integrated evaluation value CV1r as an evaluation value representing the use priority instead of the potential evaluation value. The use priority of the movement path candidate is set by calculating the integrated evaluation value CV1r of the movement path candidate. In the selection execution process, the determination unit 21 may select B movement path candidates whose integrated evaluation value CV1r is equal to or greater than a threshold value from A movement path candidates. In the ordering execution process, the determination unit 21 may set an execution order of the interference detection process for each of the A movement path candidates such that the larger the integrated evaluation value CV1r corresponding to the movement path candidate, the earlier the execution order of the interference detection process for the movement path candidate.

[0110] The priority setting unit 20 may set the use priority without integrating the robot density evaluation value Vρr and the obstacle density evaluation value Vρo. In this case, for example, the priority setting unit 20 assigns a higher use priority to a movement path candidate as the obstacle density evaluation value Vρo of the movement path candidate increases. Then, when there are multiple movement path candidates with the same obstacle density evaluation value Vρo, the priority setting unit 20 assigns a higher use priority to a movement path candidate as the robot density evaluation value Vρr increases among the multiple movement path candidates.

[0111] As another example, the priority setting unit 20 may set the use priority of a movement path candidate based on the obstacle information 32 and the closeness of the movement path candidate to the basic path 130. In this case, the priority setting unit 20 calculates a basic path closeness evaluation value V1r that indicates the degree of closeness of the movement path candidate to the basic path 130. The priority setting unit 20, for example, sets a plurality of representative points for the movement path candidate. Then, the priority setting unit 20 calculates the shortest distance from each of the plurality of representative points to the basic path 130. The priority setting unit 20 sets the sum of the shortest distances calculated for the plurality of representative points of the movement path candidate as the basic path closeness evaluation value V1r for the movement path candidate. The smaller the basic path closeness evaluation value V1r of the movement path candidate, the closer the movement path candidate is to the basic path 130.

[0112] The priority setting unit 20 integrates the basic route closeness evaluation value V1r calculated for the operation route candidate and the obstacle density evaluation value Vρo for the operation route candidate to calculate an integrated evaluation value CV2r that indicates the use priority of the operation route candidate. The priority setting unit 20 calculates the integrated evaluation value CV2r using, for example, the following formula (3).

[0113]

[0114] C3 in formula (3) is a constant. The integrated evaluation value CV2r of the target movement path candidate indicates a larger value the farther the target movement path candidate is from the obstacle 60, and indicates a larger value the closer the target movement path candidate is to the basic movement path 130. The larger the integrated evaluation value CV2r of the movement path candidate, the higher the use priority of the movement path candidate. The priority setting unit 20 uses the integrated evaluation value CV2r as an evaluation value representing the use priority instead of the potential evaluation value. By calculating the integrated evaluation value CV2r of the movement path candidate, the use priority of the movement path candidate is set.

[0115] The priority setting unit 20 may set the use priority without integrating the basic route closeness evaluation value V1r and the obstacle density evaluation value Vρo. In this case, for example, the priority setting unit 20 assigns a higher use priority to a movement route candidate as the obstacle density evaluation value Vρo of the movement route candidate increases. Then, when there are multiple movement route candidates with the same obstacle density evaluation value Vρo, the priority setting unit 20 assigns a higher use priority to a movement route candidate as the basic route closeness evaluation value V1r decreases.

[0116] As another example, the priority setting unit 20 may set the use priority of the candidate movement path based on the difference between the change pattern of the robot posture on the basic path 130 in the actual workspace 100 and the change pattern of the robot posture on the candidate movement path, and based on the obstacle information 32. Here, the change pattern of the robot posture on the basic path 130 in the actual workspace 100 is referred to as the basic path posture change pattern. Also, the change pattern of the robot posture on the candidate movement path in the actual workspace 100 is referred to as the movement path candidate posture change pattern. Also, the change pattern of the robot posture on the candidate movement path in the actual workspace 100 is referred to as the candidate movement path posture change pattern. The basic path posture change pattern is the change pattern of the robot posture when the robot 10 moves on the basic path 130. The candidate movement path change pattern is the change pattern of the robot posture when the robot 10 moves on the movement path candidate.

[0117] The priority setting unit 20 calculates a pattern difference evaluation value V2r that indicates the degree of difference between the posture change pattern of the movement path candidate and the basic path posture change pattern. The smaller the pattern difference evaluation value V2r, the smaller the difference between the posture change pattern of the movement path candidate and the basic path posture change pattern. The smaller the difference between the posture change pattern of the target movement path candidate and the basic path posture change pattern, the closer the target movement path candidate is to the basic path 130. Therefore, the smaller the pattern difference evaluation value V2r of the target movement path candidate, the closer the target movement path candidate is to the basic path 130.

[0118] The priority setting unit 20 integrates the pattern difference evaluation value V2r calculated for the movement path candidate and the obstacle density evaluation value Vρo for the movement path candidate to calculate an integrated evaluation value CV3r that indicates the use priority of the movement path candidate. The priority setting unit 20 calculates the integrated evaluation value CV3r using, for example, the following formula (4).

[0119]

[0120] C4 in formula (4) is a constant. The integrated evaluation value CV3r of the target movement path candidate indicates a larger value the farther the target movement path candidate is from the obstacle 60, and indicates a larger value the smaller the difference between the target movement path candidate's posture change pattern and the basic path posture change pattern. The larger the integrated evaluation value CV3r of the movement path candidate, the higher the use priority of the movement path candidate. The priority setting unit 20 uses the integrated evaluation value CV3r as an evaluation value representing the use priority instead of the potential evaluation value. By calculating the integrated evaluation value CV3r of the movement path candidate, the use priority of the movement path candidate is set.

[0121] When calculating the pattern difference evaluation value V2r, the priority setting unit 20 sets, for example, a plurality of representative points 117 for the robot 10, as shown in FIG. 13 above. The representative points 117 are called robot representative points 117. The priority setting unit 20 also sets a plurality of representative points 135a for a movement path candidate 135, as shown in FIG. 17, for example. The representative points 135a of the movement path candidate 135 are called path candidate representative points 135a. Then, for each of the plurality of path candidate representative points 135a, the priority setting unit 20 sets the point on the basic path 130 that is the shortest distance from the path candidate representative point 135a to the basic path 130 as the representative point 130a (also called basic path representative point 130a) corresponding to the path candidate representative point 135a. For one movement path candidate 135, a plurality of combinations of the path candidate representative point 135a and the corresponding basic path representative point 130a are obtained.

[0122] Hereinafter, a combination of one path candidate representative point 135a and one corresponding basic path representative point 130a will be referred to as a representative point combination 350a. Multiple representative point combinations 350a are obtained for one operation path candidate 135. The path candidate representative point 135a of interest will be referred to as a preferred path candidate representative point 135a. The basic path representative point 130a corresponding to the preferred path candidate representative point 135a will be referred to as a preferred basic path representative point 130a. The combination of the preferred path candidate representative point 135a and the corresponding preferred basic path representative point 130a will be referred to as a preferred representative point combination 350a. The preferred robot representative point 117 will be referred to as a preferred robot representative point 117.

[0123] Figure 18 is a schematic diagram showing an example of a robot 10 (also referred to as robot 10a) when a predetermined location 10P of the robot 10 is located at the candidate attention path representative point 135a of the candidate attention movement path 135, and a robot 10 (also referred to as robot 10b) when a predetermined location 10P of the robot 10 is located at the candidate attention basic path representative point 130a.

[0124] The priority setting unit 20 calculates a distance d20 between the attention robot representative point 117 (also referred to as the attention robot representative point 117a) of the robot 10a when the predetermined location 10P of the robot 10 is located at the attention path candidate representative point 135a of the attention movement path candidate 135, and the attention robot representative point 117 (also referred to as the attention robot representative point 117b) of the robot 10b when the predetermined location 10P of the robot 10 is located at the attention basic path representative point 130a. The priority setting unit 20 calculates the distance d20 for each robot representative point 117. Then, the priority setting unit 20 sets the sum of the distances d20 calculated for the multiple robot representative points 117 set for the robot 10 as the total distance value corresponding to the attention representative point combination 350a. The sum of distances corresponding to the combination of focus representative points 350a represents the difference between the robot posture when a predetermined location 10P of the robot 10 is located at the focus route candidate representative point 135a and the robot posture when a predetermined location 10P of the robot 10 is located at the focus basic route representative point 130a.

[0125] The priority setting unit 20 calculates a distance sum value corresponding to each of a plurality of representative point combinations 350a for the target movement path candidate 135. Then, the priority setting unit 20 sets the sum of a plurality of distance sum values ​​corresponding to each of the plurality of representative point combinations 350a for the target movement path candidate 135 as a pattern difference evaluation value V2r representing the degree of difference between the target movement path candidate posture change pattern and the basic path posture change pattern. In this way, the priority setting unit 20 calculates the pattern difference evaluation value V2r for each movement path candidate 135. Then, the priority setting unit 20 calculates an integrated evaluation value CV3r for each movement path candidate 135 using the above formula (4).

[0126] The priority setting unit 20 may set the use priority without integrating the pattern difference evaluation value V2r and the obstacle density evaluation value Vρo. In this case, for example, the priority setting unit 20 assigns a higher use priority to a movement path candidate as the obstacle density evaluation value Vρo of the movement path candidate increases. Then, when there are multiple movement path candidates with the same obstacle density evaluation value Vρo, the priority setting unit 20 assigns a higher use priority to a movement path candidate as the pattern difference evaluation value V2r decreases among the multiple movement path candidates.

[0127] <Example of method for setting use priority based on past movement paths of robot> The priority setting unit 20 may set use priority based on the obstacle information 32 and past movement paths set by the path setting unit 22. An example of the operation of the priority setting unit 20 in this case will be described below. Hereinafter, the movement path of the robot 10 set by the path setting unit 22 may be referred to as a set path.

[0128] If the working environment of the robot 10, including the shape and position of the obstacle 60, does not change significantly in a short period of time, there is a high possibility that the robot 10 will not interfere with the obstacle 60 for a candidate movement path that is close to a movement path that the robot 10 has recently moved. Therefore, the priority setting unit 20 may set the use priority based on the movement path (also referred to as the most recently set path) that was most recently set by the path setting unit 22 and the obstacle information 32. The method of setting the use priority based on the most recently set path and the obstacle information 32 is the same as, for example, the above-described method of setting the use priority based on the basic path 130 and the obstacle information 32, in which the most recently set path is used instead of the basic path 130.

[0129] For example, the priority setting unit 20 calculates, for each position x in the actual workspace 100, a robot density ρs(x), which changes depending on the extent to which the space through which the robot 10 passes when moving along the most recently set path exists around the position x. The space through which the robot 10 passes when moving along the most recently set path can also be said to be the operating range of the entire robot 10 when moving along the most recently set path. Hereinafter, the space through which the robot 10 passes when moving along the most recently set path will also be referred to as the most recently set path sweep space. Furthermore, the robot density ρs(x) may be referred to as the first robot density ρs(x), and the above robot density ρr(x) based on the basic path 130 may be referred to as the second robot density ρr(x).

[0130] The first robot density ρs(x) at a certain position x can also be considered a value that represents the extent to which the most recently set path sweep space exists around the certain position x. The larger the value of the first robot density ρs(x) at a certain position x, the greater the extent to which the most recently set path sweep space exists around the certain position x. In other words, the larger the value of the first robot density ρs(x) at a certain position x, the greater the range occupied by the most recently set path sweep space around the certain position x. The priority setting unit 20 can identify the most recently set path sweep space based on the most recently set path and robot information 31.

[0131] The priority setting unit 20 determines the use priority based on the first robot density ρs(x), which changes depending on the extent to which the most recently set path sweep space exists around the position x, and the obstacle density ρo(x). For example, the priority setting unit 20 sets the potential P(x) for each position x based on the first robot density ρs(x) and the obstacle density ρo(x). For example, the priority setting unit 20 calculates the potential P(x) using the following equation (5):

[0132]

[0133] D in equation (5) is a constant. The priority setting unit 20 uses the potential P(x) calculated using equation (5) to calculate a potential evaluation value representing the use priority as described above. By calculating the potential evaluation value of the movement path candidate, the use priority of the movement path candidate is set. The priority setting unit 20 can calculate the first robot density ρs(x) in the same way as the obstacle density ρo(x) and the second robot density ρr(x).

[0134] The priority setting unit 20 may set the use priority based on the J most recently set routes (J is an integer equal to or greater than 2) set by the route setting unit 22 and the obstacle information 32. Here, of the J most recently set routes set by the route setting unit 22, the operation route set jth (j is a variable, 1≦j≦J) from the current time point is called the jth set route. The first set route is the most recently set route.

[0135] The priority setting unit 20 calculates, for each position x in the actual workspace 100, a first robot density ρsj(x), which changes depending on the extent to which the space through which the robot 10 passes when moving along the jth set path exists around the position x. Hereinafter, the space through which the robot 10 passes when moving along the jth set path will also be referred to as the jth set path sweep space. The first robot density ρs1(x) is the above-mentioned first robot density ρs(x), and the first set path sweep space is the above-mentioned most recently set path sweep space. The priority setting unit 20 can identify the jth set path sweep space based on the jth set path and the robot information 31.

[0136] The priority setting unit 20 determines the use priority based on the J first robot densities ρs1(x) to ρsJ(x) and the obstacle density ρo(x). For example, the priority setting unit 20 sets the potential P(x) for each position x based on the J first robot densities ρs1(x) to ρsJ(x) and the obstacle density ρo(x). For example, the priority setting unit 20 calculates the potential P(x) using the following equation (6):

[0137]

[0138] D1 to DJ in equation (6) are constants, with D1 > D2 > ... > DJ. The priority setting unit 20 uses the potential P(x) calculated using equation (6) to calculate a potential evaluation value representing the use priority as described above. By calculating the potential evaluation value of the movement path candidate, the use priority of the movement path candidate is set. The priority setting unit 20 can calculate the first robot density ρsj(x) in the same manner as the first robot density ρs(x).

[0139] In this way, the priority setting unit 20 sets the use priority based on the obstacle information 32 and the previously set routes, thereby making it possible to increase the use priority of a movement route candidate that is less likely to cause the robot 10 to interfere with the obstacle 60. This makes it possible to efficiently set a movement route that does not cause the robot 10 to interfere with the obstacle 60.

[0140] The method of setting the usage priority based on the obstacle information 32 and the previously set paths is not limited to the above example. For example, the priority setting unit 20 calculates the second summation value using the first robot density ρs(x) instead of the potential P(x) in the above method of calculating the potential evaluation value. Specifically, the priority setting unit 20 calculates, as the first summation value, the summation value of the first robot densities ρs(x) at multiple positions x included in the robot range 115 of the robot 10 in the target posture in the target movement path candidate 135. The priority setting unit 20 calculates the first summation value for each of multiple target robot postures in the target movement path candidate. Then, the priority setting unit 20 calculates, as the second summation value, the summation value of the first summation values ​​calculated for the multiple target robot postures. This second summation value is referred to as the robot density evaluation value Vρs. The robot density evaluation value Vρs for the target movement path candidate can be considered to be an evaluation value representing the proximity of the target movement path candidate to the most recently set path.

[0141] The priority setting unit 20 integrates the robot density evaluation value Vρs and the obstacle density evaluation value Vρo for the movement path candidate to obtain an integrated evaluation value CV1s that indicates the use priority of the movement path candidate. The priority setting unit 20 calculates the integrated evaluation value CV1s using, for example, the following equation (7).

[0142]

[0143] In equation (7), E is a constant. The integrated evaluation value CV1s of the target movement path candidate indicates a larger value the farther the target movement path candidate is from the obstacle 60, and indicates a larger value the closer the target movement path candidate is to the most recently set path. The larger the integrated evaluation value CV1s of the movement path candidate, the higher the use priority of the movement path candidate. The priority setting unit 20 uses the integrated evaluation value CV1s as an evaluation value representing the use priority instead of the potential evaluation value.

[0144] The priority setting unit 20 may calculate the second sum for each of the J first robot densities ρs1(x) to ρsJ(x) by using the first robot density ρsj(x) instead of the potential P(x) in the above-described method for calculating the potential evaluation value. The second sum calculated by using the first robot density ρsj(x) instead of the potential P(x) is referred to as the robot density evaluation value Vρsj. The robot density evaluation value Vρs1 when j = 1 is the above-described robot density evaluation value Vρs. The priority setting unit 20 may also calculate an integrated evaluation value CV10s that represents the usage priority of the movement path candidate by integrating the J robot density evaluation values ​​Vρs1 to VρsJ and the obstacle density evaluation value Vρo for the movement path candidate. The priority setting unit 20 calculates the integrated evaluation value CV10s using, for example, the following equation (8):

[0145]

[0146] In equation (8), E1 to EJ are constants, with E1 > E2 > ... > EJ. The larger the integrated evaluation value CV10s of a movement path candidate, the higher the use priority of the movement path candidate. The priority setting unit 20 uses the integrated evaluation value CV10s as an evaluation value representing the use priority instead of the potential evaluation value.

[0147] The priority setting unit 20 may set the use priority without integrating the robot density evaluation value Vρs and the obstacle density evaluation value Vρo. In this case, for example, the priority setting unit 20 assigns a higher use priority to a movement path candidate as the obstacle density evaluation value Vρo of the movement path candidate increases. Then, when there are multiple movement path candidates with the same obstacle density evaluation value Vρo, the priority setting unit 20 assigns a higher use priority to a movement path candidate as the robot density evaluation value Vρs increases among the multiple movement path candidates.

[0148] The priority setting unit 20 may also set use priorities without integrating the J robot density evaluation values ​​Vρs1 to VρsJ and the obstacle density evaluation value Vρo. In this case, for example, the priority setting unit 20 assigns a higher use priority to a movement path candidate with a larger obstacle density evaluation value Vρo. When there are multiple movement path candidates with the same obstacle density evaluation value Vρo, the priority setting unit 20 assigns a higher use priority to a movement path candidate with a larger integrated robot density evaluation value obtained by integrating the J robot density evaluation values ​​Vρs1 to VρsJ among the multiple movement path candidates. In this case, the priority setting unit 20 calculates, for example, Ej·Vρsj for each of the J robot density evaluation values ​​Vρs1 to VρsJ. The priority setting unit 20 then assigns the value obtained by adding together the J values ​​E1·Vρs1 to EJ·VρsJ as the integrated robot density evaluation value.

[0149] As another example, the priority setting unit 20 may set the use priority of a movement path candidate based on the obstacle information 32 and the proximity of the movement path candidate to the most recently set route. In this case, the priority setting unit 20 calculates a most recently set route closeness evaluation value V1s, which indicates the degree of closeness of the movement path candidate to the most recently set route. The priority setting unit 20 can calculate the most recently set route closeness evaluation value V1s, for example, in the same manner as the basic route closeness evaluation value V1r. Specifically, the priority setting unit 20 sets multiple representative points for the movement path candidate. Then, for each of the multiple representative points, the priority setting unit 20 calculates the shortest distance from the representative point to the most recently set route. The priority setting unit 20 sets the sum of the shortest distances calculated for the multiple representative points of the movement path candidate as the most recently set route closeness evaluation value V1s for the movement path candidate. The smaller the most recently set route closeness evaluation value V1s of the movement path candidate, the closer the movement path candidate is to the most recently set route.

[0150] The priority setting unit 20 integrates the most recently set route closeness evaluation value V1s calculated for the operation route candidate and the obstacle density evaluation value Vρo for the operation route candidate to calculate an integrated evaluation value CV2s that indicates the use priority of the operation route candidate. The priority setting unit 20 calculates the integrated evaluation value CV2s using, for example, the following formula (9).

[0151]

[0152] In equation (9), F is a constant. The larger the integrated evaluation value CV2s of a movement path candidate, the higher the use priority of the movement path candidate. The priority setting unit 20 uses the integrated evaluation value CV2s as an evaluation value representing the use priority instead of the potential evaluation value. By calculating the integrated evaluation value CV2s of the movement path candidate, the use priority of the movement path candidate is set.

[0153] The priority setting unit 20 may calculate a jth set route closeness evaluation value V1sj representing the degree of closeness of the action route candidate to the jth set route for each of the first to Jth set routes. The priority setting unit 20 may calculate the jth set route closeness evaluation value V1sj in the same manner as for the most recent set route closeness evaluation value V1s. The priority setting unit 20 may calculate an integrated evaluation value CV20s representing the use priority of the action route candidate by integrating J evaluation values, from the first set route closeness evaluation value V1s1 to the Jth set route closeness evaluation value V1sJ, for the action route candidate and the obstacle density evaluation value Vρo for the action route candidate. The priority setting unit 20 calculates the integrated evaluation value CV20s using, for example, the following formula (10):

[0154]

[0155] In equation (10), F1 to FJ are constants, with F1 > F2 > ... > FJ. The larger the integrated evaluation value CV20s of a movement path candidate, the higher the use priority of the movement path candidate. The priority setting unit 20 uses the integrated evaluation value CV20s as an evaluation value representing the use priority instead of the potential evaluation value.

[0156] The priority setting unit 20 may set the use priority without integrating the most recently set route closeness evaluation value V1s and the obstacle density evaluation value Vρo. In this case, for example, the priority setting unit 20 assigns a higher use priority to a movement route candidate as the obstacle density evaluation value Vρo of the movement route candidate increases. Then, when there are multiple movement route candidates with the same obstacle density evaluation value Vρo, the priority setting unit 20 assigns a higher use priority to a movement route candidate as the most recently set route closeness evaluation value V1s decreases.

[0157] The priority setting unit 20 may also set the use priority without integrating the J evaluation values ​​from the first set route closeness evaluation value V1s1 to the Jth set route closeness evaluation value V1sJ with the obstacle density evaluation value Vρ. In this case, for example, the priority setting unit 20 assigns a higher use priority to a motion route candidate having a larger obstacle density evaluation value Vρ. When there are multiple motion route candidates with the same obstacle density evaluation value Vρ, the priority setting unit 20 assigns a higher use priority to a motion route candidate having a smaller integrated closeness evaluation value obtained by integrating the J evaluation values ​​from the first set route closeness evaluation value V1s1 to the Jth set route closeness evaluation value V1sJ among the multiple motion route candidates. In this case, the priority setting unit 20 calculates, for example, Fj·V1sj for each of the J evaluation values ​​from the first set route closeness evaluation value V1s1 to the Jth set route closeness evaluation value V1sJ. Then, the priority setting unit 20 determines the value obtained by adding up the J values ​​from F1·V1s1 to FJ·V1sJ as the integrated closeness evaluation value.

[0158] As another example, the priority setting unit 20 may set the use priority of the candidate movement path based on the difference between the change pattern of the robot's posture on the most recently set path in the actual workspace 100 and the change pattern of the robot's posture on the candidate movement path (i.e., the candidate movement path posture change pattern), and the obstacle information 32. Here, the change pattern of the robot 10's posture on the most recently set path in the actual workspace 100 is referred to as the most recently set path posture change pattern. The most recently set path posture change pattern is the change pattern of the robot's posture when the robot 10 moves on the most recently set path.

[0159] The priority setting unit 20 calculates a pattern difference evaluation value V2s that indicates the degree of difference between the posture change pattern of the movement path candidate and the posture change pattern of the most recently set path. The smaller the pattern difference evaluation value V2s, the smaller the difference between the posture change pattern of the movement path candidate and the posture change pattern of the most recently set path. The smaller the difference between the posture change pattern of the attention movement path candidate and the posture change pattern of the most recently set path, the closer the attention movement path candidate is to the most recently set path. Therefore, the smaller the pattern difference evaluation value V2s of the attention movement path candidate, the closer the attention movement path candidate is to the most recently set path. The priority setting unit 20 can calculate the pattern difference evaluation value V2s in the same way as the pattern difference evaluation value V2r described above.

[0160] The priority setting unit 20 integrates the pattern difference evaluation value V2s calculated for the movement path candidate and the obstacle density evaluation value Vρo for the movement path candidate to calculate an integrated evaluation value CV3s that indicates the use priority of the movement path candidate. The priority setting unit 20 calculates the integrated evaluation value CV3s using, for example, the following formula (11).

[0161]

[0162] In equation (11), G is a constant. The larger the integrated evaluation value CV3s of a movement path candidate, the higher the use priority of the movement path candidate. The priority setting unit 20 uses the integrated evaluation value CV3s as an evaluation value representing the use priority instead of the potential evaluation value. By calculating the integrated evaluation value CV3s of the movement path candidate, the use priority of the movement path candidate is set.

[0163] The priority setting unit 20 may calculate, for each of the first to Jth set paths, a pattern difference evaluation value V2sj that indicates the degree of difference between the posture change pattern of the movement path candidate and the posture change pattern of the robot 10 on the jth set path. The priority setting unit 20 may calculate the pattern difference evaluation value V2sj in the same manner as the above-mentioned pattern difference evaluation value V2r. The priority setting unit 20 may calculate an integrated evaluation value CV30s that indicates the use priority of the movement path candidate by integrating the J pattern difference evaluation values ​​V2s1 to V2sJ for the movement path candidate and the obstacle density evaluation value Vρo for the movement path candidate. The priority setting unit 20 calculates the integrated evaluation value CV30s using, for example, the following equation (12):

[0164]

[0165] In equation (12), G1 to GJ are constants, with G1 > G2 > ... > GJ. The larger the integrated evaluation value CV30s of a movement path candidate, the higher the use priority of the movement path candidate. The priority setting unit 20 uses the integrated evaluation value CV30s as an evaluation value representing the use priority instead of the potential evaluation value.

[0166] The priority setting unit 20 may set the use priority without integrating the pattern difference evaluation value V2s and the obstacle density evaluation value Vρo. In this case, for example, the priority setting unit 20 assigns a higher use priority to a movement path candidate as the obstacle density evaluation value Vρo of the movement path candidate increases. Then, when there are multiple movement path candidates with the same obstacle density evaluation value Vρo, the priority setting unit 20 assigns a higher use priority to a movement path candidate as the pattern difference evaluation value V2s decreases among the multiple movement path candidates.

[0167] The priority setting unit 20 may also set use priorities without integrating the J pattern difference evaluation values ​​V2s1 to V2sJ and the obstacle density evaluation value Vρo. In this case, for example, the priority setting unit 20 assigns a higher use priority to a movement path candidate with a larger obstacle density evaluation value Vρo. When there are multiple movement path candidates with the same obstacle density evaluation value Vρo, the priority setting unit 20 assigns a higher use priority to a movement path candidate with a smaller integrated pattern difference evaluation value obtained by integrating the J pattern difference evaluation values ​​V2s1 to V2sJ among the multiple movement path candidates. In this case, the priority setting unit 20 calculates, for example, Gj·V2sj for each of the J pattern difference evaluation values ​​V2s1 to V2sJ. The priority setting unit 20 then assigns the negative value of the sum of the J values ​​from G1·V2s1 to GJ·V2sJ to the integrated pattern difference evaluation value.

[0168] In the above example, the priority setting unit 20 sets the use priorities based on the obstacle information 32 and the previously set routes. However, the use priorities may be set based only on the previously set routes among the obstacle information 32 and the previously set routes. In this case, the priority setting unit 20 may, for example, set the first robot density ρs(x) as the potential P(x) and calculate the potential evaluation value based on the thus set potential P(x). Alternatively, the priority setting unit 20 may set the integrated robot density obtained by adding together J values ​​from D1·ρs1(x) to DJ·ρsJ(x) as the potential P(x) and calculate the potential evaluation value based on the thus set potential P(x). Alternatively, the priority setting unit 20 may use the robot density evaluation value Vρs as the evaluation value representing the use priorities instead of the potential evaluation value. Alternatively, the priority setting unit 20 may use the integrated robot density evaluation value obtained by adding together J values ​​from E1·Vρs1 to EJ·VρsJ as the evaluation value representing the use priorities instead of the potential evaluation value. Alternatively, the priority setting unit 20 may use a negative value of the most recently set path closeness evaluation value V1s as an evaluation value representing a use priority, instead of the potential evaluation value. Alternatively, the priority setting unit 20 may use a negative value of the integrated closeness evaluation value obtained by adding together J values ​​from F1·V1s1 to FJ·V1sJ as an evaluation value representing a use priority, instead of the potential evaluation value. Alternatively, the priority setting unit 20 may use a negative value of the pattern difference evaluation value V2s as an evaluation value representing a use priority, instead of the potential evaluation value. Alternatively, the priority setting unit 20 may use a negative value of the integrated pattern difference evaluation value obtained by adding together J values ​​from G1·V2s1 to GJ·V2sJ as an evaluation value representing a use priority, instead of the potential evaluation value.

[0169] The priority setting unit 20 may also set the use priority based on the obstacle information 32, the basic route 130, and previously set routes. In this case, for example, the priority setting unit 20 may set the value obtained by adding C1·ρr(x) to the value on the right side of equation (5) or (6) as the potential P(x), and calculate the potential evaluation value based on the potential P(x) thus set. Alternatively, the priority setting unit 20 may use the value obtained by adding C2·Vρr to the value on the right side of any one of equations (7) to (12) as an integrated evaluation value representing the use priority, instead of the potential evaluation value. Alternatively, the priority setting unit 20 may use the value obtained by adding −C3·V1r to the value on the right side of any one of equations (7) to (12) as an integrated evaluation value representing the use priority, instead of the potential evaluation value. Alternatively, the priority setting unit 20 may add −C4·V2r to the value on the right side of any one of equations (7) to (12) and use the result as an integrated evaluation value representing the usage priority instead of the potential evaluation value.

[0170] Furthermore, the priority setting unit 20 may set the use priority based only on the basic route 130 and the previously set routes among the obstacle information 32, the basic route 130, and the previously set routes. In this case, for example, the priority setting unit 20 may set the value obtained by adding C1·ρr(x) to the first robot density ρs(x) as the potential P(x), and calculate the potential evaluation value based on the potential P(x) thus set. Alternatively, the priority setting unit 20 may set the value obtained by adding C1·ρr(x) to the integrated robot density obtained by adding J values ​​from D1·ρs1(x) to DJ·ρsJ(x), and calculate the potential evaluation value based on the potential P(x) thus set. Alternatively, the priority setting unit 20 may use the value obtained by adding C2·Vρr, −C3·V1r, or −C4·V2r to the robot density evaluation value Vρs as the evaluation value representing the use priority, instead of the potential evaluation value. Alternatively, the priority setting unit 20 may use a value obtained by adding C2·Vρr, −C3·V1r, or −C4·V2r to an integrated robot density evaluation value obtained by adding together J values ​​from E1·Vρs1 to EJ·VρsJ as an evaluation value representing a use priority instead of a potential evaluation value. Alternatively, the priority setting unit 20 may use a value obtained by adding C2·Vρr, −C3·V1r, or −C4·V2r to a negative value of the most recently set path closeness evaluation value V1s as an evaluation value representing a use priority instead of a potential evaluation value. Alternatively, the priority setting unit 20 may use a value obtained by adding C2·Vρr, −C3·V1r, or −C4·V2r to a negative value of the integrated closeness evaluation value obtained by adding together J values ​​from F1·V1s1 to FJ·V1sJ as an evaluation value representing a use priority instead of a potential evaluation value. Alternatively, the priority setting unit 20 may use the value obtained by adding C2·Vρr, −C3·V1r, or −C4·V2r to the negative value of the pattern difference evaluation value V2s as the evaluation value representing the usage priority instead of the potential evaluation value.Alternatively, the priority setting unit 20 may use the value obtained by adding C2·Vρr, −C3·V1r, or −C4·V2r to the negative value of the integrated pattern difference evaluation value obtained by adding together J values ​​from G1·V2ρs1 to GJ·V2sJ as an evaluation value representing the usage priority instead of the potential evaluation value.

[0171] The priority setting unit 20 may set the use priority based on a previously set route and the operation result when the robot 10 operates along the previously set route.

[0172] Here, suppose that when the robot 10 operates along a certain set path, an undesirable operation result is obtained. In this case, when the robot 10 operates along a set path that is the same as or close to the certain set path, an undesirable operation result may be obtained. Also, suppose that when the robot 10 operates along a certain set path, a desirable operation result is obtained. In this case, when the robot 10 operates along a set path that is the same as or close to the certain set path, a desirable operation result may be obtained.

[0173] The priority setting unit 20 sets use priorities based on previously set paths and the movement results of the robot 10 when it moves along those previously set paths, so that it is possible to set high use priorities for movement path candidates that are likely to result in favorable movement results. This makes it possible to efficiently set movement paths that are likely to result in favorable movement results.

[0174] For example, consider a case where the priority setting unit 20 uses Equation (5) to set the usage priority. In this case, if the motion result of the robot 10 operating along the most recently set path is a desirable motion result, the priority setting unit 20 determines the potential P(x) while leaving the sign of D·ρs(x) on the right side of Equation (5) positive. On the other hand, if the motion result of the robot 10 operating along the most recently set path is an undesirable motion result, the priority setting unit 20 changes the sign of D·ρs(x) on the right side of Equation (5) from positive to negative to determine the potential P(x). As a result, if the motion result of the robot 10 operating along the most recently set path is an undesirable motion result, the usage priority of the motion path candidate closer to the most recently set path is set low.

[0175] A desirable operation result may include a situation in which the operation time from the start time to the end time of the robot 10 moving along a set path is equal to or less than the average value for a predetermined period of time in the recent past. The operation time and average value of the robot 10 are determined, for example, by the control unit 2. A desirable operation result may also include a situation in which the total power consumption of the robot 10 from the start time to the end time of the robot 10 moving along a set path is equal to or less than the average value for a predetermined period of time in the recent past. The robot 10 is equipped with a sensor that measures its power consumption, and the control unit 2 can obtain the power consumption of the robot 10 based on the detection result of the sensor.

[0176] On the other hand, undesirable operation results may include a case where the operation time from the start time to the end time of the robot 10 when moving along a set path is greater than the average value for a predetermined period of time in the past. Furthermore, undesirable operation results may include a case where the total power consumption of the robot 10 from the start time to the end time of the robot 10 when moving along a set path is greater than the average value for a predetermined period of time in the past. Furthermore, undesirable operation results may include a case where the robot 10 slows down or stops due to a person entering the real workspace 100. In this case, for example, the control unit 2 detects the entry of a person into the real workspace 100 based on an image signal from a camera that captures the real workspace 100. Then, when the control unit 2 detects the entry of a person into the real workspace 100, it slows down or stops the operation of the robot 10.

[0177] As another example, consider a case where the priority setting unit 20 sets usage priorities using Equation (6). In this case, if the motion result of the robot 10 operating along the jth set path is a desirable motion result, the priority setting unit 20 leaves the sign of Dj·ρsj(x) on the right-hand side as positive. On the other hand, if the motion result of the robot 10 operating along the jth set path is an undesirable motion result, the priority setting unit 20 changes the sign of Dj·ρsj(x) on the right-hand side from positive to negative. The priority setting unit 20 performs this sign processing for each of the J terms, from D1·ρs1(x) to DJ·ρsJ(x). Then, the priority setting unit 20 calculates the potential P(x) using Equation (6) after the sign processing.

[0178] As another example, consider a case where the priority setting unit 20 sets use priorities using equation (7). In this case, when the operation result of the robot 10 operating along the most recently set path is a desirable operation result, the priority setting unit 20 calculates the integrated evaluation value CV1s using equation (7) as is. On the other hand, when the operation result of the robot 10 operating along the most recently set path is an undesirable operation result, the priority setting unit 20 calculates the integrated evaluation value CV1s by changing the sign of the term corresponding to the most recently set path on the right side of equation (7), i.e., E·Vρs, from positive to negative. The priority setting unit 20 can also calculate the integrated evaluation values ​​CV2s and CV3s in a similar manner when setting use priorities using equations (9) and (11).

[0179] As another example, consider a case where the priority setting unit 20 sets use priorities using Equation (8). In this case, if the operation result of the robot 10 operating along the jth set path is a favorable operation result, the priority setting unit 20 leaves the term corresponding to the jth set path on the right-hand side, i.e., Ej·Vρsj, with a positive sign. On the other hand, if the operation result of the robot 10 operating along the jth set path is an unfavorable operation result, the priority setting unit 20 changes the sign of Ej·Vρsj on the right-hand side from positive to negative. The priority setting unit 20 performs this sign processing on each of the J terms, from E1·Vρs1 to EJ·VρsJ. The priority setting unit 20 then calculates the integrated evaluation value CV10s using Equation (8) after the sign processing. Even when setting use priorities using Equations (10) and (12), the priority setting unit 20 can similarly calculate the integrated evaluation values ​​CV20s and CV30s using Equations (10) and (12) after the sign processing.

[0180] The priority setting unit 20 may determine whether to use a previously set path in setting the usage priority, depending on changes in the working environment of the robot 10 (also referred to as the robot working environment). For example, in step s1 of the movement path setting process, the priority setting unit 20 determines whether the current robot working environment has changed significantly from the robot working environment at the time of the previous execution of the movement path setting process (also referred to as the previous robot working environment). For example, when the current position of an obstacle 60 in the actual workspace 100 has changed significantly from the position of the obstacle 60 at the time of the previous execution of the movement path setting process, the priority setting unit 20 determines that the current robot working environment has changed significantly from the previous robot working environment. In this case, the priority setting unit 20 sets, for example, multiple representative points for the obstacle 60. For each representative point, the priority setting unit 20 calculates the distance between the current position of the representative point and the position of the representative point at the time of the previous execution of the movement path setting process. Then, when the sum of the distances calculated for the multiple representative points set for the obstacle 60 is greater than or equal to a threshold value, the priority setting unit 20 determines that the current position of the obstacle 60 has changed significantly from the position of the obstacle 60 when the previous operation path setting process was executed.

[0181] In step s1, if the priority setting unit 20 determines that the current robot working environment has changed significantly from the previous robot working environment, it decides not to use previously set paths in setting the use priorities. In this case, the priority setting unit 20 sets the use priorities using, for example, any one of the above formulas (1) to (4). On the other hand, if the priority setting unit 20 determines in step s1 that the current robot working environment has not changed significantly from the previous robot working environment, it decides to use previously set paths in setting the use priorities. In this case, the priority setting unit 20 sets the use priorities using, for example, any one of the above formulas (5) to (12).

[0182] Note that the method for determining whether the current robot working environment has changed significantly from the previous robot working environment is not limited to the above. For example, the priority setting unit 20 may determine whether the current robot working environment has changed significantly from the previous robot working environment based on the obstacle density ρo(x). In this case, the priority setting unit 20 calculates, for each position x, a difference between the current obstacle density ρo(x) and the obstacle density ρo(x) at the time of the previous execution of the operation path setting process. Then, if the sum of the difference values ​​calculated for each position x is equal to or greater than a threshold value, the priority setting unit 20 determines that the current robot working environment has changed significantly from the previous robot working environment.

[0183] As another example, the priority setting unit 20 may determine that the current robot working environment has changed significantly from the previous robot working environment when the current position of the start point 120 has changed significantly from the position of the start point 120 when the previous movement path setting process was executed. In this case, the priority setting unit 20 may calculate the distance between the current position of the start point 120 and the position of the start point 120 when the previous movement path setting process was executed, and determine that the current position of the start point 120 has changed significantly from the position of the start point 120 when the previous movement path setting process was executed when the distance is equal to or greater than a threshold. Furthermore, the priority setting unit 20 may determine that the current robot working environment has changed significantly from the previous robot working environment when the current position of the end point 121 has changed significantly from the position of the end point 121 when the previous movement path setting process was executed. In this case, the priority setting unit 20 may calculate the distance between the current position of the end point 121 and the position of the end point 121 at the time the previous operation path setting process was executed, and if the distance is greater than or equal to a threshold value, may determine that the position of the current end point 121 has changed significantly from the position of the end point 121 at the time the previous operation path setting process was executed.

[0184] In this way, the priority setting unit 20 determines whether or not to use previously set paths when setting the use priority in accordance with changes in the robot working environment, thereby making it possible to efficiently increase the use priority of movement path candidates that are less likely to cause the robot 10 to interfere with the obstacle 60. This makes it possible to efficiently set movement paths that do not cause the robot 10 to interfere with the obstacle 60.

[0185] The priority setting unit 20 may determine whether or not to use previously set routes in setting the usage priorities in response to an instruction from the user. In this case, the user instructs the control unit 2, for example, via the input unit 5, whether or not the priority setting unit 20 should use previously set routes in setting the usage priorities.

[0186] <Example of a method for setting use priorities based on areas where it is undesirable for the robot to pass> The priority setting unit 20 may set use priorities based on obstacle information 32 and areas where it is undesirable for the robot 10 to pass (also referred to as specific areas). Fig. 19 is a schematic diagram showing an example of a specific area 400. The specific area 400 in the actual workspace 100 may include, for example, an area where there is a high possibility that a person will enter. An example of the operation of the priority setting unit 20 in this case will be described below.

[0187] For example, the priority setting unit 20 calculates, for each position x in the actual workspace 100, a specific region density ρt(x), which changes depending on the extent to which a specific region 400 exists around the position x. The specific region density ρt(x) at a certain position x can also be said to be a value representing the extent to which a specific region 400 exists around the position x. The larger the value of the specific region density ρt(x) at a certain position x, the greater the extent to which a specific region 400 exists around the position x. The memory unit 3 stores specific region information indicating the position and range of the specific region 400. The priority setting unit 20 can identify the specific region 400 based on the specific region information in the memory unit 3. The specific region 400 is, for example, a three-dimensional space.

[0188] The priority setting unit 20 determines the use priority based on the specific area density ρt(x) and the obstacle density ρo(x). For example, the priority setting unit 20 sets the potential P(x) for each position x based on the specific area density ρt(x) and the obstacle density ρo(x). For example, the priority setting unit 20 calculates the potential P(x) using the following equation (13):

[0189]

[0190] L1 in equation (13) is a constant. The priority setting unit 20 uses the potential P(x) calculated using equation (13) to calculate a potential evaluation value representing the use priority as described above. By calculating the potential evaluation value of the movement path candidate, the use priority of the movement path candidate is set. The priority setting unit 20 can calculate the specific area density ρt(x) in the same way as the obstacle density ρo(x), the first robot density ρs(x), and the second robot density ρr(x).

[0191] In this way, the priority setting unit 20 sets the use priority based on the obstacle information 32 and the specific area 400, thereby making it possible to increase the use priority of a movement path candidate that is unlikely to cause the robot 10 to interfere with the obstacle 60 and is away from areas where it is undesirable for the robot 10 to pass. This makes it possible to efficiently set a movement path that does not cause the robot 10 to interfere with the obstacle 60 and is away from areas where it is undesirable for the robot 10 to pass.

[0192] The method of setting the usage priority based on the obstacle information 32 and the specific area 400 is not limited to the above example. For example, the priority setting unit 20 calculates the second sum value by using the negative value of the specific area density ρt(x) instead of the potential P(x) in the above method of calculating the potential evaluation value. This second sum value is called the specific area density evaluation value Vρt. The specific area density evaluation value Vρt for a target movement path candidate can be said to be an evaluation value representing the distance between the target movement path candidate and the specific area 400, or can be said to be an evaluation value representing the closeness between the target movement path candidate and the specific area 400.

[0193] The priority setting unit 20 integrates the specific area density evaluation value Vρt and the obstacle density evaluation value Vρo for the operation path candidate to obtain an integrated evaluation value CV1t that indicates the use priority of the operation path candidate. The priority setting unit 20 calculates the integrated evaluation value CV1t using, for example, the following formula (14).

[0194]

[0195] L2 in formula (14) is a constant. The integrated evaluation value CV1t of a target movement path candidate indicates a larger value the farther the target movement path candidate is from the obstacle 60, and indicates a larger value the farther the target movement path candidate is from the specific area 400. The larger the integrated evaluation value CV1t of a movement path candidate, the higher the use priority of the movement path candidate. The priority setting unit 20 uses the integrated evaluation value CV1t as an evaluation value representing the use priority instead of the potential evaluation value. Setting the use priority of a target movement path candidate based on the specific area density evaluation value Vρt of the target movement path candidate can also be said to be setting the use priority of the target movement path candidate based on the proximity of the target movement path candidate to the specific area 400.

[0196] The priority setting unit 20 may set the use priority without integrating the specific area density evaluation value Vρt and the obstacle density evaluation value Vρo. In this case, for example, the priority setting unit 20 assigns a higher use priority to a movement path candidate as the obstacle density evaluation value Vρo of the movement path candidate increases. Then, when there are multiple movement path candidates with the same obstacle density evaluation value Vρo, the priority setting unit 20 assigns a higher use priority to a movement path candidate as the specific area density evaluation value Vρt increases among the multiple movement path candidates.

[0197] In the above example, the priority setting unit 20 sets the use priority based on the obstacle information 32 and the specific area 400, but the use priority may be set based only on the specific area 400. In this case, the priority setting unit 20 may, for example, set the potential P(x) to the negative value of the specific area density ρt(x) and calculate the potential evaluation value based on the potential P(x) set in this way. Alternatively, the priority setting unit 20 may use the specific area density evaluation value Vρt as the evaluation value representing the use priority instead of the potential evaluation value.

[0198] Furthermore, the priority setting unit 20 may set the use priority based on at least one of the obstacle information 32 , the basic route 130 and the previously set route, and the specific area 400 .

[0199] For example, consider a case where the priority setting unit 20 sets the usage priority based on the basic route 130 and the specific area 400. In this case, the priority setting unit 20 may calculate the potential P(x) using, for example, equation (1) with -ρt(x) instead of -ρo(x). Alternatively, the priority setting unit 20 may calculate the integrated evaluation value using any one of equations (2) to (4) with Vρt instead of Vρo.

[0200] As another example, consider a case where the priority setting unit 20 sets usage priorities based on previously set routes and the specific area 400. In this case, the priority setting unit 20 may calculate the potential P(x) using, for example, equation (5) or equation (6) with -ρt(x) instead of -ρo(x). Alternatively, the priority setting unit 20 may calculate the integrated evaluation value using any one of equations (7) to (12) with Vρt instead of Vρo.

[0201] As another example, consider a case where the priority setting unit 20 sets the usage priority based on the obstacle information 32, the basic route 130, and the specific area 400. In this case, the priority setting unit 20 may set the value obtained by adding -L1·ρt(x) to the value on the right side of equation (1) as the potential P(x). Alternatively, the priority setting unit 20 may use the value obtained by adding L2·Vρt to the value on the right side of any one of equations (2) to (4) as the integrated evaluation value.

[0202] As another example, consider a case where the priority setting unit 20 sets the usage priority based on the obstacle information 32, the previously set route, and the specific area 400. In this case, the priority setting unit 20 may set the value obtained by adding −L1·ρt(x) to the value on the right side of equation (5) or equation (6) as the potential P(x). Alternatively, the priority setting unit 20 may use the value obtained by adding L2·Vρt to the value on the right side of any one of equations (7) to (12) as the integrated evaluation value.

[0203] As another example, consider a case where the priority setting unit 20 sets usage priorities based on the basic route 130, previously set routes, and the specific area 400. In this case, the priority setting unit 20 may calculate the potential P(x) by using a value obtained by adding C1·ρr(x) and −L1·ρt(x) in place of −ρo(x) in equation (5) or (6). Alternatively, the priority setting unit 20 may calculate the integrated evaluation value by using a value obtained by adding C2·Vρr, −C3·V1r, or −C4·V2r and L2·Vρt in place of Vρo in any one of equations (7) to (12).

[0204] As another example, consider a case where the priority setting unit 20 sets the usage priority based on the obstacle information 32, the basic route 130, the previously set route, and the specific area 400. In this case, the priority setting unit 20 may set the value obtained by adding C1·ρr(x) and −L1·ρt(x) to the value on the right side of equation (5) or equation (6) as the potential P(x). Alternatively, the priority setting unit 20 may use the value obtained by adding C2·Vρr, −C3·V1r, or −C4·V2r to L2·Vρt to the value on the right side of any one of equations (7) to (12) as the integrated evaluation value.

[0205] <Another Operation Example of the Determination Unit> The determination unit 21 may divide the A movement path candidates into a plurality of groups such that those located close to each other belong to one group in the actual workspace 100. Then, for each of the plurality of groups, the determination unit 21 may select the movement path candidate with the highest usage priority from the plurality of movement path candidates belonging to that group, and perform collision detection processing for the selected movement path candidate.

[0206] Fig. 20 is a schematic diagram for explaining an example of a method for dividing A movement path candidates into a plurality of groups by the determination unit 21. In the example of Fig. 20, the determination unit 21 divides A movement path candidates into a plurality of groups based on a binary search method.

[0207] The determination unit 21 uses, for example, a plane 150 on which grid lines 156 are set as shown in Fig. 10 to group the A movement path candidates. In this example, it is assumed that the A movement path candidates each pass through A passing points 155 (in other words, A grid points 157) set on the plane 150.

[0208] For example, the determination unit 21 divides the plane 150 equally into two divided regions 150a. In the example of FIG. 20 , the plane 150 is divided into two in the horizontal direction of the figure. Then, for each divided region 150a, the determination unit 21 groups multiple movement path candidates that pass through multiple pass points 155 set in that divided region 150a. It can be said that multiple movement path candidates that pass through multiple pass points 155 set in one divided region 150a are located close to each other. As a result, the A movement path candidates are divided into two groups such that those that are located close to each other belong to one group. Note that a pass point 155 located on the boundary between two divided regions 150a is treated as a pass point 155 set in one of the two divided regions 150a. This also applies to pass points 155 at the boundaries of multiple divided regions, which will be described later.

[0209] For each group, the determination unit 21 selects the movement path candidate with the highest usage priority from the plurality of movement path candidates belonging to that group as a representative movement path candidate. In Fig. 20, a passing point 155 through which the representative movement path candidate passes is shown as a representative passing point 155a.

[0210] Next, the determination unit 21 selects the representative movement path candidate with the highest usage priority from the representative movement path candidates for the plurality of groups (two groups in this case), and then performs interference determination processing on the selected representative movement path candidate.

[0211] If it is determined in the interference determination process for the representative movement path candidate with the highest usage priority that the robot 10 will not interfere with an obstacle, the above-mentioned step s3 is executed. In step s3, a movement path of the robot 10 is set based on the representative movement path candidate for which it is determined that the robot 10 will not interfere with an obstacle.

[0212] On the other hand, if it is determined in the interference determination process for the representative movement path candidate with the highest usage priority that the robot 10 will interfere with an obstacle, the determination unit 21 executes the interference determination process for the representative movement path candidate with the second highest usage priority. Here, the determination unit 21 executes the interference determination process for the remaining representative movement path candidate of the two representative movement path candidates.

[0213] If it is determined in the interference detection process for the remaining representative movement path candidates that the robot 10 will not interfere with an obstacle, step s3 is executed. On the other hand, if it is determined in the interference detection process for the remaining movement path candidates that the robot 10 will interfere with an obstacle, the determination unit 21 further divides the movement path candidates constituting each of the two groups into two groups such that movement path candidates that are close to each other belong to one group. In this case, as shown in FIG. 21 , the determination unit 21 further divides each divided region 150a equally into two divided regions 150b. As a result, the plane 150 is divided into four divided regions 150b. Then, for each divided region 150b, the determination unit 21 groups together the movement path candidates that pass through each of the pass points 155 set in that divided region 150b. As a result, the A movement path candidates are divided into four groups.

[0214] Next, for each group, the determination unit 21 selects the movement path candidate with the highest usage priority from the multiple movement path candidates belonging to that group as a representative movement path candidate. Next, the determination unit 21 selects the representative movement path candidate with the highest usage priority from the representative movement path candidates for the multiple groups (four groups in this case). Then, the determination unit 21 performs interference detection processing on the selected representative movement path candidate.

[0215] If it is determined in the interference determination process for the representative movement path candidate with the highest usage priority that the robot 10 will not interfere with an obstacle, the above-mentioned step s3 is executed. On the other hand, if it is determined in the interference determination process for the representative movement path candidate with the highest usage priority that the robot 10 will interfere with an obstacle, the determination unit 21 executes the interference determination process for the representative movement path candidate with the second highest usage priority. If it is determined in the interference determination process for the representative movement path candidate with the second highest usage priority that the robot 10 will not interfere with an obstacle, step s3 is executed. On the other hand, if it is determined in the interference determination process for the movement path candidate with the second highest usage priority that the robot 10 will interfere with an obstacle 60, the determination unit 21 executes the interference determination process for the representative movement path candidate with the third highest usage priority. Thereafter, the determination unit 21 operates in the same manner.

[0216] When the determination unit 21 determines that the robot 10 will interfere with the obstacle 60 for each of the four groups of representative path candidates, the determination unit 21 further divides each of the four groups into two groups such that movement path candidates that are close to each other belong to one group. Specifically, as shown in FIG. 22 , the determination unit 21 further equally divides each divided region 150b into two divided regions 150c. As a result, the plane 150 is divided into eight divided regions 150c. Then, for each divided region 150c, the determination unit 21 groups together the movement path candidates that pass through each of the multiple passing points 155 set in that divided region 150b. As a result, the A movement path candidates are divided into eight groups. Thereafter, the determination unit 21 operates in the same manner. The determination unit 21 repeatedly performs the grouping, selection of representative movement path candidates, and interference determination processing until a non-interfering path candidate is found.

[0217] Note that the method of dividing the plane 150 when grouping the A movement path candidates is not limited to the above example. Consider, for example, a case where the position of the passing point 155 on the plane 150 is expressed in polar coordinate format, as in the examples of FIGS. 8 and 9 described above. Here, the direction in which the starting line 152 extends is defined as the x1 direction, and the direction along the plane 150 that is perpendicular to the x1 direction is defined as the y1 direction. For example, as shown in FIG. 23 , the determination unit 21 may first divide the plane 150 into two divided regions 150 a in the x1 direction. Next, as shown in FIG. 24 , the determination unit 21 may divide each divided region 150 a into two divided regions 150 c in the y1 direction. Next, the determination unit 137 may divide each divided region 150 c into two divided regions 150 c in the radial direction, as shown in FIG. 25 .

[0218] In the above example, multiple motion path candidates are divided into two groups at a time, but they may also be divided into three groups, four groups, or five or more groups.

[0219] In this example, the A movement path candidates are divided into a plurality of groups such that those located close to each other belong to one group. Then, for each of the plurality of groups, the movement path candidate with the highest usage priority among the plurality of movement path candidates belonging to that group is subjected to interference detection processing. This makes it possible to sequentially perform interference detection processing on a plurality of movement path candidates with high usage priority that are located far from each other. Therefore, depending on the working environment of the robot 10, it is possible for the robot 10 to quickly find a movement path that does not interfere with obstacles.

[0220] <Example of setting a movement path based on a configuration space> In the above example, the control unit 2 sets the movement path of the robot 10 based on the actual working space 100, but the movement path of the robot 10 may also be set based on the configuration space (also called C space) 500 of the robot 10.

[0221] The C space 500 is, for example, an N-dimensional space in which N parameters (N is an integer equal to or greater than 2) representing the posture of the robot 10 are used as axis values. For example, N=6. The C space 500 is a six-dimensional space in which six parameters θa, θb, θc, θd, θe, and θf are used as axis values. The N axes of the C space 500 are orthogonal to one another. The actual working space 100 can be said to be an N-dimensional space in which N=3.

[0222] Here, the values ​​of the parameters θa, θb, θc, θd, θe, and θf are represented by an, bn, cn, dn, en, and fn, respectively. n is a variable and is, for example, an integer equal to or greater than 0. The coordinates of a certain point in C space 500 (in other words, the coordinates of a certain position) are represented by (an, bn, cn, dn, en, fn).

[0223] In the C space 500, for example, the posture of the robot 10 is represented by a point. Therefore, in the C space 500, the movement of the robot 10 is represented by a line.

[0224] A certain position in the C space 500 corresponds to a specific posture of the robot 10 in the actual workspace 100. In other words, the coordinates of a certain position in the C space 500 represent a specific posture of the robot 10 in the actual workspace 100. For example, the coordinates of a certain position in the C space 500 are (a0, b0, c0, d0, e0, f0). The coordinates (a0, b0, c0, d0, e0, f0) represent the posture of the robot 10 when the values ​​of the rotation angles θa, θb, θc, θd, θe, and θf of the arm 11 of the robot 10 are a0, b0, c0, d0, e0, and f0, respectively. Once the posture of the robot 10 in the actual workspace 100 is determined, the position of a predetermined location 10P of the robot 10 in the actual workspace 100 is determined. Therefore, it can be said that the coordinates of each position in the C space 500 represent the position of the predetermined location 10P of the robot 10 in the actual workspace 100.

[0225] The operation of the control unit 2 when the movement path of the robot 10 is set based on the C space 500 (i.e., the operation of the priority setting unit 20, the determination unit 21, and the path setting unit 22) is basically the same as when the movement path of the robot 10 is set based on the actual workspace 100. Below, the operation of the control unit 2 when the movement path of the robot 10 is set based on the C space 500 will be described, focusing on the differences from the operation of the control unit 2 when the movement path of the robot 10 is set based on the actual workspace 100. In the following description, the above description in three-dimensional space will be generalized to the description in N-dimensional space as necessary.

[0226] 25 , the control unit 2 can acquire A movement path candidates 135 from a start point 120 to an end point 121 of a robot movement in a C space 500, based on a basic path 130 that has the shortest distance connecting the start point 120 and the end point 121. For ease of explanation, in FIG. 25 and the figures described below, the C space 500 is represented by a circle. Here, the coordinates of the start point 120 are represented by (a1, b1, C1, d1, e1, f1), and the coordinates of the end point 121 are represented by (a2, b2, C2, d2, e2, f2).

[0227] The coordinates of the start point 120 in the C space 500 represent, for example, the posture of the robot 10 when the robot 10 holding the object 50 starts a movement operation to move the object 50 to the tray 18. The values ​​of the rotation angles θa, θb, θc, θd, θe, and θf of the arm 11 at the start of the movement operation are a1, b1, c1, d1, e1, and f1, respectively. The end point 121 in the C space 500 represents, for example, the posture of the robot 10 when the robot 10 ends the movement operation. The values ​​of the rotation angles θa, θb, θc, θd, θe, and θf of the arm 11 at the end of the movement operation are a2, b2, c2, d2, e2, and f2, respectively. In the C space 500, the line connecting the start point 120 to the end point 121 represents the change in posture of the robot 10 from the start to the end of the movement operation. When the C-space 500 is used, the movement path of the robot 10 is expressed as a change in the posture of the robot 10. It can be said that the line connecting the start point 120 to the end point 121 in the C-space 500 represents the movement of the robot 10 from the start to the end of the movement motion.

[0228] In the C-space 500 , a basic path 130 with the minimum distance connecting the start point 120 and the end point 121 is represented by a line segment connecting the start point 120 and the end point 121 .

[0229] Here, the coordinates of one point in N-dimensional space are represented by (H1, H2, ..., HN). A line segment (in other words, a straight line) from one point to another in N-dimensional space can be seen as a set of points whose coordinates are represented by the following equation (15) using a parameter u.

[0230]

[0231] In equation (15), k1 to kN and h1 to hN represent constants. The position and length of the line segment in N-dimensional space are determined depending on the range of values ​​of the parameter u. The coordinates of each point on the basic path 130 in the C space 500 can be expressed in the same way as equation (15). Also, the coordinates of each point on the basic path 130 in the actual workspace 100 can be expressed in the same way as equation (15).

[0232] In the C space 500, the control unit 2 can also move the basic path 13 in the same manner as described above to obtain A movement path candidates 135.

[0233] A plane in a three-dimensional space such as the actual workspace 100 is called a hyperplane when generalized to an expression in an N-dimensional space. A hyperplane has (N-1) dimensions. The above plane 150 can also be called a hyperplane 150. Since figures and some spaces in an N-dimensional space are called manifolds, a hyperplane can be said to be a type of manifold. A hyperplane can be said to be an (N-1)-dimensional manifold.

[0234] In the C-space 500, the control unit 2 can obtain one motion path candidate 135 by translating the basic path 130 in a first direction 141 perpendicular to the basic path 130 so as to pass through a passing point set on a hyperplane 150 perpendicular to the basic path 130, as described above. In an N-dimensional space, a hyperplane perpendicular to a line segment is a hyperplane such that, no matter what vector is set on the hyperplane connecting two points, the dot product of the vector and the vector connecting both ends of the line segment is zero. Therefore, no matter what vector is set on the hyperplane 150 connecting two points, the dot product of the vector and the vector connecting both ends of the basic path 130 is zero.

[0235] The position of the passing point on the hyperplane 150 can be expressed in polar coordinate format, as described above. Here, for the (N-1)-dimensional hyperplane 150, (N-1) mutually orthogonal axes are set in addition to the N axes of the C space 500. The position of the passing point in the (N-1)-dimensional manifold (space) represented by the (N-1) axes is then expressed in polar coordinate format. In this case, the position of the passing point on the hyperplane 150 is expressed by a set (r, γ1, γ2, ..., γN-2) of the distance r from the origin of the (N-1)-dimensional manifold to the passing point and (N-2) angles γ1 to γN-2. The control unit 2 can change the position of the passing point (r, γ1, γ2, ..., γN-2) by changing the combination of the set values ​​of the distance r and the angles γ1 to γN-2. In other words, the control unit 2 can acquire multiple motion path candidates 135 in the C space 500 by changing the combination of the set values ​​of the distance r and the angles γ1 to γN-2.

[0236] Similarly to the above, the control unit 2 can also divide the hyperplane 150 in the C space 500 into a lattice shape and set each lattice point on the hyperplane 150 as a passing point. When dividing the (N-1)-dimensional hyperplane 150 into a lattice shape, (N-1) mutually orthogonal axes are set for the (N-1)-dimensional hyperplane 150 in addition to the N axes of the C space 500. Then, for each of the (N-1) axes, the hyperplane 150 is divided into Q parts (Q is an integer greater than or equal to 2) along the axis. As a result, a number of lattice points equal to Q to the (N-1) power are set on the (N-1)-dimensional hyperplane 150. The control unit 2 can acquire multiple movement path candidates in the C space 500 by changing the lattice points set as passing points among the Q to the (N-1) power lattice points.

[0237] The A movement path candidates set in the C space 500 may include a movement path candidate that includes a basic path 130 that has been rotated in the C space 500. The A movement path candidates set in the C space 500 may also include a movement path candidate that includes a basic path 130 that has been transformed in the C space 500. The A movement path candidates set in the C space 500 may also include a movement path candidate that includes a basic path 130 that has been both moved and transformed in the C space 500.

[0238] <Example of Operation of Determination Unit> First, the representation direction of the obstacle 60 in the C space 500 will be described. Here, a point on the obstacle 60 in the actual workspace 100 is called an obstacle point. The determination unit 21 determines all postures of the robot 10 in the actual workspace 100 in which one obstacle point is included in the robot 10. In other words, the determination unit 21 determines all postures of the robot 10 in the actual workspace 100 in which one obstacle point interferes with the robot 10. The determination unit 21 performs this process for each obstacle point of the obstacle 60. Then, the determination unit 21 sets multiple points in the C space 500 corresponding to the multiple postures of the robot 10 that have been determined. An area consisting of these multiple points becomes the obstacle 60 in the C space 500. Hereinafter, this area may be referred to as a C space obstacle 60c.

[0239] The region in the C space 500 where the C space obstacle 60c exists represents a robot posture in which the robot 10 interferes with the obstacle 60 in the actual workspace 100. The C space obstacle 60c can also be said to be an interference region. In the interference determination process, as shown in Fig. 27 , when the noted movement path candidate 135 interferes with the C space obstacle 60c in the C space 500, the determination unit 21 determines that the robot 10 interferes with the obstacle 60 in the noted movement path candidate 135. In other words, when the noted movement path candidate 135 hits the C space obstacle 60c in the C space 500, the determination unit 21 determines that the robot 10 interferes with the obstacle 60 in the noted movement path candidate 135. On the other hand, when the noticeable movement path candidate 135 does not interfere with the C space obstacle 60c in the C space 500, in other words, when the noticeable movement path candidate 135 does not collide with the C space obstacle 60c in the C space 500, the determination unit 21 determines that the robot 10 will not interfere with the obstacle 60 on the noticeable movement path candidate 135. In Fig. 26, when the robot 10 moves along the noticeable movement path candidate 135, the robot 10 at a certain time is represented by a dot in the C space 500.

[0240] <Example of Operation of Priority Setting Unit> The priority setting unit 20 can set a specific potential field for the C space 500, for example, in the same way as for the actual workspace 100. The specific potential field set in the C space 500 is, for example, a six-dimensional potential field. A plurality of positions x, at which potentials are set, are set in the C space 500. The plurality of positions x are set six-dimensionally throughout the entire C space 500. In the C space 500, the potential P(x) at a certain position x represents the degree to which it is preferable for the robot 10, represented by a point, to pass through the certain position x. In the C space 500, the potential P(x) at a certain position x can also be said to represent the degree to which it is preferable for the robot 10 to take a robot posture corresponding to the certain position x in the actual workspace 100. Hereinafter, the specific potential field set in the C space 500 will also be referred to as a C-space potential field.

[0241] The priority setting unit 20 can set the use priority of the movement path candidate based on, for example, the C-space potential field. For example, the priority setting unit 20 sets the use priority of the movement path candidate based on the C-space potential field and the movement path candidate in the C-space 500. The priority setting unit 20 sets the use priority of the movement path candidate based on, for example, the C-space potential field and the movement path candidate in the C-space 500. For example, the priority setting unit 20 sets the potential evaluation value as the sum of the potentials P(x) of the multiple positions x in the C-space 500 that are closest to the multiple representative points 1350 of the movement path candidate 135. FIG. 29 is a schematic diagram showing an example of the multiple representative points 1350 set in the movement path candidate 135. For convenience of explanation, in FIG. 29, the multiple positions x in the C-space potential field 800 set in the C-space 500 are arranged two-dimensionally. The potential evaluation value calculated for the movement path candidate represents the use priority of the movement path candidate. An example of the use of the potential evaluation value is the same as described above. Hereinafter, the potential P(x) in the C-space 500 may be referred to as the C-space potential P(x). Furthermore, the potential evaluation value calculated based on the C space potential P(x) may be referred to as the C space potential evaluation value.

[0242] The priority setting unit 20 can calculate the obstacle density ρo(x) in the C space 500 (also referred to as the C-space obstacle density ρo(x)) in the same manner as described above. In the above description of how to calculate the obstacle density ρo(x), if the obstacle 60 is replaced with the C-space obstacle 60c, the same explanation can be given of how to calculate the C-space obstacle density ρo(x). The priority setting unit 20 can set the C-space potential P(x) based on the C-space obstacle density ρo(x). For example, the priority setting unit 20 may set the negative value of the C-space obstacle density ρo(x) as the C-space potential P(x). Hereinafter, the C-space potential evaluation value when the negative value of the C-space obstacle density ρo(x) is used as the C-space potential P(x) may be referred to as the C-space obstacle density evaluation value. When setting the usage priority of the motion path candidates based on the C space 500, the priority setting unit 20 uses the C-space obstacle density evaluation value instead of the above-described obstacle density evaluation value Vρo.

[0243] <Example of Method for Setting Usage Priority Based on Basic Route> The priority setting unit 20 may set usage priorities based on the basic route 130 in the C space 500. For example, the priority setting unit 20 calculates, for each position x in the C space 500, a route density ρv(x), which changes depending on the extent to which the basic route 130 exists around the position x. In the C space 500, the route density ρv(x) of a certain position x can be said to be a value representing the extent to which the basic route 130 exists around the certain position x. The priority setting unit 20 can set usage priorities based on the basic route 130 in the C space 500 by using the route density ρv(x) instead of the robot density ρr(x) in the above-described operation in the actual workspace 100. The priority setting unit 20 can calculate the route density ρv(x) in the same manner as the obstacle density ρo(x) and the robot density ρr(x), etc.

[0244] The priority setting unit 20 may set the total sum of the path densities ρv(x) of a plurality of positions x that are closest to a plurality of representative points 1350 of the movement path candidate 135 in the C space 500 as the path density evaluation value Vρv for the movement path candidate. The path density evaluation value Vρv for the focus movement path candidate is an evaluation value that represents the proximity of the focus movement path candidate to the basic path 130 in the C space 500. The priority setting unit 20 may then set the use priority of the movement path candidate based on the path density evaluation value Vρv for the movement path candidate. By using the path density evaluation value Vρv instead of the robot density evaluation value Vρr in the above-mentioned operations in the actual workspace 100, the priority setting unit 20 can set the use priority of the movement path candidate based on the path density evaluation value Vρv for the movement path candidate.

[0245] Similarly to the above, the priority setting unit 20 may set the use priority of the movement path candidate based on the proximity of the movement path candidate to the basic path 130 in the C space 500. In the C space 500, the method of calculating the basic path proximity evaluation value indicating the degree of proximity of the movement path candidate to the basic path 130 is the same as the above.

[0246] <Example of Method for Setting Use Priority Based on Past Operation Paths of Robot> The priority setting unit 20 may set use priorities based on previously set paths in the C space 500. For example, for each position x in the C space 500, the priority setting unit 20 calculates a path density ρw(x), which changes depending on the extent to which recently set paths exist around the position x. In the C space 500, the path density ρw(x) of a certain position x can be said to be a value representing the extent to which recently set paths exist around the certain position x. The priority setting unit 20 then determines use priorities based on the path density ρw(x). In the above-described operation in the actual workspace 100, the priority setting unit 20 can set use priorities based on previously set paths in the C space 500 by using the path density ρw(x) instead of the first robot density ρs(x). The priority setting unit 20 can calculate the path density ρw(x) in the same manner as the obstacle density ρo(x) and the robot density ρr(x), etc.

[0247] The priority setting unit 20 may set the sum of the path densities ρw(x) of a plurality of positions x that are closest to each of a plurality of representative points 1350 of the movement path candidate 135 in the C space 500 as the path density evaluation value Vρw for the movement path candidate. The path density evaluation value Vρw for a movement path candidate can be said to be an evaluation value that represents the proximity of the movement path candidate to the most recently set path in the C space 500. Then, the priority setting unit 20 may set the use priority of the movement path candidate based on the path density evaluation value Vρw for the movement path candidate. By using the path density evaluation value Vρw instead of the robot density evaluation value Vρs in the above-mentioned operations in the actual workspace 100, the priority setting unit 20 can set the use priority based on the path density evaluation value Vρw.

[0248] The priority setting unit 20 may set use priorities based on the J set routes most recently set by the route setting unit 22 in the C space 500. In this case, the priority setting unit 20 calculates, for example, a route density ρwj(x) for each position x in the C space 500, which varies depending on the extent to which the jth set route is present around the position x. The priority setting unit 20 then determines use priorities based on the J route densities ρw1(x) to ρwJ(x). In the above-described operation in the actual workspace 100, the priority setting unit 20 can set use priorities based on the J route densities ρw1(x) to ρwJ(x) by using the J route densities ρw1(x) to ρwJ(x) instead of the J first robot densities ρs1(x) to ρsJ(x).

[0249] The priority setting unit 20 may set the total sum of the path densities ρwj(x) of a plurality of positions x that are closest to a plurality of representative points 1350 of the movement path candidate 135 in the C space 500 as the path density evaluation value Vρjw for the movement path candidate. Then, the priority setting unit 20 may set the use priority of the movement path candidate based on the J path density evaluation values ​​Vρw1 to VρwJ for the movement path candidate. The priority setting unit 20 can set the use priority based on the J path density evaluation values ​​Vρw1 to VρwJ by using the J path density evaluation values ​​Vρw1 to VρwJ instead of the J robot density evaluation values ​​Vρs1 to VρsJ in the above-mentioned operation in the actual workspace 100.

[0250] The priority setting unit 20 may set the use priority of an action path candidate based on the proximity of the action path candidate to the most recently set path in the C space 500. In the C space 500, the method of calculating the basic path closeness evaluation value V1s, which indicates the degree of closeness of the action path candidate to the most recently set path, is the same as the method in the actual workspace space 100. Furthermore, the priority setting unit 20 may calculate a j-th set path closeness evaluation value V1sj, which indicates the degree of closeness of the action path candidate to the j-th set path, for each of the first to J-th set paths in the C space 500. Then, the priority setting unit 20 may set the use priority of the action path candidate based on J evaluation values, from the first set path closeness evaluation value V1s1 to the J-th set path closeness evaluation value V1sJ, for the action path candidate, in the same manner as described above.

[0251] The priority setting unit 20 may set the use priority based on previously set paths in the C space 500 and the operation results when the robot 10 operated along the previously set paths. In the above operation in the actual workspace 100, the priority setting unit 20 can set the use priority based on previously set paths in the C space 500 and the operation results when the robot 10 operated along the previously set paths by using the path density ρw(x) instead of the robot density ρs(x), the path density evaluation value Vρw instead of the robot density evaluation value Vρs, or the J path density evaluation values ​​Vρw1 to VρwJ instead of the J robot density evaluation values ​​Vρs1 to VρsJ.

[0252] The priority setting unit 20 may determine whether or not to use previously set routes in setting the use priorities in accordance with a change in the robot work environment, even when operating based on the C space 500. The priority setting unit 20 can determine whether or not the robot work environment has changed based on the C space 500, in the same way as when determining whether or not the robot work environment has changed based on the actual work space 100. Note that even when operating based on the C space 500, the priority setting unit 20 may determine whether or not to use previously set routes in setting the use priorities in accordance with an instruction from the user.

[0253] <Example of Method for Setting Use Priority Based on Specific Area> The priority setting unit 20 may set use priority based on a specific area 400, represented by a point, in the C space 500, through which it is undesirable for the robot 10 to pass. The priority setting unit 20 can set use priority based on the specific area 400 in the C space 500, in the same manner as the above-described operation in the actual workspace 100.

[0254] The specific area 400 in the C space 500 may be set based on, for example, an area in the actual workspace 100 where a person is likely to enter. Here, an area in the actual workspace 100 where a person is likely to enter is called a high-probability entry area. A point included in a high-probability entry area is called a target point. The priority setting unit 20 determines all postures of the robot 10 in the actual workspace 100 where a single target point is included in the robot 10. In other words, the priority setting unit 20 determines all postures of the robot 10 in the actual workspace 100 where a single target point interferes with the robot 10. The priority setting unit 20 performs this process for each target point in the high-probability entry area. Then, the priority setting unit 20 sets multiple points in the C space 500 corresponding to the multiple postures of the robot 10 that have been determined. A region consisting of these multiple points is called a C space area corresponding to the high-probability entry area. The specific area 400 in the C space 500 may include a C space area corresponding to the high-probability entry area. The C space region corresponding to the high probability of entry region can be said to represent a robot posture in which the robot 10 interferes with the high probability of entry region in the actual working space 100 .

[0255] Although the above describes an example in which the specific area 400 is set based on an area where there is a high possibility of a person entering, the present disclosure is not limited to this. For example, the operation path of production equipment that works in cooperation with the robot 10 may be set as the specific area 400. Furthermore, for example, an area in a production line where there is a risk of splashes of water or sparks flying or an area where machines that behave unpredictably are present may be set as the specific area 400, as these are areas with high uncertainty.

[0256] <Example of Operation of Determination Unit> The determination unit 21 can set a movement path for the robot 10 in the C space 500 in the same manner as described above. The determination unit 21 may divide the A movement path candidates into multiple groups in the C space 500, with those that are close to each other belonging to one group. The determination unit 21 may then select, for each of the multiple groups, the movement path candidate with the highest usage priority from the multiple movement path candidates belonging to that group, and perform interference detection processing for the selected movement path candidate. In this case, the operation of the determination unit 21 is the same as the operation in the actual workspace 100 described above, except that the plane 150 is replaced with an (N-1)-dimensional hyperplane 150. The divided regions 150a, 150b, and 150c are an (N-1)-dimensional manifold in the C space 500.

[0257] Although the motion path setting device has been described in detail as above, the above description is merely an example in all respects, and the present disclosure is not limited thereto. Furthermore, the various examples described above can be applied in combination as long as they are not mutually contradictory. It is understood that countless examples not illustrated can be envisioned without departing from the scope of this disclosure.

[0258] It should be noted that the control unit 2 may perform a mixture of processing in the actual workspace 100 and processing in the C space 500. For example, the determination unit 21 may set a use priority of a movement path candidate in the C space 500, and perform interference detection processing for the movement path candidate in the actual workspace 100. Alternatively, the determination unit 21 may set a use priority of a movement path candidate in the actual workspace 100, and perform interference detection processing for the movement path candidate 135 in the C space 500.

[0259] This disclosure includes the following:

[0260] In one embodiment, (1) the movement path setting device includes a priority setting unit that sets a usage priority of each of a plurality of movement path candidates for the movement path candidate; a determination unit that selects at least one movement path candidate from the plurality of movement path candidates based on the usage priority and performs interference determination processing to determine whether or not the robot will interfere with an obstacle for the selected movement path candidate; and a path setting unit that sets a movement path of the robot based on the movement path candidate that is determined by the determination unit not to cause interference of the robot with the obstacle.

[0261] (2) In the operation path setting device of (1) above, the priority setting unit sets the use priority based on obstacle information relating to the obstacle.

[0262] (3) In the operation path setting device of (2) above, the priority setting unit calculates, based on the obstacle information, an obstacle density for each of a plurality of positions in a multidimensional space that is the actual working space of the robot or the configuration space of the robot, the obstacle density varying depending on the degree to which obstacles are present around the position, and sets the usage priority based on the calculated obstacle density.

[0263] (4) In the operation path setting device of (1) above, the priority setting unit sets use priorities based on a potential field set in a multidimensional space as the actual working space of the robot or the configuration space of the robot, and the potential of a certain position in the potential field represents the degree to which it is desirable for the robot to pass through that position in the multidimensional space.

[0264] (5) In the movement path setting device of (4) above, the potential field is set in the actual working space, and when the priority setting unit sets the use priority for one movement path candidate, it calculates, for each of a plurality of postures of the robot in the one movement path candidate, the sum of the potential values ​​of a plurality of positions included in the range occupied by the robot in that posture in the actual working space, and sets the use priority based on the sum of the sum values ​​calculated for the plurality of postures.

[0265] (6) In the movement path setting device of (4) above, the potential field is set in the actual working space, and when the priority setting unit sets the use priority for one movement path candidate, it identifies the potential at a position in the actual working space that is closest to a representative point of the robot for each of a plurality of postures of the robot in the one movement path candidate, and sets the use priority based on the sum of the potentials identified for the plurality of postures.

[0266] (7) In the movement path setting device of (4) above, the potential field is set in the actual working space, and when the priority setting unit sets the use priority for one movement path candidate, it calculates, for each of a plurality of postures of the robot in the one movement path candidate, the sum of the potential values ​​of a plurality of positions in the actual working space that are respectively closest to a plurality of representative points of the robot for that posture, and sets the use priority based on the sum of the sums calculated for the plurality of postures.

[0267] (8) In the movement path setting device of (4) above, the potential field is set in the configuration space, and when the priority setting unit sets the use priority for one movement path candidate, it calculates the sum of the potentials at multiple positions in the configuration space that are respectively closest to multiple representative points of the one movement path candidate, and sets the use priority based on the sum.

[0268] (9) In any one of the operation path setting devices (4) to (8) above, the priority setting unit determines an obstacle density for each of a plurality of positions in the multidimensional space, which varies depending on the degree to which obstacles are present around the position, and sets the potential based on the determined obstacle density.

[0269] (10) In the operation path setting device of (3) or (9) above, the priority setting unit sets a plurality of representative points for the obstacles in the multidimensional space, and sets the obstacle density at a certain position in the multidimensional space based on at least one representative point among the plurality of representative points that is located within a predetermined range from the certain position.

[0270] (11) In any one of the motion path setting devices (3), (9) and (10) above, the obstacle density at a certain position in the multidimensional space also varies depending on the proximity of the certain position to the obstacles surrounding the certain position.

[0271] (12) In the operation path setting device according to any one of (1) to (11) above, the priority setting unit sets the use priority based on the operation path set by the path setting unit in the past.

[0272] (13) In the movement path setting device of (12) above, the priority setting unit sets the use priority of the movement path candidate based on the proximity of the movement path candidate to the past movement path in a multidimensional space such as the actual working space of the robot or the configuration space of the robot.

[0273] (14) In the movement path setting device of (12) above, the priority setting unit sets the usage priority of the movement path candidate based on the difference between the pattern of change in posture of the robot on the movement path candidate and the pattern of change in posture of the robot on the past movement path in the actual working space of the robot.

[0274] (15) In the operation path setting device of (12) above, the priority setting unit calculates a first robot density for each of a plurality of positions in the actual working space of the robot, which changes depending on the degree to which the space through which the robot passed when the robot operated on the operation path in the past exists around the position, and sets the usage priority based on the calculated first robot density.

[0275] (16) In the movement path setting device of (12) above, the priority setting unit calculates a first path density for each of a plurality of positions in the configuration space of the robot, the first path density varying depending on the extent to which the past movement paths are present around the position, and sets the usage priority based on the calculated first path density.

[0276] (17) In the movement path setting device of any one of (12) to (16) above, the priority setting unit sets the use priority based on the movement results when the robot moved along the movement path in the past.

[0277] (18) In any one of the movement path setting devices (12) to (17) above, the priority setting unit determines whether or not to use the past movement paths in setting the usage priority in accordance with changes in the working environment of the robot.

[0278] (19) In any one of the above-mentioned (1) to (18) operation path setting devices, the priority setting unit sets the usage priority based on a specific area in a multidimensional space, which is the actual working space of the robot or the configuration space of the robot, through which it is undesirable for the robot to pass.

[0279] (20) In the action path setting device of (19) above, the priority setting unit sets the use priority of the action path candidate based on the proximity of the action path candidate to the specific area in the multidimensional space.

[0280] (21) In the operation path setting device of (19) or (20) above, the priority setting unit calculates a specific area density for each of a plurality of positions in the multidimensional space, which changes depending on the extent to which the specific area exists around the position, and sets the usage priority based on the calculated specific area density.

[0281] (22) In any one of the above-mentioned operation path setting devices (2), (3), (9) to (21), the priority setting unit sets the usage priority based on the basic path of the shortest distance connecting the start point and end point of the operation of the robot in a multidimensional space that is the actual working space of the robot or the configuration space of the robot.

[0282] (23) In the operation path setting device of (22) above, the priority setting unit sets the use priority of the operation path candidate based on the proximity of the operation path candidate to the basic path in the multidimensional space.

[0283] (24) In the movement path setting device of (22) above, the priority setting unit sets the usage priority of the movement path candidate based on the difference between the change pattern of the posture of the robot on the basic path and the change pattern of the posture of the robot on the movement path candidate in the actual workspace.

[0284] (25) In the operation path setting device of (22) above, the priority setting unit calculates a second robot density for each of a plurality of positions in the actual work space, which changes depending on the extent to which the space through which the robot passes when moving along the basic path exists around the position, and sets the usage priority based on the calculated second robot density.

[0285] (26) In the operation path setting device of (22) above, the priority setting unit calculates a second path density for each of a plurality of positions in the configuration space, which changes depending on the extent to which the basic path exists around the position, and sets the usage priority based on the calculated second path density.

[0286] (27) In any one of the above-mentioned (1) to (26) movement path setting devices, the judgment unit executes the interference detection process only for the movement path candidate selected based on the usage priority from among the plurality of movement path candidates, or selects the plurality of movement path candidates in an order according to the usage priority and executes the interference detection process.

[0287] (28) In any one of the movement path setting devices (1) to (26) above, the judgment unit divides the plurality of movement path candidates into a plurality of groups in a multidimensional space that is the actual working space of the robot or the configuration space of the robot, so that those that are close to each other belong to one group, selects, for each of the plurality of groups, the movement path candidate with the highest usage priority from the plurality of movement path candidates that belong to that group, and performs the interference judgment processing on the selected movement path candidate.

[0288] (29) The program causes a computer device to execute a priority setting process for setting a usage priority of each of a plurality of motion path candidates for a robot; a selection execution process for selecting at least one motion path candidate from the plurality of motion path candidates based on the usage priority and executing an interference determination process for determining whether the selected motion path candidate will interfere with an obstacle; and a path setting process for setting a motion path of the robot based on the motion path candidate determined not to interfere with the obstacle in the selection execution process.

[0289] REFERENCE SIGNS LIST 1 movement path setting device 10, 10a, 10b robot 20 priority setting unit 21 determination unit 22 path setting unit 30 program 32 obstacle information 60 obstacle 60a part 100 actual working space 115 robot range 117, 117a, 117b representative point 120 start point 121 end point 130, 130i basic path 135 movement path candidate 300 basic path sweep space 400 specific area 500 configuration space 600 obstacle representative point

Claims

1. For each of a plurality of candidate movement paths of a robot, a priority setting unit that sets a usage priority of the candidate movement path, a determination unit that selects at least one candidate movement path from the plurality of candidate movement paths based on the usage priority and performs an interference determination process to determine whether the robot interferes with an obstacle for the selected candidate movement path, and a path setting unit that sets a movement path of the robot based on the candidate movement path determined by the determination unit not to interfere with the obstacle A movement path setting device comprising.

2. The movement path setting device according to claim 1, wherein the priority setting unit sets the usage priority based on obstacle information regarding the obstacle. A movement path setting device.

3. The movement path setting device according to claim 2, wherein the priority setting unit obtains an obstacle density that changes according to the degree of presence of the obstacle around each of a plurality of positions in a multi-dimensional space as the actual working space of the robot or the configuration space of the robot, based on the obstacle information, and sets the usage priority based on the obtained obstacle density. A movement path setting device.

4. The movement path setting device according to claim 1, wherein the priority setting unit sets the usage priority based on a potential field set in a multi-dimensional space as the actual working space of the robot or the configuration space of the robot, and the potential at a certain position in the potential field represents the degree of preference for the robot to pass through the certain position in the multi-dimensional space. A movement path setting device.

5. The movement path setting device according to claim 4, wherein the potential field is set in the actual working space, and when the priority setting unit sets the usage priority for one candidate movement path, for each of a plurality of postures of the robot in the one candidate movement path, the sum of the potentials of a plurality of positions included in the range occupied by the robot in the actual working space in the posture is obtained, and the usage priority is set based on the sum of the sums obtained for the plurality of postures. A movement path setting device.

6. The movement path setting device according to claim 4, wherein the potential field is set in the actual working space, When setting the usage priority for one candidate operation path, the priority setting unit identifies the potential at the position closest to the representative point of the robot in the posture in the actual working space for each of the plurality of postures of the robot in the one candidate operation path, and sets the usage priority based on the total value of the potentials identified for the plurality of postures. An operation path setting device.

7. The operation path setting device according to claim 4, The potential field is set in the actual working space, When setting the usage priority for one candidate operation path, the priority setting unit obtains the total value of the potentials at a plurality of positions each closest to a plurality of representative points of the robot in the posture in the actual working space for each of the plurality of postures of the robot in the one candidate operation path, and sets the usage priority based on the total of the total values obtained for the plurality of postures. An operation path setting device.

8. The operation path setting device according to claim 4, The potential field is set in the configuration space, When setting the usage priority for one candidate operation path, the priority setting unit obtains the total value of the potentials at a plurality of positions each closest to a plurality of representative points of the one candidate operation path in the configuration space, and sets the usage priority based on the total value. An operation path setting device.

9. The operation path setting device according to claim 4, In the multi-dimensional space, the priority setting unit obtains an obstacle density that changes according to the degree of presence of obstacles around each of a plurality of positions, and sets the potential based on the obtained obstacle density. An operation path setting device.

10. The operation path setting device according to claim 3 or claim 9, The priority setting unit, Sets a plurality of representative points for the obstacle in the multi-dimensional space, The operation path setting device sets the obstacle density at a certain position in the multi-dimensional space based on at least one representative point located within a predetermined range from the certain position among the plurality of representative points.

11. The operation path setting device according to claim 3 or claim 9, The obstacle density at a certain position in the multi-dimensional space also changes according to the proximity between the obstacle around the certain position and the certain position. An operation path setting device.

12. An operation path setting device according to any one of claims 1 to 9, wherein the priority setting unit sets the usage priority based on the past operation path set by the path setting unit.

13. An operation path setting device according to claim 12, wherein the priority setting unit sets the usage priority of the operation path candidate based on the proximity of the operation path candidate to the past operation path in a multi-dimensional space as the actual working space of the robot or the configuration space of the robot.

14. An operation path setting device according to claim 12, wherein the priority setting unit sets the usage priority of the operation path candidate based on the difference in the posture change pattern of the robot in the operation path candidate with respect to the posture change pattern of the robot in the past operation path in the actual working space of the robot.

15. An operation path setting device according to claim 12, wherein the priority setting unit obtains a first robot density that changes according to the degree to which the space through which the robot passes when the robot operates on the past operation path exists around each of a plurality of positions in the actual working space of the robot, and sets the usage priority based on the obtained first robot density.

16. An operation path setting device according to claim 12, wherein the priority setting unit obtains a first path density that changes according to the degree to which the past operation path exists around each of a plurality of positions in the configuration space of the robot, and sets the usage priority based on the obtained first path density.

17. An operation path setting device according to claim 12, wherein the priority setting unit sets the usage priority based on the operation result when the robot operates on the past operation path.

18. An operation path setting device according to claim 12, wherein the priority setting unit determines whether to use the past operation path in setting the usage priority according to a change in the working environment of the robot.

19. An operation path setting device according to any one of claims 1 to 9, The priority setting unit is an operation path setting device that sets the usage priority based on a specific area in a multi-dimensional space that is preferably not passed through by the robot in the actual working space of the robot or the configuration space of the robot.

20. An operation path setting device according to claim 19, wherein the priority setting unit sets the usage priority of the operation path candidate based on the proximity of the operation path candidate to the specific area in the multi-dimensional space.

21. An operation path setting device according to claim 19, wherein the priority setting unit obtains a specific area density that changes according to the degree to which the specific area exists around each of a plurality of positions in the multi-dimensional space, and sets the usage priority based on the obtained specific area density.

22. An operation path setting device according to claim 2, claim 3 or claim 9, wherein the priority setting unit sets the usage priority based on a basic path of the shortest distance connecting the start point and the end point of the operation of the robot in a multi-dimensional space that is the actual working space of the robot or the configuration space of the robot.

23. An operation path setting device according to claim 22, wherein the priority setting unit sets the usage priority of the operation path candidate based on the proximity of the operation path candidate to the basic path in the multi-dimensional space.

24. An operation path setting device according to claim 22, wherein the priority setting unit sets the usage priority of the operation path candidate based on the difference in the posture change pattern of the robot in the operation path candidate with respect to the posture change pattern of the robot in the basic path in the actual working space.

25. An operation path setting device according to claim 22, wherein the priority setting unit obtains a second robot density that changes according to the degree to which the space passed through by the robot when the robot moves along the basic path exists around each of a plurality of positions in the actual working space, and sets the usage priority based on the obtained second robot density.

26. An operation path setting device according to claim 22, The priority setting unit obtains, for each of a plurality of positions in the configuration space, a second path density that varies according to the degree to which the basic path exists around the position, and sets the usage priority based on the obtained second path density. An operation path setting device.

27. An operation path setting device according to any one of Claims 1 to 9, wherein the determination unit executes the interference determination process only for the operation path candidates selected based on the usage priority among the plurality of operation path candidates, or selects the plurality of operation path candidates in an order according to the usage priority and executes the interference determination process. An operation path setting device.

28. An operation path setting device according to any one of Claims 1 to 9, wherein the determination unit divides the plurality of operation path candidates into a plurality of groups such that those with close positions belong to the same group in a multi-dimensional space serving as the actual working space of the robot or the configuration space of the robot, selects, for each of the plurality of groups, the operation path candidate with the highest usage priority from the plurality of operation path candidates belonging to the group, and performs the interference determination process on the selected operation path candidate. An operation path setting device.

29. A program that causes a computer device to perform a priority setting process for setting the usage priority of each of a plurality of operation path candidates of a robot, a selection execution process for selecting at least one operation path candidate from the plurality of operation path candidates based on the usage priority and determining whether the robot interferes with an obstacle for the selected operation path candidate, and a path setting process for setting the operation path of the robot based on the operation path candidate determined not to interfere with the obstacle in the selection execution process to be executed.