Programming Device and Program
The programming device addresses the challenge of transitioning robot programs from a virtual to an actual environment by using a processing unit to set wider virtual and warning ranges for the drive unit, reducing the need for extensive modifications and preventing singularities and range errors.
Patent Information
- Application Number
- JP2023523834
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2021-05-26
- Publication Date
- 2025-06-18
- Estimated Expiration
- 2041-05-26
AI Technical Summary
Robot programs created through offline programming often require significant modifications when transitioning from a virtual to an actual robot environment, as the virtual environment may not accurately represent the actual environment, leading to issues like the robot operating outside its movable range or encountering singularity.
A programming device that includes a processing unit capable of determining whether a virtual drive unit, simulated or emulated by a computer, falls within a range wider than the actual singular point range of the drive unit. This allows for the setting of wider virtual ranges and warning ranges to prevent the robot from entering singularities or operating outside its movable range.
The solution reduces the amount of correction required for robot programs created through offline programming by preventing the robot from entering singularities or operating outside its movable range, thereby enhancing the reliability and efficiency of the programming process.
Smart Images

Figure 0007695350000001 
Figure 0007695350000002 
Figure 0007695350000003
Abstract
Description
Technical Field
[0001] The present disclosure relates to a programming device and a program.
Background Art
[0002] A robot program for operating a robot equipped with a robot arm or the like may be created using offline programming. In offline programming, for example, programming is performed using a robot that emulates or simulates an actual robot on software (hereinafter referred to as a "virtual robot"). However, in programming using a virtual robot, various parts such as the placement position of objects are different from the actual environment. For this reason, when operating an actual robot by making only modifications to adapt the robot program created by offline programming to the site, the robot program may cause the robot to try to operate outside the movable range or move the robot to a singularity. Therefore, when operating an actual robot with a robot program created by offline programming, additional program modifications may be required.
Prior Art Documents
Patent Documents
[0003]
Patent Document 1
Summary of the Invention
Problems to be Solved by the Invention
[0004] There is a need for a programming device and a program that can reduce the amount of necessary modifications to a robot program created by offline programming.
Means for Solving the Problems
[0005] The programming device of the present disclosure includes a processing unit. The processing unit determines that a virtual drive unit obtained by simulating or emulating the drive unit of a robot by a computer falls within a range wider than the actual singular point range of the drive unit. Special wider than the singular point range Warnings set as the range and enters the range.
Advantages of the Invention
[0006] The present disclosure can reduce the amount of correction required for a robot program created by offline programming.
Brief Description of the Drawings
[0007]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Modes for Carrying Out the Invention
[0008] Hereinafter, a programming system according to an embodiment will be described with reference to the drawings. Note that the scales of the respective parts in each of the drawings used in the following description of the embodiment may be changed as appropriate. Also, each of the drawings used in the following description of the embodiment may show the configuration with some parts omitted for the sake of explanation. Further, in each of the drawings and in this specification, the same reference numerals indicate the same elements.
[0009] FIG. 1 is a block diagram showing an example of the main configuration of a programming system 1 according to an embodiment and the components included in the programming system 1. The programming system 1 is a system capable of creating a robot program for operating a robot 300 by offline programming. The programming system 1 includes, as an example, a programming device 100, a robot control device 200, and a robot 300.
[0010] The programming device 100 is a device capable of performing offline programming of a robot program. Also, the programming device 100 can simulate or emulate the robot 300 in a virtual space. The programming device 100 is, for example, a PC, a server, a workstation, or a tablet terminal, etc. The programming device 100 includes, as an example, a processor 101, a ROM (read-only memory) 102, a RAM (random-access memory) 103, an auxiliary storage device 104, an input device 105, a display device 106, and a data output unit 107. And a bus 108 etc. connect these respective parts.
[0011] Processor 101 is the central part of a computer that performs processes such as operations and controls necessary for the operation of programming device 100, and performs various operations and processes. Processor 101 is, for example, a CPU (central processing unit), MPU (micro processing unit), SoC (system on a chip), DSP (digital signal processor), GPU (graphics processing unit), ASIC (application specific integrated circuit), PLD (programmable logic device), or FPGA (field-programmable gate array), etc. Alternatively, processor 101 is a combination of a plurality of these. Also, processor 101 may be a combination of these with a hardware accelerator or the like. Processor 101 controls each part in order to realize various functions of programming device 100 based on programs such as firmware, system software, and application software stored in ROM 102 or auxiliary storage device 104, etc. Also, processor 101 executes the processes described later based on the program. Note that part or all of the program may be incorporated in the circuit of processor 101. Processor 101 is an example of a processing unit.
[0012] ROM 102 and RAM 103 are the main storage devices of a computer centered around processor 101. ROM 102 is a non-volatile memory used exclusively for reading data. ROM 102 stores, for example, firmware among the above programs. Also, ROM 102 stores data used by processor 101 when performing various processes, etc. RAM 103 is a memory used for reading and writing data. RAM 103 is utilized as a work area or the like that stores data temporarily used by processor 101 when performing various processes. RAM 103 is typically a volatile memory.
[0013] The auxiliary storage device 104 is an auxiliary storage device of a computer centered around the processor 101. The auxiliary storage device 104 is, for example, an EEPROM (electric erasable programmable read-only memory), an HDD (hard disk drive), or a flash memory. The auxiliary storage device 104 stores, among the above programs, for example, system software and application software. The auxiliary storage device 104 stores data used by the processor 101 to perform various processes, data such as a robot program generated by the processing in the processor 101, and various setting values.
[0014] In addition, the auxiliary storage device 104 stores information for each model of the robot 300 (hereinafter referred to as "model information"). The model information includes, for example, various information such as dimensions and shapes for each model, the movable range of each part, and the singularity range. The model information also includes setting information. The setting information includes various setting values related to each model. The setting information includes, for example, settings for the virtual movable range and the singularity warning range described later.
[0015] The input device 105 receives operations by the operator of the programming device 100. The input device 105 is, for example, a keyboard, a keypad, a touch pad, a mouse, or a controller. The input device 105 may also be a device for voice input.
[0016] The display device 106 displays a screen for notifying the operator of the programming device 100 of various information. The display device 106 is, for example, a display such as a liquid crystal display or an organic EL (electro-luminescence) display. Further, as the input device 105 and the display device 106, a touch panel can also be used. That is, the display panel included in the touch panel can be used as the display device 106, and the touch pad included in the touch panel can be used as the input device 105. Note that the display device 106 is an example of a notification unit.
[0017] The data output unit 107 outputs data within the programming device 100. The data output unit 107 is, for example, a device that writes data to a removable storage medium such as a semiconductor medium, an optical medium, or a magnetic medium. Alternatively, the data output unit 107 is an interface for wired communication by connecting to another device using a communication cable such as a USB (universal serial bus) cable or an Ethernet (registered trademark) cable. Alternatively, the data output unit 107 is an interface for wireless communication with another device.
[0018] The bus 108 includes a control bus, an address bus, a data bus, etc., and transmits signals exchanged among the respective parts of the programming device 100.
[0019] The robot control device 200 is a device that controls the robot 300 based on a program such as a robot program. The robot control device 200 includes, as an example, a processor 201, a ROM 202, a RAM 203, an auxiliary storage device 204, a data input unit 205, and a control interface 206. And a bus 207 or the like connects these respective parts.
[0020] The processor 201 is the central part of a computer that performs processes such as operations and controls necessary for the operation of the robot control device 200, and performs various operations and processes. The processor 201 is, for example, a CPU, MPU, SoC, DSP, GPU, ASIC, PLD, or FPGA, etc. Alternatively, the processor 201 is a combination of a plurality of these. Also, the processor 201 may be a combination of these with a hardware accelerator or the like. The processor 201 controls each part to realize various functions of the robot control device 200 based on programs such as firmware, system software, application software, and robot programs stored in the ROM 202 or the auxiliary storage device 204, etc. Also, the processor 201 executes the processes described later based on the program. Note that part or all of the program may be incorporated in the circuit of the processor 201.
[0021] The ROM 202 and the RAM 203 are the main storage devices of a computer centered around the processor 201. The ROM 202 is a non-volatile memory used exclusively for reading data. The ROM 202 stores, for example, firmware among the above programs. Also, the ROM 202 stores data used by the processor 201 when performing various processes, etc. The RAM 203 is a memory used for reading and writing data. The RAM 203 is utilized as a work area or the like that stores data temporarily used by the processor 201 when performing various processes. The RAM 203 is typically a volatile memory.
[0022] The auxiliary storage device 204 is an auxiliary storage device of a computer centered around the processor 201. The auxiliary storage device 204 is, for example, an EEPROM, HDD, or flash memory. The auxiliary storage device 204 stores, among the above programs, for example, system software, application software, and robot programs. Further, the auxiliary storage device 204 stores data used by the processor 201 to perform various processes, data generated by the processes in the processor 201, and various setting values.
[0023] The data input unit 205 receives inputs such as data output by the data output unit 107 of the programming device 100. The data input unit 205 is, for example, a device that reads data stored in a removable storage medium. Alternatively, the data input unit 205 is an interface for wired or wireless communication with the data output unit 107 and the like.
[0024] The control interface 206 is an interface for the robot control device 200 to communicate with the robot 300. The robot control device 200 controls the robot 300 via the control interface 206.
[0025] The bus 207 includes a control bus, an address bus, a data bus, etc., and transmits signals exchanged between the respective parts of the robot control device 200.
[0026] The robot 300 is, for example, a manipulator or a robot arm, or a robot equipped with these. The robot 300 is, for example, an articulated robot. The robot 300 includes, as an example, one or more drive units 310. Note that the robot 300 arranged in the virtual space is an example of a virtual robot. The drive unit 310 of the virtual robot is specifically referred to as the drive unit 310b. The drive unit 310b is an example of a virtual drive unit.
[0027] The drive unit 310 is a part driven by a motor such as a servo motor. The drive unit 310 rotates, for example, around a drive shaft.
[0028] FIG. 2 is a diagram for explaining the drive unit 310 and the drive unit 310b. The drive unit 310 includes a drive shaft 311, a base-side arm 312, and a tip-side arm 313. Similarly, the drive unit 310b includes a drive shaft 311, a base-side arm 312, and a tip-side arm 313. Further, FIG. 2 shows a movable range R1, a virtual movable range R2, a singularity range R3, and a singularity warning range R4. Note that the movable range R1 is an example of a first movable range. The virtual movable range R2 is an example of a second movable range. The singularity range R3 is an example of a first singularity range. The singularity warning range R4 is an example of a second singularity range.
[0029] The base-side arm 312 and the tip-side arm 313 are two arms connected by the drive shaft 311. The tip-side arm 313 is closer to the tip side of the robot arm 300 than the base-side arm 312, and is the arm closer to the base side of the robot arm 300 next to the base-side arm 312. Note that the tip-side arm 313 may also be the base-side arm 312 of another drive unit 310. The tip-side arm 313 can freely rotate within the movable range R1 around the drive shaft 311 with respect to the base-side arm 312. As an example, the movable range R1 is a range of an angle D11 [°] or more and an angle D12 [°] or less with a reference angle D0 being 0 [° (degrees)]. Note that the angles D11 and D12 satisfy D11 < 0 < D12. The angles D11 and D12 are, for example, D11 = -D12.
[0030] The programming device 100 sets a virtual movable range R2 for each drive unit 310b. The virtual movable range R2 is a range narrower than the movable range R1. The movable range R1 includes the virtual movable range R2. The virtual movable range R2 is, for example, a range from an angle D21 [°] to an angle D22 [°] with the reference angle D0 being 0 [°]. Note that D21 < 0 < D22 for the angles D21 and D22. For example, D21 = -D22 for the angles D21 and D22. The difference between the angle D11 and the angle D21 is, for example, from 0° to 10°. The difference between the angle D12 and the angle D22 is, for example, from 0° to 10°.
[0031] The singularity range R3 is a range where the tip-side arm 313 becomes a singularity. Also, the programming device 100 sets a singularity warning range R4 for each drive unit 310b. The singularity warning range R4 includes the singularity range R3 and is a range wider than the singularity range R3. The singularity range R3 is, for example, a range from an angle D31 [°] to an angle D32 [°] with the reference angle D0 being 0 [°]. Note that D31 < 0 < D32 for the angles D31 and D32. For example, D31 = -D32 for the angles D31 and D32. The singularity warning range R4 is, for example, a range from an angle D41 [°] to an angle D42 [°] with the reference angle D0 being 0 [°]. Note that D41 < 0 < D42 for the angles D41 and D42. For example, D41 = -D42 for the angles D41 and D42. The difference between the angle D41 and the angle D31 is, for example, from 0° to 6°. The difference between the angle D42 and the angle D32 is, for example, from 0° to 6°.
[0032] Also, FIG. 2 shows an angle D5. The angle D5 is an angle indicating the rotational position of the tip-side arm 313 with respect to the base-side arm 312 when the reference angle D0 is 0 [°]. Although D22 < D5 < D12 as shown in FIG. 2, this is not the only case.
[0033] The operation of the programming system 1 according to the embodiment will be described below with reference to FIGS. 3 and 4. Note that the content of the processing in the following operation description is an example, and various processes capable of obtaining the same result can be appropriately used. FIGS. 3 and 4 are flowcharts showing an example of the processing by the processor 101 of the programming apparatus 100. The processor 101 executes the processing of FIGS. 3 and 4 based on a program stored in, for example, the ROM 102 or the auxiliary storage device 104.
[0034] The processor 101 of the programming apparatus 100 starts the processing shown in FIG. 3, for example, when starting application software for offline programming.
[0035] In step ST11 of FIG. 3, the processor 101 determines settings regarding the model of the robot 300 for which a robot program is to be created. For this purpose, the processor 101 acquires, for example, model information about the model of the robot 300 from the auxiliary storage device 104 or the like. The processor 101 determines which model of model information to acquire based on, for example, the content of the operation input using the input device 105 by the operator of the programming apparatus 100. Alternatively, the processor 101 may acquire model information of a predetermined model.
[0036] In step ST12, the processor 101 determines settings for the arrangement of the robot 300, the workpiece, the obstacle, and other necessary objects in the virtual space. The processor 101 determines the setting of the arrangement based on, for example, the content of the operation input using the input device 105 by the operator of the programming apparatus 100. Further, the processor 101 may determine the setting of the arrangement based on information acquired from, for example, the auxiliary storage device 104 or other devices.
[0037] In step ST13, the processor 101 determines whether a teaching point indicating the destination of the robot 300 has been specified. For example, the teaching point is specified based on an operation input by the operator of the programming device 100. Alternatively, the teaching point is specified based on the input of information such as a command from another device. Alternatively, the processor 101 may automatically specify the teaching point. Further, the teaching point may be specified by other methods. Here, the teaching point specified here is referred to as a provisional teaching point. If the provisional teaching point is not specified, the processor 101 determines No in step ST13 and advances the process to step ST14.
[0038] In step ST14, the processor 101 determines whether to start setting the warning range. For example, if an operation to start setting the warning range is performed by the operator of the programming device 100, the processor 101 determines to start setting the warning range. If the processor 101 does not start setting the warning range, it determines No in step ST14 and returns the process to step ST13. Thus, the processor 101 enters a waiting state in which steps ST13 and ST14 are repeated until it is determined that a provisional teaching point is specified or the setting of the warning range is started.
[0039] If a teaching point indicating the destination of the robot 300 is specified while the processor 101 is in the waiting state of steps ST13 and ST14, the processor 101 determines Yes in step ST13 and advances the process to step ST15.
[0040] In step ST15, the processor 101 advances the simulation of the movement path on the virtual space of the robot 300 from the latest teaching point to the temporary teaching point of the robot program being created by a predetermined amount. The latest teaching point is the teaching point added last in the robot programming. If the processor 101 has advanced the simulation halfway in the execution of the previous step ST15, the processor 101 advances the simulation by a predetermined amount from that halfway point. Also, if the processor 101 has not yet started the simulation, the processor 101 starts the simulation and advances it by a predetermined amount. However, if the remaining amount until the completion of the simulation is less than the predetermined amount, the processor 101 advances the simulation until the completion of the simulation. In the simulation, the processor 101 simulates so that all the drive units 310b do not enter outside the virtual movable range R2 and the singularity warning range R4. However, if the robot 300 cannot move to the temporary teaching point unless at least one of the drive units 310b enters outside the virtual movable range R2 or the singularity warning range R4, the processor 101 may simulate a movement path such that at least one of the drive units 310b enters outside the virtual movable range R2 or the singularity warning range R4. Also, even when at least one of the drive units 310b enters outside the virtual movable range R2 or the singularity warning range R4, the processor 101 simulates so that all the drive units 310b do not enter outside the movable range R1 and the singularity range R3. However, if the robot 300 cannot move to the temporary teaching point unless at least one of the drive units 310b enters outside the movable range R1 or the singularity range R3, the processor 101 may simulate a movement path such that at least one of the drive units 310b enters outside the movable range R1 or the singularity range R3.
[0041] In step ST16, the processor 101 executes the stop process shown in FIG. 4. The processor 101 performs a stop process on the process of the most recent step ST15 in the ongoing simulation. The stop process is a process that determines whether to stop the simulation based on the processing result of step ST15, and if it is determined to stop, the simulation is stopped. When starting to execute the stop process, the processor 101 advances the process to step ST31 in FIG. 4.
[0042] In step ST31, the processor 101 determines whether at least any one of the front arms 313 of the robot 300 has newly moved outside the virtual movable range R2 by the process of the most recent step ST15 in the ongoing simulation. The front arm 313 being outside the virtual movable range R2 means that the angle D5 of the front arm 313 is less than the angle D21 or greater than the angle D22. For the drive unit 310b for which the virtual movable range R2 is set to be invalid, the processor 101 regards the front arm 313 as not having moved outside the virtual movable range R2 regardless of the angle D5. If at least any one of the front arms 313 has newly moved outside the virtual movable range R2, the processor 101 determines Yes in step ST31 and advances the process to step ST32.
[0043] In step ST32, the processor 101 generates an image corresponding to the first warning screen. Then, the processor 101 instructs the display device 106 to display the generated image. Upon receiving the display instruction, the display device 106 displays the first warning screen.
[0044] The first warning screen includes an image indicating that the front arm 313 has moved outside the virtual movable range R2. The first warning screen also includes an image indicating which front arm 313 has moved outside the virtual movable range R2. Note that characters are a type of image.
[0045] In step ST33, the processor 101 determines whether to stop the simulation. For example, when referring to the setting information, if it is set to stop the simulation when the front arm 313 goes out of the virtual movable range R2, the processor 101 determines to stop the simulation.
[0046] If the processor 101 does not stop the simulation, it determines No in step ST33 and advances the process to step ST34. Also, if none of the drive units 310b have newly gone out of the virtual movable range R2, the processor 101 determines No in step ST31 and advances the process to step ST34.
[0047] In step ST34, the processor 101 determines whether at least any one of the front arms 313 has newly entered the singularity warning range R4 in the running simulation by the process of the most recent step ST15. That the front arm 313 has entered the singularity warning range R4 means that the angle D5 of the front arm 313 is equal to or greater than the angle D41 and less than the angle D42. Note that for the drive unit 310b for which the singularity warning range R4 is set to be invalid, regardless of the angle D5, the front arm 313 is regarded as not having entered the singularity warning range R4. If at least any one of the front arms 313 has newly entered the singularity warning range R4, the processor 101 determines Yes in step ST34 and advances the process to step ST35.
[0048] In step ST35, the processor 101 generates an image corresponding to the second warning screen. Then, the processor 101 instructs the display device 106 to display the generated image. Upon receiving the display instruction, the display device 106 displays the second warning screen.
[0049] The second warning screen includes an image indicating that the front arm 313 enters the singularity warning range R4. Further, the second warning screen includes an image indicating which front arm 313 enters the singularity warning range R4.
[0050] In step ST36, the processor 101 determines whether to stop the simulation. For example, the processor 101 refers to the setting information and determines to stop the simulation when the setting is such that the simulation is stopped when the front arm 313 enters the singularity warning range R4.
[0051] If the processor 101 does not stop the simulation, it determines No in step ST36 and advances the process to step ST37. Also, if neither of the front arms 313 newly enters the singularity warning range R4, the processor 101 determines No in step ST34 and advances the process to step ST37.
[0052] In step ST37, the processor 101 determines whether at least one of the front arms 313 has newly exited the movable range R1 in the ongoing simulation by the process of the most recent step ST15. If at least one of the front arms 313 has newly exited the movable range R1, the processor 101 determines Yes in step ST37 and advances the process to step ST38.
[0053] In step ST38, the processor 101 generates an image corresponding to the third warning screen. Then, the processor 101 instructs the display device 106 to display the generated image. Upon receiving the display instruction, the display device 106 displays the third warning screen.
[0054] The third warning screen includes an image indicating that the front arm 313 exits the movable range R1. Further, the third warning screen includes an image indicating which front arm 313 exits the movable range R1.
[0055] If none of the distal arms 313 has newly moved outside the movable range R1, the processor 101 determines No in step ST37 and advances the process to step ST39. In step ST39, the processor 101 determines whether at least one of the distal arms 313 has newly entered the singular point range R3 in the ongoing simulation by the process of the most recent step ST15. If none of the distal arms 313 has newly entered the singular point range R3, the processor 101 determines No in step ST39 and ends the stop process shown in FIG. 4. On the other hand, if at least one of the distal arms 313 has newly entered the singular point warning range R4, the processor 101 determines Yes in step ST39 and advances the process to step ST40.
[0056] In step ST40, the processor 101 generates an image corresponding to the fourth warning screen. Then, the processor 101 instructs the display device 106 to display the generated image. In response to the display instruction, the display device 106 displays the fourth warning screen.
[0057] The fourth warning screen includes an image indicating that the distal arm 313 has entered the singular point warning. The fourth warning screen also includes an image indicating which distal arm 313 has entered the singular point range R3.
[0058] If the processor 101 determines to stop the simulation in step ST36, it determines Yes and advances the process to step ST41. Also, if the processor 101 determines to stop the simulation in step ST33, it determines Yes and advances the process to step ST41. Further, after the process of step ST38 or step ST41, the processor 101 advances the process to step ST41.
[0059] In step ST41, the processor 101 stops the ongoing simulation. That is, the processor 101 stops the operation of the virtual robot. The processor 101 outputs, from a speaker or the like, a voice such as an alarm indicating that the simulation has been stopped. Further, the processor 101 may cause the display device 106 to display an image indicating that the simulation has been stopped. After the processing of step ST41, the processor 101 ends the stop processing shown in FIG. 4.
[0060] If the processor 101 has ended the stop processing, it ends the processing of step ST16 in FIG. 3 and advances the processing to step ST17.
[0061] In step ST17, the processor 101 determines whether or not the simulation was stopped in the processing of the most recent step ST16. If the processor 101 has performed the simulation, it determines Yes in step ST17 and returns the processing to step ST13. On the other hand, if the processor 101 has not stopped the simulation, it determines No in step ST17 and advances the processing to step ST18.
[0062] In step ST18, the processor 101 determines whether or not the simulation of the movement path from the latest teaching point to the temporary teaching point has been completed. If the processor 101 has not completed the simulation, it determines No in step ST18 and returns the processing to step ST15. Then, in step ST15, the processor 101 executes the continuation of the simulation. On the other hand, if the processor 101 has completed the simulation, it determines Yes in step ST18 and advances the processing to step ST20.
[0063] In step ST19, the processor 101 generates an image corresponding to the teaching point addition screen. Then, the processor 101 instructs the display device 106 to display the generated image. In response to the display instruction, the display device 106 displays the teaching point screen.
[0064] The teaching point screen is a screen showing that the simulation of the movement path from the latest teaching point to the temporary teaching point has been completed and the result of the simulation. The teaching point screen includes an image indicating that the temporary teaching point can be added to the robot program as a teaching point. The teaching point screen includes an image showing the movement path from the latest teaching point to the temporary teaching point. Also, in the simulation of the movement path from the latest teaching point to the temporary teaching point, if any of the front arms 313 extends outside the virtual movable range R2, the teaching point screen includes an image showing that the front arm 313 extends outside the virtual movable range R2. Further, in the simulation of the movement path from the latest teaching point to the temporary teaching point, if any of the front arms 313 enters the singularity warning range R4, the teaching point screen includes an image showing that the front arm 313 enters the singularity warning range R4.
[0065] In step ST20, the processor 101 determines whether a temporary teaching point indicating the movement destination of the robot 300 has been specified. That is, the processor 101 performs the same processing as in step ST13. If no temporary teaching point is specified, the processor 101 determines No in step ST20 and advances the process to step ST21.
[0066] In step ST21, the processor 101 determines whether to start setting the warning range. That is, the processor 101 performs the same processing as in step ST14. If the setting of the warning range is not started, the processor 101 determines No in step ST21 and advances the process to step ST22.
[0067] In step ST22, the processor 101 determines whether to add the provisional teaching point as a teaching point to the robot program being created. The operator of the programming device 100 decides whether to add a teaching point by looking at, for example, the content displayed on the teaching point screen. Then, if the operator decides to add a teaching point, the operator performs an operation to give an instruction to add the teaching point using the input device 105. The processor 101 determines to add a teaching point, for example, in response to the performance of the operation. Further, the processor 101 may automatically determine whether to add a teaching point based on the simulation result of the movement path from the latest teaching point to the provisional teaching point. For example, the processor 101 may determine to add a teaching point if, in the simulation, none of the front arms 313 goes outside the virtual movable range R2 and does not enter the singularity warning range R4. If the processor 101 does not add a teaching point, it determines No in step ST22 and returns the process to step ST20. Thus, the processor 101 enters a waiting state in which steps ST20 to ST22 are repeated until it is determined that a teaching point indicating the movement destination of the robot 300 is specified, the setting of the warning range is started, or a teaching point is added.
[0068] If a provisional teaching point is specified while the processor 101 is in the waiting state of steps ST20 to ST22, the processor 101 determines Yes in step ST20 and returns the process to step ST15.
[0069] If a teaching point is added while the processor 101 is in the waiting state of steps ST20 to ST22, the processor 101 determines Yes in step ST22 and advances the process to step ST23. In step ST23, the processor 101 adds the provisional teaching point as a teaching point to the robot program being created. That is, based on the result of the simulation of the movement path of the robot 300 from the latest teaching point to the provisional teaching point, the processor 101 adds a program indicating the operation of the robot 300 for the robot 300 to move along the movement path from the latest teaching point to the provisional teaching point to the robot program being created. Note that, by the process of step ST23, the provisional teaching point becomes the latest teaching point. After the process of step ST23, the processor 101 returns the process to step ST13.
[0070] If the processor 101 determines to start setting the warning range while in the waiting state of step ST13 and step ST14, it determines Yes in step ST14 and advances the process to step ST24. Also, if the processor 101 determines to start setting the warning range while in the waiting state of step ST20 to step ST22, it determines Yes in step ST21 and advances the process to step ST24.
[0071] In step ST24, the processor 101 generates an image corresponding to the setting screen as shown in FIGS. 5 to 8. Then, the processor 101 instructs the display device 106 to display the generated image. In response to the display instruction, the display device 106 displays the setting screen.
[0072] FIGS. 5 to 8 are diagrams each showing an example of the setting screen. The processor 101 displays different setting screens depending on, for example, what settings are to be made. What settings are to be made is based on, for example, the operation content by the operator of the programming device 100.
[0073] FIG. 5 is a diagram showing an example of a setting screen SC1 for collectively setting the virtual movable ranges R2 of the respective drive units 310b. The setting screen SC1 includes a region AR11 and a region AR12, as well as a specified value button B11, a return button B12, and a determination button B13. The region AR11 is an input field for inputting a setting value for how much smaller the virtual movable range R2 is to be than the movable range R1. In the region AR11 of FIG. 5, 10[%] is input as an example. In this case, if the movable range R1 is -140° to 140°, the virtual movable range R2 is -126° to 126°. That is, when the number input in the region AR12 is set as C1, D21 = D11×(100 - C1)×0.01 (1) D22 = D12×(100 - C1)×0.01 (2) is obtained. Alternatively, D21 = D11 - (D12 - D11)×C1×0.01÷2 (3) D22 = D12 + (D12 - D11)×C1×0.01÷2 (4) may also be used.
[0074] The region AR11 may be an input field for inputting an angle instead of a ratio. As an example, when 10[°] is input in the region AR11, if the movable range R1 is -140° to 140°, the virtual movable range R2 is -130° to 130°. When the angle input in the region AR11 is set as C2, D21 = D11 - C2 (5) D22 = D12 - C2 (6) is obtained. Note that C2 is a number greater than 0 and less than 100.
[0075] The area AR12 is an area for inputting a setting on whether to stop the simulation when any of the front arms 313 goes outside the virtual movable range R2. As an example, when the checkbox is on, that is, if the value of the area AR12 is True or the like, it indicates a setting to stop the simulation. And when the checkbox is off, that is, if the value of the area AR12 is False or the like, it indicates a setting not to stop the simulation.
[0076] The default value button B11 is a button for inputting default values into the area AR11 and the area AR12. When the default value button B11 is operated, the processor 101 inputs predetermined default values into the area AR11 and the area AR12.
[0077] The back button B12 is a button for the operator to operate when ending the display of the setting screen without changing the settings.
[0078] The decision button B13 is a button for the operator to operate when saving the content input on the setting screen and changing the settings.
[0079] FIG. 6 is a diagram showing an example of a setting screen SC2 for individually setting the virtual movable range R2 of each drive unit 310b. The setting screen SC2 includes an area AR21, a plurality of areas AR22, a default value button B21, a back button B12, and a decision button B13. Each area AR22 includes areas AR221 to AR225.
[0080] The area AR21 is an area for inputting a setting on whether to stop the simulation when any of the front arms 313 goes outside the virtual movable range R2. As an example, when the checkbox is on, that is, if the value of the area AR21 is True or the like, it indicates a setting to stop the simulation. And when the checkbox is off, that is, if the value of the area AR21 is False or the like, it indicates a setting not to stop the simulation.
[0081] There are, for example, the same number of areas AR22 as the number of drive units 310b. And each area AR22 corresponds one-to-one to a different drive unit 310b. J1 to J3 shown in each area AR22 are examples of numbers for identifying which drive unit 310b they correspond to. Area AR221 displays the angle D11 for the corresponding drive unit 310b. Area AR222 is an input field for inputting the angle D21 for the corresponding drive unit 310b. Area AR223 is an input field for inputting the angle D22 for the corresponding drive unit 310b. Area AR224 displays the angle D12 for the corresponding drive unit 310b. Area AR225 is an area for inputting a setting to enable or disable the virtual movable range R2 for the corresponding drive unit 310b. As an example, if the check box in area AR225 is on, that is, if the value of area AR225 is True or the like, it indicates enabling the virtual movable range R2. And if the check box in area AR225 is off, that is, if the value of area AR225 is False or the like, it indicates disabling the virtual movable range R2. Note that the setting screen SC2 may also be able to set the virtual movable range R2 by inputting a ratio in the same way as the setting screen SC1.
[0082] The specified value button B21 is a button for inputting default values into area AR21, area AR222, area AR223, and area AR225. When the button B21 is operated, the processor 101 inputs predetermined default values into area AR21, area AR222, area AR223, and area AR225. The default values are included in, for example, the model information.
[0083] FIG. 7 is a diagram showing an example of a setting screen SC3 for collectively setting the singularity warning range R4 of each drive unit 310b. The setting screen SC3 includes a region AR31, a region AR32, a specified value button B31, a return button B12, and a determination button B13. The region AR31 is an input field for inputting a setting value for how much larger the singularity warning range R4 is than the singularity range R3. In the region AR31 of FIG. 7, 2 [times] is input as an example. In this case, if the singularity range R3 is -5° to 5°, the virtual movable range R2 is -10° to 10°. That is, if the number input in the region AR32 is set as C3, D41 = D31 × C3 (7) D42 = D32 × C3 (8) That is. Alternatively, D41 = D31 - (D32 - D31) × (C3 - 1) (9) D42 = D32 + (D32 - D31) × (C3 - 1) (10) may also be used. Note that C3 is a number of 0 or more. Note that the region AR31 may be able to input an angle. The angle indicates, for example, the difference between the angle D41 and the angle D31, and the difference between the angle D42 and the angle D32.
[0084] The region AR32 is a region for inputting a setting for whether to stop the simulation when any of the front arms 313 enters the singularity range R3. As an example, if the region AR32 is in a state where the checkbox is on, that is, the value of the region AR32 is True or the like, it indicates a setting to stop the simulation. And if the region AR32 is in a state where the checkbox is off, that is, the value of the region AR32 is False or the like, it indicates a setting not to stop the simulation.
[0085] The specified value button B31 is a button for inputting default values to the region AR31 and the region AR32. When the specified value button B31 is operated, the processor 101 inputs default values predetermined to the region AR31 and the region AR32. The default values are included in, for example, the model information.
[0086] FIG. 8 is a diagram showing an example of a setting screen SC4 for individually setting the singularity warning range R4 of each drive unit 310b. The setting screen SC4 includes an area AR41, a plurality of areas AR42, a specified value button B41, a return button B12, and a determination button B13. Each area AR42 includes an area AR421 and an area AR422.
[0087] The area AR41 is an area for inputting a setting as to whether to stop the simulation when any of the front arms 313 enters the singularity warning range R4. As an example, the area AR41 indicates that when the check box is on, that is, the value of the area AR41 is True or the like, the simulation is set to stop. And when the check box is off, that is, the value of the area AR41 is False or the like, the area AR41 indicates that the simulation is not set to stop.
[0088] There are, for example, the same number of areas AR42 as the number of drive units 310b. And each area AR42 corresponds one-to-one with a different drive unit 310b. The area AR421 is an input field for inputting a set value as to how much larger the singularity warning range R4 for the corresponding drive unit 310b is than the singularity range R3. Note that the area AR421 may be able to input an angle. The area AR422 is an area for inputting a setting as to whether to enable the singularity warning range R4 of the corresponding drive unit 310b. As an example, the area AR422 indicates that when the check box is on, that is, the value of the area AR422 is True or the like, the singularity warning range R4 is enabled. And when the check box is off, that is, the value of the area AR422 is False or the like, the area AR422 indicates that the singularity warning range R4 is disabled.
[0089] The specified value button B41 is a button for inputting default values into the area AR41, the area AR421, and the area AR422. When the specified value button B31 is operated, the processor 101 inputs predetermined default values into the area AR41, the area AR421, and the area AR422. The default values are included in, for example, the model information.
[0090] The operator of the programming device 100 operates the setting screen as shown above to input desired setting contents.
[0091] In step ST25, the processor 101 determines whether an operation instructing to return to the original screen without changing the settings has been performed. That is, the processor 101 determines whether a predetermined operation such as operating the return button B12 has been performed. If an operation instructing to return to the original screen without changing the settings is not performed, the processor 101 determines No in step ST25 and advances the process to step ST26.
[0092] In step ST26, the processor 101 determines whether an operation instructing to change the settings has been performed. That is, the processor 101 determines whether a predetermined operation such as operating the decision button B13 has been performed. If an operation instructing to change the settings is not performed, the processor 101 determines No in step ST26 and returns the process to step ST25. Thus, the processor 101 enters a waiting state in which steps ST25 and ST26 are repeated until an operation instructing to return to the original screen without changing the settings or an operation instructing to change the settings is performed.
[0093] When in the waiting state of steps ST25 and ST26, if an operation instructing to return to the original screen without changing the settings is performed, the processor 101 determines Yes in step ST25 and returns the process to step ST13. Also, at this time, the processor 101 controls the display device 106 to end the display of the setting screen.
[0094] When the processor 101 is in the waiting state of step ST25 and step ST26, if an operation instructing a setting change is performed, it determines Yes in step ST26 and advances the process to step ST27.
[0095] In step ST27, the processor 101 stores the setting content based on the content input to the setting screen in the setting information of the auxiliary storage device 104 and the like. After the process of step ST27, the processor 101 returns the process to step ST25.
[0096] The programming device 100 of the embodiment determines that the drive unit 310b of the virtual robot that simulates or emulates the robot 300 enters a singularity warning range R4 that is wider than the actual singularity range R3. In this way, the programming device 100 of the embodiment can detect that the drive unit 310b enters the singularity warning range R4 and perform various processes such as stopping the simulation and giving a warning. Thereby, the programming device 100 of the embodiment can prevent the drive unit 310 of the actual robot 300 operating with the robot program created by offline programming from entering the singularity range R3. Further, thereby, the programming device 100 of the embodiment can reduce the amount of correction required for the robot program created by offline programming.
[0097] Also, the programming device 100 of the embodiment notifies that the drive unit 310b of the virtual robot enters the singularity warning range R4. Thereby, the programming device 100 of the embodiment can prevent the drive unit 310 of the actual robot 300 operating with the robot program created by offline programming from entering the singularity range R3 and reduce the amount of correction required for the robot program.
[0098] Further, when the drive unit 310b of the virtual robot enters the singularity warning range R4, the programming device 100 of the embodiment stops the simulation. That is, the programming device 100 stops the operation of the virtual robot. Thereby, the programming device 100 prevents adding teaching points such that the drive unit 310b enters the singularity warning range R4 to the robot program. Thereby, the programming device 100 of the embodiment prevents the drive unit 310 of the actual robot 300 operating with the robot program created by offline programming from entering the singularity range R3, and can reduce the amount of correction required for the robot program.
[0099] Also, the programming device 100 of the embodiment can set the width of the singularity warning range R4. Thereby, it is considered possible for the robot program creator, the administrator of the programming system 1, etc. to change the setting to facilitate offline programming, control the quality of the robot programming created by offline programming, etc.
[0100] Further, the programming device 100 of the embodiment determines that the drive unit 310b of the virtual robot goes outside the virtual movable range R2 that is narrower than the actual movable range R1. In this way, the programming device 100 of the embodiment can perform various processes such as detecting that the drive unit 310b goes outside the virtual movable range R2 and stopping and warning the simulation. Thereby, the programming device 100 of the embodiment can prevent the drive unit 310 of the actual robot 300 operating with the robot program created by offline programming from entering the movable range R1. Also, thereby, the programming device 100 of the embodiment can reduce the amount of correction required for the robot program created by offline programming.
[0101] Further, the programming device 100 according to the embodiment notifies that the drive unit 310b of the virtual robot has exited the virtual movable range R2. Thereby, the programming device 100 according to the embodiment can prevent the drive unit 310 of the actual robot 300 operating according to the robot program created by offline programming from exiting the movable range R1, and can reduce the amount of correction required for the robot program.
[0102] Further, when the drive unit 310b of the virtual robot exits the virtual movable range R2, the programming device 100 according to the embodiment stops the simulation. That is, the programming device 100 stops the operation of the virtual robot. Thereby, the programming device 100 can prevent the addition of teaching points that cause the drive unit 310b to exit the virtual movable range R2 to the robot program. Thereby, the programming device 100 according to the embodiment can prevent the drive unit 310 of the actual robot 300 operating according to the robot program created by offline programming from exiting the movable range R1, and can reduce the amount of correction required for the robot program.
[0103] Further, the width of the virtual movable range R2 can be set in the programming device 100 according to the embodiment. Thereby, it is considered possible for the robot program creator, the administrator of the programming system 1, etc. to change the setting to facilitate offline programming or to control the quality of the robot programming created by offline programming.
[0104] The above embodiments can be modified as follows. The programming device 100 may notify the content to be notified by being displayed on the display device 106 in the above embodiment by other methods such as outputting the content as sound from a speaker. The speaker is an example of a notification unit.
[0105] The unit of angle used in the above-described embodiment is [°]. However, the unit of angle used in the embodiment may be other units such as [rad]. Also, the unit of angle used in the embodiment is not limited.
[0106] The unit of ratio used in the above-described embodiment is [%] or [times]. However, the unit of ratio used in the embodiment is not limited.
[0107] The processor 101 may implement some or all of the processing realized by the program in the above embodiment by the hardware configuration of the circuit.
[0108] The program for realizing the processing of the embodiment is transferred, for example, in a state stored in the device. However, the device may be transferred in a state where the program is not stored. And the program may be transferred separately and written into the device. The transfer of the program at this time can be realized, for example, by recording on a removable storage medium or by downloading via a network such as the Internet or a LAN (local area network).
[0109] As described above, the embodiments of the present disclosure have been described, but they are shown as examples and do not limit the scope of the present disclosure. The embodiments of the present disclosure can be implemented in various modes without departing from the gist of the present disclosure.
Explanation of Reference Numerals
[0110] 1 Programming system 100 Programming device 101, 201 Processor 102, 202 ROM 103, 203 RAM 104, 204 Auxiliary storage device 105 Input device 106 Display device (notification unit) 107 Data output unit 108, 207 Bus 200 Robot control device 205 Data input unit 206 Control interface 300 Robot 310 Driving unit 310b Driving unit (virtual driving unit) 311 Drive shaft 312 Base side arm 313 Tip side arm R1 movable range (first movable range) R2 Virtual movable range (second movable range) R3 Singularity range (first singularity range) R4 Singularity warning range (second singularity range)
Claims
1. A processing unit that determines that a virtual drive unit obtained by simulating or emulating a drive unit of a robot by a computer enters a warning range that is wider than a singularity range that is the range of actual singularities of the drive unit. The processing unit is a programming device that determines whether to stop the simulation when the virtual drive unit enters the singularity range or the warning range.
2. The programming device according to claim 1, further comprising a storage device that stores model information for each model of the robot.
3. The model information includes information including dimensions, shapes, movable ranges of each part, and singularity ranges for each model, and setting information including settings for virtual movable ranges and singularity warning ranges. The processing unit determines whether to stop the simulation based on the setting information. The programming device according to claim 2.
4. The processing unit according to claim 2 or claim 3, which displays an image for setting the model information and receives an operation input of the image by an operator.
5. When the processing unit determines that the virtual drive unit enters the warning range, the processing unit controls a notification unit to notify that the virtual drive unit enters the warning range. The programming device according to any one of claims 1 to 4.
6. When the processing unit determines that the virtual drive unit enters the warning range, the processing unit stops the operation of the virtual drive unit. The programming device according to any one of claims 1 to 5.
7. The processing unit sets the warning range based on an input instructing a change in the setting of the warning range. The programming device according to any one of claims 1 to 6.
8. The processing unit determines that the virtual drive unit has exited a second movable range that is narrower than a first movable range which is the actual movable range of the drive unit, according to any one of claims 1 to 7 of the programming device.
9. When the processing unit determines that the virtual drive unit has exited the second movable range, the processing unit controls the notification unit to notify that the virtual drive unit has exited the second movable range, according to the programming device of claim 8.
10. When the processing unit determines that the virtual drive unit has exited the second movable range, the processing unit stops the operation of the virtual drive unit, according to the programming device of claim 8 or claim 9.
11. The processing unit sets the second movable range based on an input instructing a change in the setting of the second movable range, according to any one of claims 8 to 10 of the programming device.
12. When the robot cannot move to the virtual teaching point unless the virtual drive unit enters the warning range, the processing unit can simulate a movement path such that the virtual drive unit enters the warning range, according to the programming device of claim 1.
13. A processor of a programming device, functions as a processing unit that determines that a virtual drive unit that simulates or emulates a drive unit by a computer has entered a warning range set as a range wider than a singularity range which is the actual singularity range of the drive unit, a program for causing the processing unit to determine whether to stop the simulation when the virtual drive unit enters the singularity range or the warning range.
Citation Information
Patent Citations
Direct teaching control system
JP1988260779A
Manipulator orbit formation device and storage medium recording manipulator orbit forming program
JP2000015593A
Work gripping method and work gripping device
JP2009279700A
Robot control method
JP2014050960A
Method for adjusting teaching point of robot, method for calculating installation position of robot, robot system, program, and recording medium
JP2015066668A