WO2022249363A1 - プログラミング装置及びプログラム - Google Patents

プログラミング装置及びプログラム Download PDF

Info

Publication number
WO2022249363A1
WO2022249363A1 PCT/JP2021/020083 JP2021020083W WO2022249363A1 WO 2022249363 A1 WO2022249363 A1 WO 2022249363A1 JP 2021020083 W JP2021020083 W JP 2021020083W WO 2022249363 A1 WO2022249363 A1 WO 2022249363A1
Authority
WO
WIPO (PCT)
Prior art keywords
processor
range
singularity
robot
movable range
Prior art date
Application number
PCT/JP2021/020083
Other languages
English (en)
French (fr)
Inventor
達也 近江
Original Assignee
ファナック株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ファナック株式会社 filed Critical ファナック株式会社
Priority to DE112021007218.8T priority Critical patent/DE112021007218T5/de
Priority to CN202180097575.8A priority patent/CN117222500A/zh
Priority to US18/555,691 priority patent/US20240198527A1/en
Priority to JP2023523834A priority patent/JPWO2022249363A1/ja
Priority to PCT/JP2021/020083 priority patent/WO2022249363A1/ja
Priority to TW111116682A priority patent/TW202313282A/zh
Publication of WO2022249363A1 publication Critical patent/WO2022249363A1/ja

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1671Programme controls characterised by programming, planning systems for manipulators characterised by simulation, either to verify existing program or to create and verify new program, CAD/CAM oriented, graphic oriented programming systems
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/4155Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by programme execution, i.e. part programme or machine function execution, e.g. selection of a programme
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/42Recording and playback systems, i.e. in which the programme is recorded from a cycle of operations, e.g. the cycle of operations being manually controlled, after which this record is played back on the same machine
    • G05B19/425Teaching successive positions by numerical control, i.e. commands being entered to control the positioning servo of the tool head or end effector
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/42Recording and playback systems, i.e. in which the programme is recorded from a cycle of operations, e.g. the cycle of operations being manually controlled, after which this record is played back on the same machine
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40354Singularity detection
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40387Modify without repeating teaching operation

Definitions

  • the present disclosure relates to programming devices and programs.
  • Robot programs for operating robots equipped with robot arms etc. may be created using offline programming.
  • off-line programming for example, programming is performed using a robot that emulates or simulates a real robot on software (hereinafter referred to as "virtual robot").
  • virtual robot various parts such as the placement positions of objects are different from the real environment. For this reason, if a robot program created by offline programming is only modified to match the site and the actual robot is operated, the robot program will try to move the robot out of the movable range or make the robot reach a singular point. It may be moved. Therefore, when operating a real robot with a robot program created by offline programming, additional modification of the program may be required.
  • What is desired is a programming device and program that can reduce the amount of modifications required to robot programs created by offline programming.
  • the programming device of the present disclosure includes a processing unit.
  • the processing unit determines that the computer simulated or emulated virtual drive unit of the robot falls within a second singularity range wider than the first singularity range, which is the range of the actual singularity of the drive unit. judge.
  • the present disclosure can reduce the amount of modifications required to robot programs created by offline programming.
  • FIG. 1 is a block diagram showing an example of a programming system according to an embodiment and an example of a main configuration of components included in the programming system;
  • FIG. FIG. 2 is a diagram for explaining a driving unit in FIG. 1; 2 is a flowchart showing an example of processing by a processor of the programming device shown in FIG. 1; 2 is a flowchart showing an example of processing by a processor of the programming device shown in FIG. 1; The figure which shows an example of the setting screen for collectively setting the virtual movable range of each drive part.
  • FIG. 10 is a diagram showing an example of a setting screen for individually setting the virtual movable range of each drive unit; The figure which shows an example of the setting screen for collectively setting the singularity warning range of each drive part.
  • FIG. 10 is a diagram showing an example of a setting screen for individually setting singularity warning ranges for the respective driving units;
  • FIG. 1 is a block diagram showing an example of the main configuration of a programming system 1 according to an embodiment and components included in the programming system 1.
  • the programming system 1 is a system that can create a robot program for operating the robot 300 by offline programming.
  • the programming system 1 includes a programming device 100, a robot control device 200 and a robot 300 as an example.
  • the programming device 100 is a device capable of offline programming of robot programs. Also, the programming device 100 can simulate or emulate the robot 300 in virtual space.
  • the programming device 100 is, for example, a PC, server, workstation, tablet terminal, or the like.
  • 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 section 107 .
  • a bus 108 or the like connects these units.
  • the processor 101 is a central part of a computer that performs processing such as calculation and control necessary for the operation of the programming device 100, and performs various calculations and processing.
  • the processor 101 includes, 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).
  • processor 101 is a combination of several of these.
  • the processor 101 may be a combination of these with a hardware accelerator or the like.
  • the processor 101 controls each part to realize various functions of the programming device 100 based on programs such as firmware, system software, and application software stored in the ROM 102 or the auxiliary storage device 104 . Further, the processor 101 executes processing described later based on the program. Note that part or all of the program may be incorporated in the circuit of the processor 101 .
  • Processor 101 is an example of a processing unit.
  • a ROM 102 and a RAM 103 are main storage devices of a computer centered on the processor 101 .
  • the ROM 102 is a non-volatile memory exclusively used for reading data.
  • the ROM 102 stores, for example, firmware among the above programs.
  • the ROM 102 also stores data used when the processor 101 performs various processes.
  • a RAM 103 is a memory used for reading and writing data.
  • the RAM 103 is used as a work area for storing data temporarily used when the processor 101 performs various processes.
  • RAM 103 is typically volatile memory.
  • the auxiliary storage device 104 is an auxiliary storage device of a computer with the processor 101 at its core.
  • the auxiliary storage device 104 is, for example, an EEPROM (electric erasable programmable read-only memory), a HDD (hard disk drive), or a flash memory.
  • the auxiliary storage device 104 stores, for example, system software and application software among the above programs.
  • the auxiliary storage device 104 stores data used when the processor 101 performs various types of processing, data such as a robot program generated by processing by the processor 101, various set values, and the like.
  • the auxiliary storage device 104 also 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 the dimensions and shape of each model, and the movable range and singular point range of each part.
  • the model information includes setting information.
  • the setting information includes various setting values for each model.
  • the setting information includes, for example, settings for a virtual movable range and a singularity warning range, which will be described later.
  • the input device 105 accepts operations by the operator of the programming device 100 .
  • the input device 105 is, for example, a keyboard, keypad, touchpad, mouse or controller. Also, the input device 105 may be a device for voice input.
  • 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.
  • a touch panel can also be used as the input device 105 and the display device 106 . That is, a display panel included in the touch panel can be used as the display device 106 and a touch pad included in the touch panel can be used as the input device 105 .
  • the display device 106 is an example of a notification unit.
  • 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 semiconductor media, optical media, or magnetic media.
  • the data output unit 107 is an interface for wired communication by connecting with another device using a communication cable such as a USB (universal serial bus) cable or an Ethernet (registered trademark) cable.
  • the data output unit 107 is an interface for wireless communication with another device.
  • a bus 108 includes a control bus, an address bus, a data bus, etc., and transmits signals exchanged with each part of the programming device 100 .
  • 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 section 205 and a control interface 206.
  • a bus 207 or the like connects these units.
  • the processor 201 is a central part of a computer that performs processing such as calculation and control necessary for the operation of the robot control device 200, and performs various types of calculation and processing.
  • the processor 201 is, for example, CPU, MPU, SoC, DSP, GPU, ASIC, PLD, FPGA, or the like.
  • processor 201 is a combination of several of these.
  • 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 . Further, the processor 201 executes processing described later based on the program. Note that part or all of the program may be incorporated in the circuit of the processor 201 .
  • a ROM 202 and a RAM 203 are main storage devices of a computer centered on the processor 201 .
  • the ROM 202 is a non-volatile memory exclusively used for reading data.
  • the ROM 202 stores, for example, firmware among the above programs.
  • the ROM 202 also stores data used when the processor 201 performs various processes.
  • a RAM 203 is a memory used for reading and writing data.
  • the RAM 203 is used as a work area for storing data temporarily used when the processor 201 performs various processes.
  • RAM 203 is typically volatile memory.
  • the auxiliary storage device 204 is an auxiliary storage device of a computer with the processor 201 at its core.
  • Auxiliary storage device 204 is, for example, EEPROM, HDD, or flash memory.
  • the auxiliary storage device 204 stores, among the above programs, system software, application software, robot programs, and the like, for example.
  • the auxiliary storage device 204 stores data used by the processor 201 to perform various processes, data generated by the processes performed by the processor 201, various setting values, and the like.
  • 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 on a removable storage medium.
  • the data input unit 205 is an interface for wired or wireless communication with the data output unit 107 or the like.
  • the control interface 206 is an interface for the robot control device 200 to communicate with the robot 300.
  • Robot controller 200 controls robot 300 via control interface 206 .
  • a bus 207 includes a control bus, an address bus, a data bus, etc., and transmits signals sent and received by each part of the robot control device 200 .
  • the robot 300 is, for example, a manipulator, a robot arm, or a robot equipped with these.
  • the robot 300 is, for example, an articulated robot.
  • Robot 300 illustratively includes one or more drives 310 .
  • 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 a drive unit 310b.
  • Driver 310b is an example of a virtual driver.
  • the drive unit 310 is a part driven by a motor such as a servomotor.
  • the drive unit 310 is rotationally driven around a drive shaft, for example.
  • FIG. 2 is a diagram for explaining the driving section 310 and the driving section 310b.
  • the drive unit 310 includes a drive shaft 311 , a root arm 312 and a tip arm 313 .
  • the drive portion 310 b similarly includes a drive shaft 311 , a proximal arm 312 and a distal arm 313 .
  • FIG. 2 also shows a movable range R1, a virtual movable range R2, a singularity range R3, and a singularity warning range R4.
  • 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.
  • a proximal arm 312 and a distal arm 313 are two arms connected by a drive shaft 311 .
  • the tip-side arm 313 is closer to the tip side of the robot arm 300 than the root-side arm 312 and is next to the root-side arm 312 to the root side of the robot arm 300 .
  • the tip side arm 313 may also be the root side arm 312 of the other drive section 310 .
  • the front arm 313 is freely rotatable about the drive shaft 311 with respect to the base arm 312 within a movable range R1.
  • the movable range R1 is, for example, a range from an angle D11 [°] to an angle D12 [°] with the reference angle D0 set to 0 [° (degrees)].
  • the angle D11 and the angle D12 are D11 ⁇ 0 ⁇ D12.
  • 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 range of motion R1 includes the virtual range of motion R2.
  • the virtual movable range R2 is a range of an angle D21 [°] or more and an angle D22 [°] or less with the reference angle D0 being 0 [°].
  • the angle D21 and the angle D22 are D21 ⁇ 0 ⁇ D22.
  • the difference between the angles D11 and D21 is, for example, 0° to 10°.
  • the difference between the angles D12 and D22 is, for example, 0° to 10°.
  • a singular point range R3 is a range where the front arm 313 is a singular point.
  • the programming device 100 also sets a singularity warning range R4 for each driving unit 310b.
  • the singularity warning range R4 includes the singularity range R3 and is wider than the singularity range R3.
  • the singular point range R3 is a range of an angle D31 [°] or more and an angle D32 [°] or less when the reference angle D0 is 0 [°].
  • the angle D31 and the angle D32 are D31 ⁇ 0 ⁇ D32.
  • the singularity warning range R4 is a range from an angle D41 [°] to an angle D42 [°] where the reference angle D0 is 0 [°].
  • the angle D41 and the angle D42 are D41 ⁇ 0 ⁇ D42.
  • the difference between the angles D41 and D31 is, for example, 0° to 6°.
  • the difference between the angle D42 and the angle D32 is, for example, 0° to 6°.
  • FIG. 2 shows an angle D5.
  • the angle D5 is an angle indicating the rotational position of the front arm 313 with respect to the base arm 312 when the reference angle D0 is 0[°].
  • D5 shown in FIG. 2 satisfies D22 ⁇ D5 ⁇ D12, but is not limited to this.
  • FIGS. 3 and 4 are flowcharts showing an example of processing by the processor 101 of the programming device 100.
  • the processor 101 executes the processes of FIGS. 3 and 4 based on programs stored in the ROM 102 or the auxiliary storage device 104, for example.
  • the processor 101 of the programming device 100 starts the processing shown in FIG. 3, for example, when application software for offline programming is activated.
  • the processor 101 determines settings such as the model of the robot 300 for which the 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 model information of which model the processor 101 acquires is based on, for example, the content of the operation input by the operator of the programming device 100 using the input device 105 . Alternatively, the processor 101 may acquire model information of a predetermined model.
  • the processor 101 determines the placement of the robot 300, workpieces, obstacles, and other necessary objects in the virtual space.
  • the processor 101 determines the setting of the arrangement, for example, based on the contents of operation input by the operator of the programming device 100 using the input device 105 .
  • the processor 101 may determine the placement settings based on information obtained from the auxiliary storage device 104 or other devices, for example.
  • the processor 101 determines whether or not a teaching point indicating the destination of the robot 300 has been specified.
  • the teaching point is specified based on an operation input by the operator of programming device 100 .
  • the teach point is designated based on input of information such as a command from another device.
  • the processor 101 may automatically designate teaching points.
  • the teaching point may be designated by other methods.
  • the teaching point specified here is called a temporary teaching point. If the temporary teaching point is not designated, processor 101 determines No in step ST13, and advances the process to step ST14.
  • step ST14 the processor 101 determines whether or not to start setting the warning range. For example, when the operator of the programming device 100 performs an operation to start setting the warning range, the processor 101 determines to start setting the warning range. If the setting of the warning range is not started, the processor 101 determines No in step ST14 and returns the process to step ST13. Thus, the processor 101 enters a standby state in which steps ST13 and ST14 are repeated until the provisional teaching point is designated or until it is determined to start setting the warning range.
  • step ST13 When the processor 101 is in the standby state of steps ST13 and ST14 and a teaching point indicating the destination of the robot 300 is designated, the processor 101 determines Yes in step ST13 and advances the process to step ST15.
  • the processor 101 advances the simulation of the movement path of the robot 300 in the virtual space from the latest teaching point of the robot program being created to the temporary teaching point by a predetermined amount.
  • the latest teach point is the teach point added at the end of the robot programming. If the simulation has progressed halfway in the previous execution of step ST15, the processor 101 advances the simulation from the middle by a predetermined amount.
  • the processor 101 also starts the simulation and advances it by a predetermined amount if the simulation has not yet started. However, the processor 101 advances the simulation to completion if less than the predetermined amount remains to complete the simulation. In the simulation, the processor 101 performs the simulation so that all the drive units 310b do not enter the virtual movable range R2 and the singular point warning range R4.
  • the processor 101 determines that any of the drive units 310b is virtually movable. A moving route that goes outside the range R2 or enters the singularity warning range R4 may be simulated. Further, the processor 101 prevents all of the drive units 310b from entering the outside of the movable range R1 and the singularity range R3 even if at least one of the drive units 310b enters the outside of the virtual movable range R2 or the singularity warning range R4. Simulate.
  • the processor 101 determines whether any of the drive units 310b is out of the movable range R1. Alternatively, a moving route that falls within the singular point range R3 may be simulated.
  • the processor 101 executes the stop processing shown in FIG. It should be noted that the processor 101 performs a stop process for the process of the most recent step ST15 in the simulation being executed.
  • the stopping process is a process of determining whether or not to stop the simulation based on the processing result of the step ST15, and stopping the simulation when it is decided to stop.
  • the processor 101 advances the process to step ST31 in FIG. 4 upon starting the execution of the stop process.
  • the processor 101 determines whether or not at least one of the front arms 313 of the robot 300 has newly moved out of the virtual movable range R2 due to the most recent processing of step ST15 in the simulation being executed. That the front arm 313 is out of the virtual movable range R2 indicates that the angle D5 of the front arm 313 is less than the angle D21 or greater than the angle D22. Note that the processor 101 considers that the front arm 313 does not go outside the virtual movable range R2 regardless of the angle D5 for the drive unit 310b for which the virtual movable range R2 is disabled by setting. If at least one of the front arms 313 newly moves out of the virtual movable range R2, the processor 101 determines Yes in step ST31, and advances the process to step ST32.
  • the processor 101 generates an image corresponding to the first warning screen.
  • Processor 101 then instructs display device 106 to display this generated image.
  • the display device 106 Upon receiving the display instruction, the display device 106 displays the first warning screen.
  • the first warning screen includes an image indicating that the front arm 313 is going out of the virtual movable range R2. Also, the first warning screen includes an image showing which front arm 313 will go out of the virtual movable range R2.
  • a character is a kind of image.
  • the processor 101 determines whether or not to stop the simulation. For example, the processor 101 refers to the setting information and determines to stop the simulation when the setting is to stop the simulation when the front arm 313 goes out of the virtual movable range R2.
  • step ST33 If the processor 101 does not stop the simulation, it determines No in step ST33 and advances the process to step ST34. If none of the drive units 310b has newly moved outside the virtual movable range R2, the processor 101 determines No in step ST31, and advances the process to step ST34.
  • step ST34 the processor 101 determines whether or not at least one of the leading arms 313 has newly entered the singularity warning range R4 due to the most recent processing of step ST15 in the simulation being executed. That the front arm 313 is within the singularity warning range R4 means that the angle D5 of the front arm 313 is greater than or equal to the angle D41 and less than the angle D42. Note that the processor 101 considers that the front arm 313 of the drive unit 310b for which the singularity warning range R4 is disabled by setting does not enter the singularity warning range R4 regardless of the angle D5. If at least 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.
  • the processor 101 generates an image corresponding to the second warning screen.
  • Processor 101 then instructs display device 106 to display this generated image.
  • the display device 106 displays the second warning screen.
  • the second warning screen includes an image showing that the distal arm 313 will enter the singularity warning range R4. Also, the second warning screen includes an image showing which front arm 313 enters the singularity warning range R4.
  • the processor 101 determines whether or not to stop the simulation. For example, the processor 101 refers to the setting information and determines to stop the simulation if the setting is to stop the simulation when the front arm 313 enters the singular point warning range R4.
  • processor 101 determines No in step ST36 and advances the process to step ST37. If none of the front arms 313 newly enter the singularity warning range R4, the processor 101 determines No in step ST34, and advances the process to step ST37.
  • step ST37 the processor 101 determines whether or not at least one of the leading arms 313 has newly moved out of the movable range R1 due to the most recent processing of step ST15 in the simulation being executed. If at least one of the front arms 313 newly moves out of the movable range R1, the processor 101 determines Yes in step ST37, and advances the process to step ST38.
  • the processor 101 generates an image corresponding to the third warning screen.
  • Processor 101 then instructs display device 106 to display this generated image.
  • the display device 106 displays the third warning screen.
  • the third warning screen includes an image indicating that the front arm 313 is going out of the movable range R1. Also, the third warning screen includes an image indicating which front arm 313 is out of the movable range R1.
  • step ST39 the processor 101 determines whether or not at least one of the leading arms 313 has newly entered the singular point range R3 by the most recent processing of step ST15 in the simulation being executed. If none of the front arms 313 newly enter the singular point range R3, the processor 101 determines No in step ST39, and terminates the stop processing shown in FIG. On the other hand, if at least one of the front arms 313 has newly entered the singularity warning range R4, the processor 101 determines Yes in step ST39, and advances the process to step ST40.
  • the processor 101 generates an image corresponding to the fourth warning screen.
  • Processor 101 then instructs display device 106 to display this generated image.
  • the display device 106 displays the fourth warning screen.
  • the fourth warning screen includes an image showing that the distal arm 313 enters the singularity warning. Also, the fourth warning screen includes an image showing which front arm 313 enters the singular point range R3.
  • step ST36 determines Yes and advances the process to step ST41. If the processor 101 determines to stop the simulation in step ST33, it determines Yes and advances the process to step ST41. Moreover, the processor 101 advances a process to step ST41 after the process of step ST38 or step ST41.
  • the processor 101 stops the running simulation. That is, the processor 101 stops the motion of the virtual robot.
  • the processor 101 outputs a sound such as an alarm indicating that the simulation has stopped from a speaker or the like. Also, the processor 101 may cause the display device 106 to display an image indicating that the simulation has stopped. After the process of step ST41, the processor 101 ends the stop process shown in FIG.
  • step ST16 After finishing the stop process, the processor 101 finishes the process of step ST16 in FIG. 3 and advances the process to step ST17.
  • step ST17 the processor 101 determines whether or not the simulation was stopped in the most recent processing of step ST16. After the simulation, the processor 101 determines Yes in step ST17 and returns the process to step ST13. On the other hand, if the simulation has not been stopped, the processor 101 determines No in step ST17 and advances the process to step ST18.
  • step ST18 the processor 101 determines whether or not the simulation of the moving route from the latest taught point to the tentative taught point has been completed. If the simulation has not been completed, the processor 101 determines No in step ST18 and returns the process to step ST15. Then, the processor 101 continues the simulation in step ST15. On the other hand, if the simulation is completed, the processor 101 determines Yes in step ST18, and advances the process to step ST20.
  • the processor 101 generates an image corresponding to the teaching point addition screen.
  • Processor 101 then instructs display device 106 to display this generated image.
  • the display device 106 displays the teaching point screen.
  • the teaching point screen is a screen that indicates the completion of the simulation of the movement route from the latest teaching point to the temporary teaching point 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 moving route from the latest teaching point to the temporary teaching point.
  • the teaching point screen shows that in the simulation of the movement path from the latest teaching point to the temporary teaching point, if any of the front arms 313 is out of the virtual movable range R2, the front arm 313 An image showing going out of the virtual movable range R2 is included.
  • the teaching point screen displays that when any of the front arms 313 is within the singularity warning range R4 in the simulation of the movement path from the latest teaching point to the temporary teaching point, the front arm 313 It contains an image showing entry into the point warning range R4.
  • step ST20 the processor 101 determines whether or not a temporary teaching point indicating the destination of the robot 300 has been specified. That is, the processor 101 performs the same process as step ST13. If the temporary teaching point is not specified, processor 101 determines No in step ST20, and advances the process to step ST21.
  • step ST21 the processor 101 determines whether or not to start setting the warning range. That is, the processor 101 performs the same process as step ST14. If the setting of the warning range is not started, processor 101 determines No in step ST21 and advances the process to step ST22.
  • the processor 101 determines whether or not 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 or not to add a teaching point by looking at the content displayed on the teaching point screen, for example. Then, if the operator wants to add a teaching point, the operator performs an operation using the input device 105 to instruct to add the teaching point.
  • the processor 101 determines, for example, to add the teaching point in response to the operation being performed. Further, the processor 101 may automatically determine whether or not to add the teaching point based on the simulation result of the movement route from the latest teaching point to the temporary teaching point.
  • the processor 101 may determine to add a teaching point if none of the front arms 313 go out of the virtual movable range R2 and does not enter the singular point warning range R4 in the simulation. If the processor 101 does not add the teaching point, it determines No in step ST22 and returns the process to step ST20. Thus, the processor 101 is in a standby state in which steps ST20 to ST22 are repeated until a teaching point indicating the destination of the robot 300 is specified, a determination is made to start setting the warning range, or a determination is made to add a teaching point. becomes.
  • step ST20 When the processor 101 is in the standby state of steps ST20 to ST22 and a tentative teaching point is designated, the processor 101 determines Yes in step ST20 and returns the process to step ST15.
  • step ST23 the processor 101 adds the temporary teaching point to the robot program being created as a teaching point. That is, the processor 101, based on the result of the simulation of the movement path of the robot 300 from the latest teaching point to the temporary teaching point, determines the robot 300 for moving along the movement path from the latest teaching point to the temporary teaching point. A program demonstrating the operation of 300 is added to the robot program under construction. Note that the temporary teaching point becomes the latest teaching point by the processing of step ST23. The processor 101 returns the process to step ST13 after the process of step ST23.
  • processor 101 determines Yes in step ST14 and advances the process to step ST24. If the processor 101 determines to start setting the warning range in the standby state of steps ST20 to ST22, it determines Yes in step ST21 and advances the process to step ST24.
  • the processor 101 generates images corresponding to the setting screens shown in FIGS. Processor 101 then instructs display device 106 to display this generated image. Upon receiving the display instruction, the display device 106 displays the setting screen.
  • 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.
  • the setting to be made is based on, for example, the details of the operation performed by the operator of the programming device 100 .
  • FIG. 5 is a diagram showing an example of a setting screen SC1 for collectively setting the virtual movable range R2 of each drive unit 310b.
  • the setting screen SC1 includes an area AR11, an area AR12, a default value button B11, a return button B12, and an enter button B13.
  • the area AR11 is an input field for inputting a set value indicating how much smaller the virtual movable range R2 is compared to the movable range R1. As an example, 10[%] is entered in the area AR11 in FIG. In this case, if the movable range R1 is -140° to 140°, the virtual movable range R2 is -126° to 126°.
  • D21 D11 ⁇ (100 ⁇ C1) ⁇ 0.01 (1)
  • D22 D12+(D12-D11) ⁇ C1 ⁇ 0.01 ⁇ 2 (4) may be
  • the area AR11 may be an input field for inputting an angle instead of a ratio.
  • the movable range R1 is -140° to 140°
  • the virtual movable range R2 is -130° to 130°.
  • the angle input to the area AR11 is C2
  • D21 D11-C2
  • C2 is a number greater than 0 and less than 100.
  • the area AR12 is an area for inputting a setting as to whether or not to stop the simulation when one of the front arms 313 goes out of the virtual movable range R2.
  • the area AR12 indicates that the simulation is set to stop if the check box is ON, that is, if the value of the area AR12 is True.
  • Area AR12 indicates that the simulation is not stopped when the check box is off, that is, when the value of area AR12 is False.
  • the default value button B11 is a button for entering default values in the areas AR11 and AR12.
  • the processor 101 inputs predetermined default values to the areas AR11 and AR12.
  • the return button B12 is a button operated by the operator to end the display of the setting screen without changing the settings.
  • the decision button B13 is a button operated by the operator when saving the contents entered on the setting screen and changing the settings.
  • FIG. 6 is a diagram showing an example of the 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 return button B12, and an enter button B13.
  • Each area AR22 includes areas AR221 to AR225.
  • the area AR21 is an area for inputting a setting as to whether or not to stop the simulation when one of the front arms 313 goes out of the virtual movable range R2.
  • the area AR21 indicates that the simulation is set to stop when the check box is ON, that is, when the value of the area AR21 is True.
  • An area AR21 indicates that the simulation is not stopped when the check box is off, that is, when the value of the area AR21 is False.
  • Each area AR22 corresponds to each different drive unit 310b on a one-to-one basis.
  • J1 to J3 shown in each area AR22 are examples of numbers for identifying which driver 310b they correspond to.
  • a region AR221 displays the angle D11 for the corresponding drive unit 310b.
  • Area AR222 is an input field for inputting angle D21 for corresponding drive unit 310b.
  • Area AR223 is an input field for inputting angle D22 for corresponding driving unit 310b.
  • Area AR224 displays angle D12 for corresponding driver 310b.
  • the area AR225 is an area for inputting a setting as to whether or not to enable the virtual movable range R2 of the corresponding drive unit 310b.
  • the area AR225 indicates that the virtual movable range R2 is enabled when the check box is ON, that is, when the value of the area AR225 is True.
  • An area AR225 indicates that the virtual movable range R2 is invalidated if the check box is in an OFF state, that is, if the value of the area AR225 is False or the like.
  • the setting screen SC2 may allow setting of the virtual movable range R2 by inputting a ratio in the same manner as the setting screen SC1.
  • the default value button B21 is a button for entering default values in the areas AR21, AR222, AR223, and AR225.
  • the processor 101 inputs predetermined default values to the areas AR21, AR222, AR223, and AR225.
  • the default value is included in model information, for example.
  • FIG. 7 is a diagram showing an example of the setting screen SC3 for collectively setting the singularity warning range R4 of each driving unit 310b.
  • the setting screen SC3 includes an area AR31, an area AR32, a default value button B31, a return button B12, and an enter button B13.
  • the area AR31 is an input field for inputting a set value indicating how large the singularity warning range R4 is compared to the singularity range R3.
  • 2 [times] is input as an example. In this case, if the singular point range R3 is -5° to 5°, the virtual movable range R2 is -10° to 10°.
  • D41 D31 ⁇ C3 (7)
  • the angle may be input for the area AR31. The angles indicate, for example, the difference between the angles D41 and D31 and the difference between the angles D42 and D32.
  • the area AR32 is an area for inputting a setting as to whether or not to stop the simulation when one of the front arms 313 enters the singular point range R3.
  • the area AR32 indicates that the simulation is set to stop if the check box is ON, that is, if the value of the area AR32 is True.
  • Area AR32 indicates that the simulation is not stopped when the check box is off, that is, when the value of area AR32 is False.
  • the default value button B31 is a button for entering default values in the areas AR31 and AR32.
  • the processor 101 inputs predetermined default values to the areas AR31 and AR32.
  • the default value is included in model information, for example.
  • FIG. 8 is a diagram showing an example of the 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 default value button B41, a return button B12, and an enter button B13.
  • Each area AR42 includes an area AR421 and an area AR422.
  • the area AR41 is an area for inputting a setting as to whether or not to stop the simulation when any of the front arms 313 enters the singular point warning range R4.
  • an area AR41 indicates that the simulation is set to stop if the check box is ON, that is, if the value of the area AR41 is True.
  • An area AR41 indicates that the simulation is not stopped when the check box is off, that is, when the value of the area AR41 is False.
  • the number of areas AR42 is the same as the number of drive units 310b. Each area AR42 corresponds to each different drive unit 310b on a one-to-one basis.
  • the area AR421 is an input field for inputting a set value indicating how large the singularity warning range R4 for the corresponding drive unit 310b is compared to the singularity range R3. It should be noted that the area AR421 may be able to input an angle.
  • Area AR422 is an area for inputting a setting as to whether or not singularity warning range R4 of corresponding drive unit 310b is to be enabled. As an example, an area AR422 indicates that the singularity warning range R4 is valid if the check box is ON, that is, if the value of the area AR422 is True. An area AR422 indicates that the singularity warning range R4 is invalidated if the check box is in an OFF state, that is, if the value of the area AR422 is False or the like.
  • the default value button B41 is a button for entering default values in the areas AR41, AR421, and AR422.
  • the processor 101 inputs predetermined default values to the areas AR41, AR421, and AR422.
  • the default value is included in model information, for example.
  • the operator of the programming device 100 operates the setting screen as shown above to input desired setting contents.
  • step ST25 the processor 101 determines whether or not an operation has been performed to instruct to return to the original screen without changing the settings. That is, the processor 101 determines whether or not a predetermined operation such as operating the return button B12 has been performed. Processor 101 determines No in step ST25 and advances the process to step ST26 unless an operation instructing to return to the original screen without changing the settings is performed.
  • step ST26 the processor 101 determines whether or not an operation instructing a change of settings has been performed. That is, the processor 101 determines whether or not a predetermined operation such as operating the enter button B13 has been performed. Processor 101 determines No in step ST26 and returns the process to step ST25 unless an operation to instruct the change of setting is performed. Thus, the processor 101 enters a standby 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.
  • step ST25 When the processor 101 is in the standby 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, The process is returned to step ST13. Also, at this time, the processor 101 controls the display device 106 to end the display of the setting screen.
  • step ST26 When the processor 101 is in the standby state of steps ST25 and ST26, if an operation instructing a change of settings is performed, the processor 101 determines Yes in step ST26 and advances the process to step ST27.
  • step ST27 the processor 101 saves the setting content based on the content input on the setting screen in the setting information of the auxiliary storage device 104 or the like.
  • the processor 101 returns the process to step ST25 after the process of step ST27.
  • 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 the singularity warning range R4, which is wider than the actual singularity range R3.
  • 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 issuing a warning.
  • 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 singular point range R3. This also allows the programming device 100 of the embodiment to reduce the amount of modifications required to a robot program created by offline programming.
  • the programming device 100 of the embodiment notifies that the drive unit 310b of the virtual robot enters the singularity warning range R4. As a result, the programming device 100 of the embodiment prevents the driving unit 310 of the actual robot 300 operating with the robot program created by offline programming from entering the singular point range R3, and corrects the amount of correction required for the robot program. can be reduced.
  • the programming device 100 of the embodiment stops the simulation when the virtual robot drive unit 310b enters the singularity warning range R4. That is, programming device 100 stops the operation of the virtual robot. This prevents the programming device 100 from adding a teaching point to the robot program such that the drive unit 310b enters the singularity warning range R4. As a result, the programming device 100 of the embodiment prevents the driving unit 310 of the actual robot 300 operating with the robot program created by offline programming from entering the singular point range R3, and corrects the amount of correction required for the robot program. can be reduced.
  • the programming device 100 of the embodiment can set the width of the singularity warning range R4.
  • the robot program creator, the administrator of the programming system 1, etc. can change the settings to facilitate offline programming, control the quality of robot programming created by offline programming, and the like. It is considered possible.
  • the programming device 100 of the embodiment determines that the virtual robot's drive unit 310b goes out of the virtual movable range R2, which is narrower than the actual movable range R1.
  • the programming device 100 of the embodiment can detect that the drive unit 310b is out of the virtual movable range R2, and can perform various processes such as stopping the simulation and issuing a warning.
  • the programming device 100 of the embodiment can prevent the driving section 310 of the actual robot 300 operating with the robot program created by offline programming from entering the movable range R1. This also allows the programming device 100 of the embodiment to reduce the amount of modifications required to a robot program created by offline programming.
  • the programming device 100 of the embodiment notifies that the drive unit 310b of the virtual robot will move out of the virtual movable range R2. As a result, 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 going out of the movable range R1, and corrects the amount of correction required for the robot program. can be reduced.
  • the programming device 100 of the embodiment stops the simulation when the drive unit 310b of the virtual robot goes out of the virtual movable range R2. That is, programming device 100 stops the operation of the virtual robot. This prevents the programming device 100 from adding to the robot program a teaching point that causes the drive unit 310b to go outside the virtual movable range R2. As a result, 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 going out of the movable range R1, and corrects the amount of correction required for the robot program. can be reduced.
  • the programming device 100 of the embodiment can set the width of the virtual movable range R2.
  • the robot program creator, the administrator of the programming system 1, etc. can change the settings to facilitate offline programming, control the quality of robot programming created by offline programming, and the like. It is considered possible.
  • the above embodiment can also be modified as follows.
  • the programming device 100 may notify the content displayed on the display device 106 in the above embodiment by other methods such as outputting the contents by voice from a speaker.
  • the speaker is an example of the notification unit.
  • the unit of angle used in the above embodiment is [°]. However, the units of angles used in the embodiments may be other units such as [rad]. Also, the unit of angle used in the embodiment is not limited.
  • the unit of ratio used in the above embodiment is [%] or [times]. However, the unit of ratio used in the embodiment is not limited.
  • the processor 101 may implement part or all of the processing implemented by the program in the above embodiment by means of a circuit hardware configuration.
  • a program that implements the processing of the embodiment is transferred, for example, in a state stored in a device.
  • the device may be transferred without the program stored.
  • the program may be transferred separately and written into the device. Transfer of the program at this time can be realized, for example, by recording it on a removable storage medium or downloading it via a network such as the Internet or a LAN (local area network).
  • 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 section 108, 207 bus 200 robot controller 205 data input section 206 control interface 300 robot 310 drive section 310b drive section (virtual drive section) 311 drive shaft 312 root 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)

Landscapes

  • Engineering & Computer Science (AREA)
  • Robotics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Mechanical Engineering (AREA)
  • Human Computer Interaction (AREA)
  • Manufacturing & Machinery (AREA)
  • Numerical Control (AREA)
  • Manipulator (AREA)

Abstract

本開示が解決しようとする課題は、オフラインプログラミングで作成されたロボットプログラムに必要な修正の量を減らすことができるプログラミング装置及びプログラムを提供することである。 本開示のプログラミング装置は、処理部を備える。処理部は、ロボットの駆動部をコンピューターでシミュレート又はエミュレートした仮想駆動部が前記駆動部の実際の特異点の範囲である第1の特異点範囲より広い第2の特異点範囲に入ることを判定する。

Description

プログラミング装置及びプログラム
 本開示は、プログラミング装置及びプログラムに関する。
 ロボットアームなどを備えるロボットを動作させるためのロボットプログラムは、オフラインプログラミングを用いて作成される場合がある。オフラインプログラミングでは、例えば、現実のロボットをソフトウェア上でエミュレート又はシミュレートしたロボット(以下「バーチャルロボット」という。)を用いてプログラミングを行う。しかしながら、バーチャルロボットを用いたプログラミングでは、物の配置位置など、様々な部分が実環境とは異なる。このため、オフラインプログラミングで作成されたロボットプログラムを現場に合わせる修正だけを入れて現実のロボットを動作させると、当該ロボットプログラムは、ロボットを可動範囲外に動作させようとしたり、ロボットを特異点に移動させてしまったりする場合がある。したがって、オフラインプログラミングで作成されたロボットプログラムで現実のロボットを動作させる場合、追加のプログラムの修正が必要となる場合がある。
特開2000-015593号公報
 オフラインプログラミングで作成されたロボットプログラムに必要な修正の量を減らすことができるプログラミング装置及びプログラムが望まれている。
 本開示のプログラミング装置は、処理部を備える。処理部は、ロボットの駆動部をコンピューターでシミュレート又はエミュレートした仮想駆動部が前記駆動部の実際の特異点の範囲である第1の特異点範囲より広い第2の特異点範囲に入ることを判定する。
 本開示は、オフラインプログラミングで作成されたロボットプログラムに必要な修正の量を減らすことができる。
実施形態に係るプログラミングシステム及び当該プログラミングシステムに含まれる構成要素の要部構成の一例を示すブロック図。 図1中の駆動部について説明するための図。 図1中のプログラミング装置のプロセッサーによる処理の一例を示すフローチャート。 図1中のプログラミング装置のプロセッサーによる処理の一例を示すフローチャート。 各駆動部の仮想可動範囲を一括で設定するための設定画面の一例を示す図。 各駆動部の仮想可動範囲を個別に設定するための設定画面の一例を示す図。 各駆動部の特異点警告範囲を一括で設定するための設定画面の一例を示す図。 各駆動部の特異点警告範囲を個別に設定するための設定画面の一例を示す図。
 以下、実施形態に係るプログラミングシステムについて図面を用いて説明する。なお、以下の実施形態の説明に用いる各図面は、各部の縮尺を適宜変更している場合がある。また、以下の実施形態の説明に用いる各図面は、説明のため、構成を省略して示している場合がある。また、各図面及び本明細書中において、同一の符号は同様の要素を示す。
 図1は、実施形態に係るプログラミングシステム1及びプログラミングシステム1に含まれる構成要素の要部構成の一例を示すブロック図である。プログラミングシステム1は、ロボット300を動作させるためのロボットプログラムをオフラインプログラミングによって作成することができるシステムである。プログラミングシステム1は、一例として、プログラミング装置100、ロボット制御装置200及びロボット300を含む。
 プログラミング装置100は、ロボットプログラムのオフラインプログラミングを行うことができる装置である。また、プログラミング装置100は、仮想空間上でロボット300をシミュレート又はエミュレートすることができる。プログラミング装置100は、例えば、PC、サーバー、ワークステーション又はタブレット端末などである。プログラミング装置100は、一例として、プロセッサー101、ROM(read-only memory)102、RAM(random-access memory)103、補助記憶装置104、入力デバイス105、表示デバイス106及びデータ出力部107を含む。そして、バス108などが、これら各部を接続する。
 プロセッサー101は、プログラミング装置100の動作に必要な演算及び制御などの処理を行うコンピューターの中枢部分であり、各種演算及び処理などを行う。プロセッサー101は、例えば、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)又はFPGA(field-programmable gate array)などである。あるいは、プロセッサー101は、これらのうちの複数を組み合わせたものである。また、プロセッサー101は、これらにハードウェアアクセラレーターなどを組み合わせたものあってもよい。プロセッサー101は、ROM102又は補助記憶装置104などに記憶されたファームウェア、システムソフトウェア及びアプリケーションソフトウェアなどのプログラムに基づいて、プログラミング装置100の各種の機能を実現するべく各部を制御する。また、プロセッサー101は、当該プログラムに基づいて後述する処理を実行する。なお、当該プログラムの一部又は全部は、プロセッサー101の回路内に組み込まれていてもよい。プロセッサー101は、処理部の一例である。
 ROM102及びRAM103は、プロセッサー101を中枢としたコンピューターの主記憶装置である。
 ROM102は、専らデータの読み出しに用いられる不揮発性メモリである。ROM102は、上記のプログラムのうち、例えばファームウェアなどを記憶する。また、ROM102は、プロセッサー101が各種の処理を行う上で使用するデータなども記憶する。
 RAM103は、データの読み書きに用いられるメモリである。RAM103は、プロセッサー101が各種の処理を行う上で一時的に使用するデータを記憶するワークエリアなどとして利用される。RAM103は、典型的には揮発性メモリである。
 補助記憶装置104は、プロセッサー101を中枢としたコンピューターの補助記憶装置である。補助記憶装置104は、例えばEEPROM(electric erasable programmable read-only memory)、HDD(hard disk drive)又はフラッシュメモリなどである。補助記憶装置104は、上記のプログラムのうち、例えば、システムソフトウェア及びアプリケーションソフトウェアなどを記憶する。補助記憶装置104は、プロセッサー101が各種の処理を行う上で使用するデータ、プロセッサー101での処理によって生成されたロボットプログラムなどのデータ及び各種の設定値などを記憶する。
 また、補助記憶装置104は、ロボット300の機種ごとの情報(以下「機種情報」という。)を記憶する。機種情報は、例えば、機種ごとの寸法及び形状並びに各部の可動範囲及び特異点範囲などの各種情報を含む。また、機種情報は、設定情報を含む。設定情報は、各機種に関する各種の設定値などを含む。設定情報は、例えば、後述する仮想可動範囲及び特異点警告範囲についての設定などを含む。
 入力デバイス105は、プログラミング装置100の操作者による操作を受け付ける。入力デバイス105は、例えば、キーボード、キーパッド、タッチパッド、マウス又はコントローラーなどである。また、入力デバイス105は、音声入力用のデバイスであってもよい。
 表示デバイス106は、プログラミング装置100の操作者に各種情報を通知するための画面を表示する。表示デバイス106は、例えば、液晶ディスプレイ又は有機EL(electro-luminescence)ディスプレイなどのディスプレイである。また、入力デバイス105及び表示デバイス106としては、タッチパネルを用いることもできる。すなわち、タッチパネルが備える表示パネルを表示デバイス106として、タッチパネルが備えるタッチパッドを入力デバイス105として用いることができる。なお、表示デバイス106は、報知部の一例である。
 データ出力部107は、プログラミング装置100内のデータを出力する。データ出力部107は、例えば、半導体メディア、光学メディア又は磁気メディアなどのリムーバブルな記憶媒体にデータを書き込むデバイスである。あるいは、データ出力部107は、USB(universal serial bus)ケーブル又はイーサネット(登録商標)ケーブルなどの通信用ケーブルを用いて他の装置と接続して有線通信するためのインターフェースである。あるいは、データ出力部107は、他の装置と無線通信するためのインターフェースである。
 バス108は、コントロールバス、アドレスバス及びデータバスなどを含み、プログラミング装置100の各部で授受される信号を伝送する。
 ロボット制御装置200は、ロボットプログラムなどのプログラムに基づきロボット300を制御する装置である。ロボット制御装置200は、一例として、プロセッサー201、ROM202、RAM203、補助記憶装置204、データ入力部205及び制御インターフェース206を含む。そして、バス207などが、これら各部を接続する。
 プロセッサー201は、ロボット制御装置200の動作に必要な演算及び制御などの処理を行うコンピューターの中枢部分であり、各種演算及び処理などを行う。プロセッサー201は、例えば、CPU、MPU、SoC、DSP、GPU、ASIC、PLD又はFPGAなどである。あるいは、プロセッサー201は、これらのうちの複数を組み合わせたものである。また、プロセッサー201は、これらにハードウェアアクセラレーターなどを組み合わせたものあってもよい。プロセッサー201は、ROM202又は補助記憶装置204などに記憶されたファームウェア、システムソフトウェア、アプリケーションソフトウェア及びロボットプログラムなどのプログラムに基づいて、ロボット制御装置200の各種の機能を実現するべく各部を制御する。また、プロセッサー201は、当該プログラムに基づいて後述する処理を実行する。なお、当該プログラムの一部又は全部は、プロセッサー201の回路内に組み込まれていてもよい。
 ROM202及びRAM203は、プロセッサー201を中枢としたコンピューターの主記憶装置である。
 ROM202は、専らデータの読み出しに用いられる不揮発性メモリである。ROM202は、上記のプログラムのうち、例えばファームウェアなどを記憶する。また、ROM202は、プロセッサー201が各種の処理を行う上で使用するデータなども記憶する。
 RAM203は、データの読み書きに用いられるメモリである。RAM203は、プロセッサー201が各種の処理を行う上で一時的に使用するデータを記憶するワークエリアなどとして利用される。RAM203は、典型的には揮発性メモリである。
 補助記憶装置204は、プロセッサー201を中枢としたコンピューターの補助記憶装置である。補助記憶装置204は、例えばEEPROM、HDD又はフラッシュメモリなどである。補助記憶装置204は、上記のプログラムのうち、例えば、システムソフトウェア、アプリケーションソフトウェア及びロボットプログラムなどを記憶する。また、補助記憶装置204は、プロセッサー201が各種の処理を行う上で使用するデータ、プロセッサー201での処理によって生成されたデータ及び各種の設定値などを記憶する。
 データ入力部205は、プログラミング装置100のデータ出力部107によって出力されたデータなどの入力を受ける。データ入力部205は、例えば、リムーバルな記憶媒体に記憶されたデータを読み取るデバイスである。あるいは、データ入力部205は、データ出力部107などと有線通信又は無線通信するためのインターフェースである。
 制御インターフェース206は、ロボット制御装置200がロボット300と通信するためのインターフェースである。ロボット制御装置200は、制御インターフェース206を介してロボット300を制御する。
 バス207は、コントロールバス、アドレスバス及びデータバスなどを含み、ロボット制御装置200の各部で授受される信号を伝送する。
 ロボット300は、例えば、マニピュレーター若しくはロボットアーム、又はこれらを備えるロボットなどである。ロボット300は、例えば多関節ロボットである。ロボット300は、一例として、1又は複数の駆動部310を含む。なお、仮想空間上に配置されるロボット300は、仮想ロボットの一例である。仮想ロボットの駆動部310を特に駆動部310bというものとする。駆動部310bは、仮想駆動部の一例である。
 駆動部310は、サーボモーターなどのモーターなどによって駆動する部分である。駆動部310は、例えば、駆動軸を中心に回転駆動する。
 図2は、駆動部310及び駆動部310bについて説明するための図である。駆動部310は、駆動軸311、根本側アーム312及び先側アーム313を含む。駆動部310bも同様に、駆動軸311、根本側アーム312及び先側アーム313を含む。また、図2には、可動範囲R1、仮想可動範囲R2、特異点範囲R3及び特異点警告範囲R4を示している。なお、可動範囲R1は、第1の可動範囲の一例である。仮想可動範囲R2は、第2の可動範囲の一例である。特異点範囲R3は、第1の特異点範囲の一例である。特異点警告範囲R4は、第2の特異点範囲の一例である。
 根本側アーム312及び先側アーム313は、駆動軸311によって接続している2つのアームである。先側アーム313は、根本側アーム312よりロボットアーム300の先端側に近く、根本側アーム312の次にロボットアーム300の根元側に近いアームである。なお、先側アーム313は、他の駆動部310の根本側アーム312でもある場合がある。
 先側アーム313は、根本側アーム312に対して駆動軸311を中心に、可動範囲R1内で自由に回転可能である。可動範囲R1は、一例として、基準角度D0を0[°(度)]として角度D11[°]以上角度D12[°]以下の範囲である。なお、角度D11及び角度D12は、D11<0<D12である。角度D11及び角度D12は、例えば、D11=-D12である。
 プログラミング装置100は、各駆動部310bについて、仮想可動範囲R2を設定している。仮想可動範囲R2は、可動範囲R1より狭い範囲である。可動範囲R1は、仮想可動範囲R2を包含する。仮想可動範囲R2は、一例として、基準角度D0を0[°]として角度D21[°]以上角度D22[°]以下の範囲である。なお、角度D21及び角度D22は、D21<0<D22である。角度D21及び角度D22は、例えば、D21=-D22である。角度D11と角度D21との差は、例えば、0°~10°である。角度D12と角度D22との差は、例えば、0°~10°である。
 特異点範囲R3は、先側アーム313が特異点となる範囲である。また、プログラミング装置100は、各駆動部310bについて、特異点警告範囲R4を設定している。特異点警告範囲R4は、特異点範囲R3を包含し、特異点範囲R3よりも広い範囲である。特異点範囲R3は、一例として、基準角度D0を0[°]として角度D31[°]以上角度D32[°]以下の範囲である。なお、角度D31及び角度D32は、D31<0<D32である。角度D31及び角度D32は、例えば、D31=-D32である。特異点警告範囲R4は、一例として、基準角度D0を0[°]として角度D41[°]以上角度D42[°]以下の範囲である。なお、角度D41及び角度D42は、D41<0<D42である。角度D41及び角度D42は、例えば、D41=-D42である。角度D41と角度D31との差は、例えば、0°~6°である。角度D42と角度D32との差は、例えば、0°~6°である。
 また、図2には、角度D5を示している。角度D5は、基準角度D0を0[°]とした場合の、根本側アーム312に対する先側アーム313の回転位置を示す角度である。図2に示すD5は、D22<D5<D12であるが、この限りではない。
 以下、実施形態に係るプログラミングシステム1の動作を図3及び図4などに基づいて説明する。なお、以下の動作説明における処理の内容は一例であって、同様な結果を得ることが可能な様々な処理を適宜に利用できる。図3及び図4は、プログラミング装置100のプロセッサー101による処理の一例を示すフローチャートである。プロセッサー101は、例えば、ROM102又は補助記憶装置104などに記憶されたプログラムに基づいて図3及び図4の処理を実行する。
 プログラミング装置100のプロセッサー101は、例えば、オフラインプログラミング用のアプリケーションソフトウェアの起動にともない図3に示す処理を開始する。
 図3のステップST11においてプロセッサー101は、ロボットプログラムを作成する対象のロボット300の機種などについての設定を決定する。プロセッサー101は、このために、例えば、当該ロボット300の機種についての機種情報を補助記憶装置104などから取得する。プロセッサー101は、どの機種の機種情報を取得するかは、例えば、プログラミング装置100の操作者による入力デバイス105を用いた操作入力の内容に基づく。あるいは、プロセッサー101は、予め定められた機種の機種情報を取得してもよい。
 ステップST12においてプロセッサー101は、ロボット300、ワーク、障害物及びその他の必要な物体の仮想空間上の配置の設定を決定する。プロセッサー101は、当該配置の設定を、例えば、プログラミング装置100の操作者による入力デバイス105を用いた操作入力の内容に基づき決定する。また、プロセッサー101は、当該配置の設定を、例えば、補助記憶装置104又は他の装置などから取得した情報に基づき決定してもよい。
 ステップST13においてプロセッサー101は、ロボット300の移動先を示す教示点が指定されたか否かを判定する。例えば、教示点は、プログラミング装置100の操作者による操作入力に基づき指定される。あるいは、教示点は、他の装置からのコマンドなどの情報の入力に基づき指定される。あるいは、プロセッサー101が自動で教示点を指定してもよい。また、教示点はその他の方法により指定されてもよい。なお、ここで指定される教示点を、仮教示点というものとする。プロセッサー101は、仮教示点が指定されないならば、ステップST13においてNoと判定して、処理をステップST14へと進める。
 ステップST14においてプロセッサー101は、警告範囲の設定を開始するか否かを判定する。プロセッサー101は、例えば、プログラミング装置100の操作者によって、警告範囲の設定を開始する操作が行われたならば、警告範囲の設定を開始すると判定する。プロセッサー101は、警告範囲の設定を開始しないならば、ステップST14においてNoと判定して、処理をステップST13へと戻す。かくして、プロセッサー101は、仮教示点が指定されるか、警告範囲の設定を開始すると判定するまでステップST13及びステップST14を繰り返す待受状態となる。
 プロセッサー101は、ステップST13及びステップST14の待受状態にあるときにロボット300の移動先を示す教示点が指定されたならば、ステップST13においてYesと判定して、処理をステップST15へと進める。
 ステップST15においてプロセッサー101は、作成中のロボットプログラムの最新の教示点から仮教示点までのロボット300の仮想空間上における移動経路のシミュレーションを所定量だけ進める。最新の教示点は、当該ロボットプログラミングの最後に追加された教示点である。プロセッサー101は、前回のステップST15の実行において当該シミュレーションを途中まで進めている場合には、当該シミュレーションを当該途中から所定量進める。また、プロセッサー101は、当該シミュレーションをまだ開始していない場合には、当該シミュレーションを開始して所定量だけ進める。ただし、プロセッサー101は、シミュレーションの完了までの残りが当該所定量より少ない場合にはシミュレーションの完了までシミュレーションを進める。プロセッサー101は、当該シミュレーションにおいて、全ての駆動部310bが仮想可動範囲R2外及び特異点警告範囲R4に入らないようにシミュレートする。ただし、プロセッサー101は、少なくともいずれかの駆動部310bが仮想可動範囲R2外又は特異点警告範囲R4に入らなければロボット300が仮教示点まで移動できないならば、いずれかの駆動部310bが仮想可動範囲R2外又は特異点警告範囲R4に入るような移動経路をシミュレートしてもよい。また、プロセッサー101は、少なくともいずれかの駆動部310bが仮想可動範囲R2外又は特異点警告範囲R4に入る場合でも、全ての駆動部310bが可動範囲R1外及び特異点範囲R3に入らないようにシミュレートする。ただし、プロセッサー101は、少なくともいずれかの駆動部310bが可動範囲R1外又は特異点範囲R3に入らなければロボット300が仮教示点まで移動できないならば、いずれかの駆動部310bが可動範囲R1外又は特異点範囲R3に入るような移動経路をシミュレートしてもよい。
 ステップST16においてプロセッサー101は、図4に示す停止処理を実行する。なお、プロセッサー101は、実行中のシミュレーションにおける直近のステップST15の処理について停止処理を行う。停止処理は、当該ステップST15の処理結果に基づき、シミュレーションを停止するか否かを決定し、停止すると決定した場合にはシミュレーションを停止することなどを行う処理である。プロセサー101は、停止処理の実行開始にともない、処理を図4のステップST31へ進める。
 ステップST31においてプロセッサー101は、実行中のシミュレーションにおいてロボット300の先側アーム313の少なくともいずれかが、直近のステップST15の処理によって新たに仮想可動範囲R2の外に出たか否かを判定する。先側アーム313が仮想可動範囲R2の外に出ているとは、当該先側アーム313の角度D5が角度D21未満又は角度D22超であることを示す。なお、プロセッサー101は、仮想可動範囲R2が設定で無効となっている駆動部310bについては、角度D5に拘らず先側アーム313は仮想可動範囲R2の外に出ていないものとみなす。プロセッサー101は、先側アーム313の少なくともいずれかが新たに仮想可動範囲R2の外に出たならば、ステップST31においてYesと判定して、処理をステップST32へと進める。
 ステップST32においてプロセッサー101は、第1の警告画面に対応した画像を生成する。そして、プロセッサー101は、生成したこの画像を表示するように表示デバイス106に対して指示する。表示の指示を受けて表示デバイス106は、第1の警告画面を表示する。
 第1の警告画面は、先側アーム313が仮想可動範囲R2の外に出ることを示す画像を含む。また、第1の警告画面は、どの先側アーム313が仮想可動範囲R2の外に出るかを示す画像を含む。なお、文字は、画像の一種である。
 ステップST33においてプロセッサー101は、シミュレーションを停止するか否かを判定する。プロセッサー101は、例えば、設定情報を参照して、先側アーム313が仮想可動範囲R2の外に出た場合にシミュレーションを停止する設定になっている場合に、シミュレーションを停止すると判定する。
 プロセッサー101は、シミュレーションを停止しないならば、ステップST33においてNoと判定して、処理をステップST34へと進める。また、プロセッサー101は、いずれの駆動部310bも新たに仮想可動範囲R2の外に出ていないならば、ステップST31においてNoと判定して、処理をステップST34へと進める。
 ステップST34においてプロセッサー101は、実行中のシミュレーションにおいて先側アーム313の少なくともいずれかが、直近のステップST15の処理によって新たに特異点警告範囲R4に入ったか否かを判定する。先側アーム313が特異点警告範囲R4に入っているとは、当該先側アーム313の角度D5が角度D41以上角度D42未満であることを示す。なお、プロセッサー101は、特異点警告範囲R4が設定で無効となっている駆動部310bについては、角度D5に拘らず先側アーム313は特異点警告範囲R4に入っていないものとみなす。プロセッサー101は、先側アーム313の少なくともいずれかが新たに特異点警告範囲R4内に入ったならば、ステップST34においてYesと判定して、処理をステップST35へと進める。
 ステップST35においてプロセッサー101は、第2の警告画面に対応した画像を生成する。そして、プロセッサー101は、生成したこの画像を表示するように表示デバイス106に対して指示する。表示の指示を受けて表示デバイス106は、第2の警告画面を表示する。
 第2の警告画面は、先側アーム313が特異点警告範囲R4に入ることを示す画像を含む。また、第2の警告画面は、どの先側アーム313が特異点警告範囲R4に入るかを示す画像を含む。
 ステップST36においてプロセッサー101は、シミュレーションを停止するか否かを判定する。プロセッサー101は、例えば、設定情報を参照して、先側アーム313が特異点警告範囲R4に入った場合にシミュレーションを停止する設定になっている場合に、シミュレーションを停止すると判定する。
 プロセッサー101は、シミュレーションを停止しないならば、ステップST36においてNoと判定して、処理をステップST37へと進める。また、プロセッサー101は、いずれの先側アーム313も新たに特異点警告範囲R4内に入っていないならば、ステップST34においてNoと判定して、処理をステップST37へと進める。
 ステップST37においてプロセッサー101は、実行中のシミュレーションにおいて先側アーム313の少なくともいずれかが、直近のステップST15の処理によって新たに可動範囲R1の外に出たか否かを判定する。プロセッサー101は、先側アーム313の少なくともいずれかが新たに可動範囲R1の外に出たならば、ステップST37においてYesと判定して、処理をステップST38へと進める。
 ステップST38においてプロセッサー101は、第3の警告画面に対応した画像を生成する。そして、プロセッサー101は、生成したこの画像を表示するように表示デバイス106に対して指示する。表示の指示を受けて表示デバイス106は、第3の警告画面を表示する。
 第3の警告画面は、先側アーム313が可動範囲R1の外に出ることを示す画像を含む。また、第3の警告画面は、どの先側アーム313が可動範囲R1の外に出るかを示す画像を含む。
 プロセッサー101は、いずれの先側アーム313も新たに可動範囲R1の外に出ていないならば、ステップST37においてNoと判定して、処理をステップST39へと進める。
 ステップST39においてプロセッサー101は、実行中のシミュレーションにおいて先側アーム313の少なくともいずれかが、直近のステップST15の処理によって新たに特異点範囲R3に入ったか否かを判定する。プロセッサー101は、いずれの先側アーム313も新たに特異点範囲R3に入っていないならば、ステップST39においてNoと判定して、図4に示す停止処理を終了する。対して、プロセッサー101は、先側アーム313の少なくともいずれかが新たに特異点警告範囲R4に入ったならば、ステップST39においてYesと判定して、処理をステップST40へと進める。
 ステップST40においてプロセッサー101は、第4の警告画面に対応した画像を生成する。そして、プロセッサー101は、生成したこの画像を表示するように表示デバイス106に対して指示する。表示の指示を受けて表示デバイス106は、第4の警告画面を表示する。
 第4の警告画面は、先側アーム313が特異点警告に入ることを示す画像を含む。また、第4の警告画面は、どの先側アーム313が特異点範囲R3に入るかを示す画像を含む。
 プロセッサー101は、ステップST36においてシミュレーションを停止すると判定するならば、Yesと判定して処理をステップST41へと進める。また、プロセッサー101は、ステップST33においてシミュレーションを停止すると判定するならば、Yesと判定して処理をステップST41へと進める。また、プロセッサー101は、ステップST38又はステップST41の処理の後、処理をステップST41へと進める。
 ステップST41においてプロセッサー101は、実行中のシミュレーションを停止する。すなわち、プロセッサー101は、仮想ロボットの動作を停止する。プロセッサー101は、シミュレーションを停止したことを示すアラームなどの音声をスピーカーなどから出力する。また、プロセッサー101は、シミュレーションを停止したことを示す画像を表示デバイス106に表示させてもよい。プロセッサー101は、ステップST41の処理の後、図4に示す停止処理を終了する。
 プロセッサー101は、停止処理を終了したならば、図3のステップST16の処理を終了して、処理をステップST17へと進める。
 ステップST17においてプロセッサー101は、直近のステップST16の処理においてシミュレーションを停止したか否かを判定する。プロセッサー101は、シミュレーションをしたならば、ステップST17においてYesと判定して、処理をステップST13へと戻す。対して、プロセッサー101は、シミュレーションを停止していないならば、ステップST17においてNoと判定して、処理をステップST18へと進める。
 ステップST18においてプロセッサー101は、最新の教示点から仮教示点までの移動経路のシミュレーションを完了したか否かを判定する。プロセッサー101は、当該シミュレーションを完了していないならば、ステップST18においてNoと判定して、処理をステップST15へと戻す。そして、プロセッサー101は、当該ステップST15において当該シミュレーションの続きを実行することとなる。対して、プロセッサー101は、当該シミュレーションを完了したならば、ステップST18においてYesと判定して、処理をステップST20へと進める。
 ステップST19においてプロセッサー101は、教示点加画面に対応した画像を生成する。そして、プロセッサー101は、生成したこの画像を表示するように表示デバイス106に対して指示する。表示の指示を受けて表示デバイス106は、教示点画面を表示する。
 教示点画面は、最新の教示点から仮教示点までの移動経路のシミュレーションが完了したこと及び当該シミュレーションの結果を示す画面である。教示点画面は、仮教示点を教示点としてロボットプログラムに追加することが可能であることを示す画像を含む。教示点画面は、最新の教示点から仮教示点までの移動経路を示す画像を含む。また、教示点画面は、最新の教示点から仮教示点までの移動経路のシミュレーションにおいて、いずれかの先側アーム313が仮想可動範囲R2の外に出ている場合には、先側アーム313が仮想可動範囲R2の外に出ることを示す画像を含む。また、教示点画面は、最新の教示点から仮教示点までの移動経路のシミュレーションにおいて、いずれかの先側アーム313が特異点警告範囲R4に入っている場合には、先側アーム313が特異点警告範囲R4に入ることを示す画像を含む。
 ステップST20においてプロセッサー101は、ロボット300の移動先を示す仮教示点が指定されたか否かを判定する。すなわち、プロセッサー101は、ステップST13と同様の処理を行う。プロセッサー101は、仮教示点が指定されていないならば、ステップST20においてNoと判定して、処理をステップST21へと進める。
 ステップST21においてプロセッサー101は、警告範囲の設定を開始するか否かを判定する。すなわち、プロセッサー101は、ステップST14と同様の処理を行う。プロセッサー101は、警告範囲の設定を開始しないならば、ステップST21においてNoと判定して、処理をステップST22へと進める。
 ステップST22においてプロセッサー101は、仮教示点を教示点として、作成中のロボットプログラムに追加するか否かを判定する。プログラミング装置100の操作者は、例えば、教示点画面に表示された内容など見て、教示点を追加するか決める。そして、当該操作者は、教示点を追加するならば、教示点を追加するように指示する操作を、入力デバイス105を用いて行う。プロセッサー101は、例えば、当該操作が行われたことに応じて教示点を追加すると判定する。また、プロセッサー101は、最新の教示点から仮教示点までの移動経路のシミュレーション結果に基づき教示点を追加するか否かを自動で判定してもよい。例えば、プロセッサー101は、当該シミュレーションにおいていずれの先側アーム313も仮想可動範囲R2の外に出ず、特異点警告範囲R4に入っていないならば、教示点を追加すると判定してもよい。プロセッサー101は、教示点を追加しないならば、ステップST22においてNoと判定して、処理をステップST20へと戻す。かくして、プロセッサー101は、ロボット300の移動先を示す教示点が指定されるか、警告範囲の設定を開始すると判定するか、教示点を追加すると判定するまでステップST20~ステップST22を繰り返す待受状態となる。
 プロセッサー101は、ステップST20~ステップST22の待受状態にあるときに仮教示点が指定されたならば、ステップST20においてYesと判定して、処理をステップST15へと戻す。
 プロセッサー101は、ステップST20~ステップST22の待受状態にあるときに教示点を追加するならば、ステップST22においてYesと判定して、処理をステップST23へと進める。
 ステップST23においてプロセッサー101は、仮教示点を、作成中のロボットプログラムに教示点として追加する。すなわち、プロセッサー101は、最新の教示点から仮教示点までのロボット300の移動経路のシミュレーションの結果に基づき、最新の教示点から仮教示点までのロボット300が当該移動経路で移動するためのロボット300の動作を示すプログラムを、作成中のロボットプログラムに追加する。なお、ステップST23の処理によって、仮教示点が最新の教示点となる。プロセッサー101は、ステップST23の処理の後、処理をステップST13へと戻す。
 プロセッサー101は、ステップST13及びステップST14の待受状態にあるときに警告範囲の設定を開始すると判定するならば、ステップST14においてYesと判定して、処理をステップST24へと進める。また、プロセッサー101は、ステップST20~ステップST22の待受状態にあるときに警告範囲の設定を開始すると判定するならば、ステップST21においてYesと判定して、処理をステップST24へと進める。
 ステップST24においてプロセッサー101は、図5~図8に示すような設定画面に対応した画像を生成する。そして、プロセッサー101は、生成したこの画像を表示するように表示デバイス106に対して指示する。表示の指示を受けて表示デバイス106は、設定画面を表示する。
 図5~図8は、それぞれ設定画面の一例を示す図である。プロセッサー101は、例えば、どのような設定を行うかによって異なる設定画面を表示させる。どのような設定を行うかは、例えば、プログラミング装置100の操作者による操作内容などに基づく。
 図5は、各駆動部310bの仮想可動範囲R2を一括で設定するための設定画面SC1の一例を示す図である。設定画面SC1は、領域AR11及び領域AR12並びに規定値ボタンB11、戻るボタンB12及び決定ボタンB13を含む。領域AR11は、仮想可動範囲R2を可動範囲R1と比べてどれぐらい小さい範囲にするかの設定値を入力するための入力欄である。図5の領域AR11には、一例として10[%]と入力されている。この場合、可動範囲R1が-140°~140°であれば、仮想可動範囲R2は、-126°~126°である。すなわち、領域AR12に入力された数をC1と置くと、
 D21=D11×(100-C1)×0.01  (1)
 D22=D12×(100-C1)×0.01  (2)
である。あるいは、
 D21=D11-(D12-D11)×C1×0.01÷2  (3)
 D22=D12+(D12-D11)×C1×0.01÷2  (4)
であってもよい。
 領域AR11は、割合に代えて角度を入力するための入力欄であってもよい。一例として、領域AR11に10[°]と入力されている場合、可動範囲R1が-140°~140°であれば、仮想可動範囲R2は、-130°~130°である。領域AR11に入力された角度をC2と置くと、
 D21=D11-C2  (5)
 D22=D12-C2  (6)
である。なお、C2は、0超100未満の数である。
 領域AR12は、いずれかの先側アーム313が仮想可動範囲R2の外に出た場合にシミュレーションを停止するか否かの設定を入力するための領域である。一例として、領域AR12は、チェックボックスがオンの状態、すなわち領域AR12の値がTrueなどであれば、シミュレーションを停止する設定であることを示す。そして、領域AR12は、チェックボックスがオフの状態、すなわち領域AR12の値がFalseなどであれば、シミュレーションを停止しない設定であることを示す。
 規定値ボタンB11は、領域AR11及び領域AR12にデフォルトの値を入力するためのボタンである。プロセッサー101は、規定値ボタンB11が操作された場合、領域AR11及び領域AR12に予め定められたデフォルトの値を入力する。
 戻るボタンB12は、設定を変更せずに設定画面の表示を終了する場合に操作者が操作するためのボタンである。
 決定ボタンB13は、設定画面に入力した内容を保存して設定を変更する場合に操作者が操作するためのボタンである。
 図6は、各駆動部310bの仮想可動範囲R2を個別に設定するための設定画面SC2の一例を示す図である。設定画面SC2は、領域AR21及び複数の領域AR22並びに規定値ボタンB21、戻るボタンB12及び決定ボタンB13を含む。各領域AR22は、領域AR221~領域AR225を含む。
 領域AR21は、いずれかの先側アーム313が仮想可動範囲R2の外に出た場合にシミュレーションを停止するか否かの設定を入力するための領域である。一例として、領域AR21は、チェックボックスがオンの状態、すなわち領域AR21の値がTrueなどであれば、シミュレーションを停止する設定であることを示す。そして、領域AR21は、チェックボックスがオフの状態、すなわち領域AR21の値がFalseなどであれば、シミュレーションを停止しない設定であることを示す。
 各領域AR22は、例えば、駆動部310bの数と同じ数存在する。そして、それぞれの領域AR22が、それぞれ異なる駆動部310bに1対1で対応する。各領域AR22に示すJ1~J3は、どの駆動部310bに対応するかを識別するための番号の例である。領域AR221は、対応する駆動部310bについての角度D11を表示する。領域AR222は、対応する駆動部310bについての角度D21を入力するための入力欄である。領域AR223は、対応する駆動部310bについての角度D22を入力するための入力欄である。領域AR224は、対応する駆動部310bについての角度D12を表示する。領域AR225は、対応する駆動部310bの仮想可動範囲R2を有効にするか否かの設定を入力するための領域である。一例として、領域AR225は、チェックボックスがオンの状態であれば、すなわち領域AR225の値がTrueなどであれば、仮想可動範囲R2を有効にすることを示す。そして、領域AR225は、チェックボックスがオフの状態であれば、すなわち領域AR225の値がFalseなどであれば、仮想可動範囲R2を無効にすることを示す。
 なお、設定画面SC2は、設定画面SC1と同様に割合を入力して仮想可動範囲R2を設定することができてもよい。
 規定値ボタンB21は、領域AR21、領域AR222、領域AR223及び領域AR225にデフォルトの値を入力するためのボタンである。プロセッサー101は、ボタンB21が操作された場合、領域AR21、領域AR222、領域AR223及び領域AR225に予め定められたデフォルトの値を入力する。デフォルトの値は、例えば機種情報に含まれる。
 図7は、各駆動部310bの特異点警告範囲R4を一括で設定するための設定画面SC3の一例を示す図である。設定画面SC3は、領域AR31及び領域AR32並びに規定値ボタンB31、戻るボタンB12及び決定ボタンB13を含む。領域AR31は、特異点警告範囲R4を特異点範囲R3と比べてどれぐらい大きい範囲にするかの設定値を入力するための入力欄である。図7の領域AR31には、一例として2[倍]と入力されている。この場合、特異点範囲R3が-5°~5°であれば、仮想可動範囲R2は、-10°~10°である。すなわち、領域AR32に入力された数をC3と置くと、
 D41=D31×C3  (7)
 D42=D32×C3  (8)
である。あるいは、
 D41=D31-(D32-D31)×(C3-1)  (9)
 D42=D32+(D32-D31)×(C3-1)  (10)
であってもよい。なお、C3は、0以上の数である。なお、領域AR31は、角度を入力することができてもよい。当該角度は、例えば、角度D41と角度D31の差、及び角度D42と角度D32の差を示す。
 領域AR32は、いずれかの先側アーム313が特異点範囲R3に入った場合にシミュレーションを停止するか否かの設定を入力するための領域である。一例として、領域AR32は、チェックボックスがオンの状態、すなわち領域AR32の値がTrueなどであれば、シミュレーションを停止する設定であることを示す。そして、領域AR32は、チェックボックスがオフの状態、すなわち領域AR32の値がFalseなどであれば、シミュレーションを停止しない設定であることを示す。
 規定値ボタンB31は、領域AR31及び領域AR32にデフォルトの値を入力するためのボタンである。プロセッサー101は、規定値ボタンB31が操作された場合、領域AR31及び領域AR32に予め定められたデフォルトの値を入力する。デフォルトの値は、例えば機種情報に含まれる。
 図8は、各駆動部310bの特異点警告範囲R4を個別に設定するための設定画面SC4の一例を示す図である。設定画面SC4は、領域AR41及び複数の領域AR42並びに規定値ボタンB41、戻るボタンB12及び決定ボタンB13を含む。各領域AR42は、領域AR421及び領域AR422を含む。
 領域AR41は、いずれかの先側アーム313が特異点警告範囲R4内に入った場合にシミュレーションを停止するか否かの設定を入力するための領域である。一例として、領域AR41は、チェックボックスがオンの状態、すなわち領域AR41の値がTrueなどであれば、シミュレーションを停止する設定であることを示す。そして、領域AR41は、チェックボックスがオフの状態、すなわち領域AR41の値がFalseなどであれば、シミュレーションを停止しない設定であることを示す。
 各領域AR42は、例えば、駆動部310bの数と同じ数存在する。そして、それぞれの領域AR42が、それぞれ異なる駆動部310bと1対1で対応する。領域AR421は、対応する駆動部310bについての特異点警告範囲R4を特異点範囲R3と比べてどれぐらい大きい範囲にするかの設定値を入力するための入力欄である。なお、領域AR421は、角度を入力することができてもよい。領域AR422は、対応する駆動部310bの特異点警告範囲R4を有効にするか否かの設定を入力するための領域である。一例として、領域AR422は、チェックボックスがオンの状態であれば、すなわち領域AR422の値がTrueなどであれば、特異点警告範囲R4を有効にすることを示す。そして、領域AR422は、チェックボックスがオフの状態であれば、すなわち領域AR422の値がFalseなどであれば、特異点警告範囲R4を無効にすることを示す。
 規定値ボタンB41は、領域AR41、領域AR421及び領域AR422にデフォルトの値を入力するためのボタンである。プロセッサー101は、規定値ボタンB31が操作された場合、領域AR41、領域AR421及び領域AR422に予め定められたデフォルトの値を入力する。デフォルトの値は、例えば機種情報に含まれる。
 プログラミング装置100の操作者は、以上に示すような設定画面を操作して所望の設定内容を入力する。
 ステップST25においてプロセッサー101は、設定を変更せずに元の画面に戻ることを指示する操作が行われたか否かを判定する。すなわちプロセッサー101は、戻るボタンB12を操作するなどの予め定められた操作が行われたか否かを判定する。プロセッサー101は、設定を変更せずに元の画面に戻ることを指示する操作が行われないならば、ステップST25においてNoと判定して、処理をステップST26へと進める。
 ステップST26においてプロセッサー101は、設定の変更を指示する操作が行われたか否かを判定する。すなわちプロセッサー101は、決定ボタンB13を操作するなどの予め定められた操作が行われたか否かを判定する。プロセッサー101は、設定の変更を指示する操作が行われないならば、ステップST26においてNoと判定して、処理をステップST25へと戻す。かくして、プロセッサー101は、設定を変更せずに元の画面に戻ることを指示する操作、又は設定の変更を指示する操作が行われるまでステップST25及びステップST26を繰り返す待受状態となる。
 プロセッサー101は、ステップST25及びステップST26の待受状態にあるときに、設定を変更せずに元の画面に戻ることを指示する操作が行われたならば、ステップST25においてYesと判定して、処理をステップST13へと戻す。また、この際、プロセッサー101は、表示デバイス106を制御して設定画面の表示を終了する。
 プロセッサー101は、ステップST25及びステップST26の待受状態にあるときに、設定の変更を指示する操作が行われたならば、ステップST26においてYesと判定して、処理をステップST27へと進める。
 ステップST27においてプロセッサー101は、設定画面に入力された内容に基づく設定内容を補助記憶装置104の設定情報などに保存する。プロセッサー101は、ステップST27の処理の後、処理をステップST25へと戻す。
 実施形態のプログラミング装置100は、ロボット300をシミュレート又はエミュレートした仮想ロボットの駆動部310bが実際の特異点範囲R3よりも広い特異点警告範囲R4に入ることを判定する。このように、実施形態のプログラミング装置100は、駆動部310bが特異点警告範囲R4に入ることを検知して、シミュレーションの停止及び警告を行うなどの様々な処理を行うことができる。これにより、実施形態のプログラミング装置100は、オフラインプログラミングで作成されたロボットプログラムで動作する実際のロボット300の駆動部310が特異点範囲R3に入ることを防ぐことができる。また、これにより、実施形態のプログラミング装置100は、オフラインプログラミングで作成されたロボットプログラムに必要な修正の量を減らすことができる。
 また、実施形態のプログラミング装置100は、仮想ロボットの駆動部310bが特異点警告範囲R4に入ることを報知する。これにより、実施形態のプログラミング装置100は、オフラインプログラミングで作成されたロボットプログラムで動作する実際のロボット300の駆動部310が特異点範囲R3に入ること防ぎ、当該ロボットプログラムに必要な修正の量を減らすことができる。
 また、実施形態のプログラミング装置100は、仮想ロボットの駆動部310bが特異点警告範囲R4に入る場合シミュレーションを停止する。すなわち、プログラミング装置100は、仮想ロボットの動作を停止する。これにより、プログラミング装置100は、ロボットプログラムに、駆動部310bが特異点警告範囲R4に入るような教示点を追加することを防ぐ。これにより、実施形態のプログラミング装置100は、オフラインプログラミングで作成されたロボットプログラムで動作する実際のロボット300の駆動部310が特異点範囲R3に入ること防ぎ、当該ロボットプログラムに必要な修正の量を減らすことができる。
 また、実施形態のプログラミング装置100は、特異点警告範囲R4の広さを設定可能である。これにより、ロボットプログラム作成者及びプログラミングシステム1の管理者などが設定を変更することで、オフラインプログラミングをしやすくしたり、オフラインプログラミングによって作成されるロボットプログラミングの品質のコントロールをしたりすることなどが可能となると考えられる。
 また、実施形態のプログラミング装置100は、仮想ロボットの駆動部310bが実際の可動範囲R1よりも狭い仮想可動範囲R2の外に出ることを判定する。このように、実施形態のプログラミング装置100は、駆動部310bが仮想可動範囲R2の外に出ることを検知して、シミュレーションの停止及び警告を行うなどの様々な処理を行うことができる。これにより、実施形態のプログラミング装置100は、オフラインプログラミングで作成されたロボットプログラムで動作する実際のロボット300の駆動部310が可動範囲R1に入ることを防ぐことができる。また、これにより、実施形態のプログラミング装置100は、オフラインプログラミングで作成されたロボットプログラムに必要な修正の量を減らすことができる。
 また、実施形態のプログラミング装置100は、仮想ロボットの駆動部310bが仮想可動範囲R2の外に出ることを報知する。これにより、実施形態のプログラミング装置100は、オフラインプログラミングで作成されたロボットプログラムで動作する実際のロボット300の駆動部310が可動範囲R1の外に出ること防ぎ、当該ロボットプログラムに必要な修正の量を減らすことができる。
 また、実施形態のプログラミング装置100は、仮想ロボットの駆動部310bが仮想可動範囲R2の外に出る場合シミュレーションを停止する。すなわち、プログラミング装置100は、仮想ロボットの動作を停止する。これにより、プログラミング装置100は、ロボットプログラムに、駆動部310bが仮想可動範囲R2の外に出るような教示点を追加することを防ぐ。これにより、実施形態のプログラミング装置100は、オフラインプログラミングで作成されたロボットプログラムで動作する実際のロボット300の駆動部310が可動範囲R1の外に出ること防ぎ、当該ロボットプログラムに必要な修正の量を減らすことができる。
 また、実施形態のプログラミング装置100は、仮想可動範囲R2の広さを設定可能である。これにより、ロボットプログラム作成者及びプログラミングシステム1の管理者などが設定を変更することで、オフラインプログラミングをしやすくしたり、オフラインプログラミングによって作成されるロボットプログラミングの品質のコントロールをしたりすることなどが可能となると考えられる。
 上記の実施形態は、以下のような変形も可能である。
 プログラミング装置100は、上記の実施形態で表示デバイス106に表示することで報知する内容を、スピーカーから音声で出力するなどの他の方法によって報知してもよい。当該スピーカーは、報知部の一例である。
 上記の実施形態でも用いている角度の単位は[°]である。しかしながら、実施形態で用いる角度の単位は、[rad]などのその他の単位であってもよい。また、実施形態で用いる角度の単位は限定しない。
 上記の実施形態で用いている割合の単位は[%]又は[倍]である。しかしながら、実施形態で用いる割合の単位は限定しない。
 プロセッサー101は、上記実施形態においてプログラムによって実現する処理の一部又は全部を、回路のハードウェア構成によって実現するものであってもよい。
 実施形態の処理を実現するプログラムは、例えば装置に記憶された状態で譲渡される。しかしながら、当該装置は、当該プログラムが記憶されない状態で譲渡されてもよい。そして、当該プログラムが別途に譲渡され、当該装置へと書き込まれてもよい。このときのプログラムの譲渡は、例えば、リムーバブルな記憶媒体に記録して、あるいはインターネット又はLAN(local area network)などのネットワークを介したダウンロードによって実現できる。
 以上、本開示の実施形態を説明したが、例として示したものであり、本開示の範囲を限定するものではない。本開示の実施形態は、本開示の要旨を逸脱しない範囲において種々の態様で実施可能である。
 1 プログラミングシステム
 100 プログラミング装置
 101,201 プロセッサー
 102,202 ROM
 103,203 RAM
 104,204 補助記憶装置
 105 入力デバイス
 106 表示デバイス(報知部)
 107 データ出力部
 108,207 バス
 200 ロボット制御装置
 205 データ入力部
 206 制御インターフェース
 300 ロボット
 310 駆動部
 310b 駆動部(仮想駆動部)
 311 駆動軸
 312 根本側アーム
 313 先側アーム R1 可動範囲(第1の可動範囲)
 R2 仮想可動範囲(第2の可動範囲)
 R3 特異点範囲(第1の特異点範囲)
 R4 特異点警告範囲(第2の特異点範囲)

Claims (9)

  1.  ロボットの駆動部をコンピューターでシミュレート又はエミュレートした仮想駆動部が前記駆動部の実際の特異点の範囲である第1の特異点範囲より広い第2の特異点範囲に入ることを判定する処理部を備えるプログラミング装置。
  2.  前記処理部は、前記仮想駆動部が前記第2の特異点範囲に入ると判定した場合、前記仮想駆動部が前記第2の特異点範囲に入ることを報知するよう報知部を制御する、請求項1に記載のプログラミング装置。
  3.  前記処理部は、前記仮想駆動部が前記第2の特異点範囲に入ると判定した場合、前記仮想駆動部の動作を停止する、請求項1又は請求項2に記載のプログラミング装置。
  4.  前記処理部は、前記第2の特異点範囲の設定変更を指示する入力に基づき前記第2の特異点範囲を設定する、請求項1乃至請求項3のいずれか1項に記載のプログラミング装置。
  5.  前記処理部は、前記仮想駆動部が前記駆動部の実際の可動範囲である第1の可動範囲より狭い第2の可動範囲の外に出ることを判定する、請求項1乃至請求項4のいずれか1項に記載のプログラミング装置。
  6.  前記処理部は、前記仮想駆動部が前記第2の可動範囲の外に出ると判定した場合、前記仮想駆動部が前記第2の可動範囲の外に出ることを報知するよう報知部を制御する、請求項5に記載のプログラミング装置。
  7.  前記処理部は、前記仮想駆動部が前記第2の可動範囲の外に出ると判定した場合、前記仮想駆動部の動作を停止する、請求項5又は請求項6に記載のプログラミング装置。
  8.  前記処理部は、前記第2の可動範囲の設定変更を指示する入力に基づき前記第2の可動範囲を設定する、請求項5乃至請求項7のいずれか1項に記載のプログラミング装置。
  9.  プログラミング装置のプロセッサーを、
     駆動部をコンピューターでシミュレート又はエミュレートした仮想駆動部が、前記駆動部の実際の特異点の範囲である第1の特異点範囲より広い第2の特異点範囲に入ることを判定する処理部として機能させるプログラム。
PCT/JP2021/020083 2021-05-26 2021-05-26 プログラミング装置及びプログラム WO2022249363A1 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
DE112021007218.8T DE112021007218T5 (de) 2021-05-26 2021-05-26 Programmiervorrichtung und Programm
CN202180097575.8A CN117222500A (zh) 2021-05-26 2021-05-26 编程装置及程序
US18/555,691 US20240198527A1 (en) 2021-05-26 2021-05-26 Programming device and program
JP2023523834A JPWO2022249363A1 (ja) 2021-05-26 2021-05-26
PCT/JP2021/020083 WO2022249363A1 (ja) 2021-05-26 2021-05-26 プログラミング装置及びプログラム
TW111116682A TW202313282A (zh) 2021-05-26 2022-05-03 程式編寫裝置及程式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2021/020083 WO2022249363A1 (ja) 2021-05-26 2021-05-26 プログラミング装置及びプログラム

Publications (1)

Publication Number Publication Date
WO2022249363A1 true WO2022249363A1 (ja) 2022-12-01

Family

ID=84228652

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/020083 WO2022249363A1 (ja) 2021-05-26 2021-05-26 プログラミング装置及びプログラム

Country Status (6)

Country Link
US (1) US20240198527A1 (ja)
JP (1) JPWO2022249363A1 (ja)
CN (1) CN117222500A (ja)
DE (1) DE112021007218T5 (ja)
TW (1) TW202313282A (ja)
WO (1) WO2022249363A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63260779A (ja) * 1987-04-20 1988-10-27 富士通株式会社 直接教示制御方式
JP2000015593A (ja) * 1998-06-30 2000-01-18 Toshiba Corp マニピュレータ軌道生成装置及びマニピュレータ軌道生成プログラムを記録した記録媒体
JP2009279700A (ja) * 2008-05-21 2009-12-03 Purex:Kk ワークの把持方法および装置
JP2015066668A (ja) * 2013-10-01 2015-04-13 キヤノン株式会社 ロボットの教示点調整方法、ロボットの設置位置算出方法、ロボットシステム、プログラム及び記録媒体

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63260779A (ja) * 1987-04-20 1988-10-27 富士通株式会社 直接教示制御方式
JP2000015593A (ja) * 1998-06-30 2000-01-18 Toshiba Corp マニピュレータ軌道生成装置及びマニピュレータ軌道生成プログラムを記録した記録媒体
JP2009279700A (ja) * 2008-05-21 2009-12-03 Purex:Kk ワークの把持方法および装置
JP2015066668A (ja) * 2013-10-01 2015-04-13 キヤノン株式会社 ロボットの教示点調整方法、ロボットの設置位置算出方法、ロボットシステム、プログラム及び記録媒体

Also Published As

Publication number Publication date
JPWO2022249363A1 (ja) 2022-12-01
US20240198527A1 (en) 2024-06-20
CN117222500A (zh) 2023-12-12
DE112021007218T5 (de) 2024-01-04
TW202313282A (zh) 2023-04-01

Similar Documents

Publication Publication Date Title
US11161247B2 (en) Robot trajectory generation method, robot trajectory generation apparatus, storage medium, and manufacturing method
US20140195054A1 (en) Robot system, robot control device and method for controlling robot
JP6915543B2 (ja) ロボット教示装置、コンピュータプログラム及びロボット教示方法
KR101607742B1 (ko) 티칭 시스템 및 티칭 방법
WO2004085120A1 (ja) ロボットシミュレーション装置、および、シミュレーションプログラム
JP2019018272A (ja) モーション生成方法、モーション生成装置、システム及びコンピュータプログラム
JP7052250B2 (ja) 情報処理装置、情報処理方法、および情報処理プログラム
JP2018020412A (ja) シミュレーション装置、ロボット制御装置およびロボット
US6327518B1 (en) Off-line teaching apparatus
JP2019193975A (ja) ロボット軌道生成方法、ロボット軌道生成装置、および製造方法
WO2022249363A1 (ja) プログラミング装置及びプログラム
JP2006281330A (ja) ロボットシミュレーション装置
CN100404211C (zh) 用于多关节型机器人的教导数据准备方法
KR101787865B1 (ko) 다관절 링크 기구의 역운동학 해법, 및 이 역운동학 해법을 이용한 교시 데이터 작성 장치
JP2019081204A (ja) ロボット制御方法、制御端末、およびロボットシステム
CN114999296B (zh) 力反馈设备、提供反馈力的方法及存储介质
JP2009166172A (ja) ロボットのシミュレーション方法及びロボットのシミュレーション装置
TW202239547A (zh) 機器人控制裝置、機器人控制系統及機器人控制方法
WO2024018516A1 (ja) シミュレーション装置及びプログラム
JP2021070096A (ja) 制御方法、制御装置、ロボット装置、物品の製造方法、動作プログラム作成方法、動作プログラム作成装置、表示装置、制御プログラムおよび記録媒体
JP4202276B2 (ja) 操作対象の動作指令装置、操作対象の動作指令用プログラム、およびそのプログラムを記録した記録媒体
JP7276359B2 (ja) 動作指令生成装置、機構制御システム、コンピュータプログラム、動作指令生成方法及び機構制御方法
JP2001042907A (ja) シーケンス制御装置
JP2003260680A (ja) 最適位置決定支援方法、最適位置決定支援装置及びロボットシステム
TW202415513A (zh) 顯示控制裝置及程式

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21943014

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2023523834

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 18555691

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 202180097575.8

Country of ref document: CN

WWE Wipo information: entry into national phase

Ref document number: 112021007218

Country of ref document: DE

122 Ep: pct application non-entry in european phase

Ref document number: 21943014

Country of ref document: EP

Kind code of ref document: A1