WO2023112772A1 - ロボットプログラミング支援装置、ロボットプログラミング支援プログラム、及び、ロボットプログラミング支援方法 - Google Patents

ロボットプログラミング支援装置、ロボットプログラミング支援プログラム、及び、ロボットプログラミング支援方法 Download PDF

Info

Publication number
WO2023112772A1
WO2023112772A1 PCT/JP2022/044909 JP2022044909W WO2023112772A1 WO 2023112772 A1 WO2023112772 A1 WO 2023112772A1 JP 2022044909 W JP2022044909 W JP 2022044909W WO 2023112772 A1 WO2023112772 A1 WO 2023112772A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
parallel
warning
issued
unit
Prior art date
Application number
PCT/JP2022/044909
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 川崎重工業株式会社
Publication of WO2023112772A1 publication Critical patent/WO2023112772A1/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
    • 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/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors

Definitions

  • This disclosure relates to programming for controlling devices including robots to operate in parallel.
  • Devices such as robots and cameras are widely used in fields such as logistics, delivery, assembly, and food. For example, in order to shorten the cycle time of work using robots, a plurality of robots are operated in parallel.
  • Patent Document 1 does not target parallel operations related to robots, it discloses a parallel program operation analysis method. According to Patent Document 1, it is possible to visually monitor the operating status of an actual parallel program.
  • Patent Document 1 it is possible to efficiently identify program bugs by adding message identification information to messages sent and received between programs that make up a parallel program.
  • a mechanism that enables programmers to more quickly find locations where there is a high possibility of bugs and to flexibly correct them.
  • the present disclosure has been made in view of the above circumstances, and its purpose is to effectively prevent program bugs related to parallel operation of multiple devices.
  • a robot programming support device having the following configuration. That is, this robot programming support device supports programming for a program that causes a plurality of devices including at least robots to operate in parallel.
  • the robot programming support device includes a device extracting section, a determining section, and a warning section.
  • the device extraction unit extracts an identification name of a device to which an operation command is issued for each unit of parallel operation based on the description content of the program.
  • the determination unit determines whether or not there is a target duplicate device.
  • the target duplicate device is a device in which an operation command is issued in two or more parallel operations targeting the same device.
  • the warning unit outputs a warning when it is determined that there is the target duplicate device.
  • a robot programming support program having the following configuration. That is, this programming support program supports programming for a program that causes a plurality of devices including at least robots to operate in parallel.
  • This robot programming support program includes the following steps. That is, in the first step, the identification name of the device to which the operation command is to be issued is extracted for each unit of parallel operation based on the description content of the program. In the second step, it is determined whether or not there is the target duplicate device. In the third step, a warning is output when it is determined that there is the target duplicate device.
  • a robot programming support method having the following configuration. That is, this programming support method supports programming with respect to a program that causes a plurality of devices including at least robots to operate in parallel.
  • this robot programming support method an identification name of a device to which an operation command is issued is extracted for each unit of parallel operation based on the description content of the program. It is determined whether or not there is the target duplicate device. A warning is output when it is determined that there is the target duplicate device.
  • FIG. 1 is a schematic diagram illustrating a parallel programming device according to an embodiment of the present disclosure and a parallel operation system to be programmed;
  • FIG. FIG. 4 is a diagram showing an example of a program for parallel operation;
  • Architectural diagram of the editor program. 4 is a flowchart for explaining processing performed in a robot programming support program;
  • FIG. 4 is a schematic diagram showing a warning issued in the editor program;
  • FIG. 1 is a schematic diagram illustrating a parallel programming device 10 according to an embodiment of the present disclosure and a parallel operation system 50 to be programmed.
  • FIG. 2 is a diagram showing an example of a parallel operation program.
  • FIG. 3 is an architectural diagram of the editor program.
  • a parallel programming device 10 as a robot programming support device includes a control unit 11, an input unit 12, and a display unit 13.
  • the parallel programming device 10 is implemented by, for example, a desktop or notebook personal computer.
  • the control unit 11 is a computer main body, and includes a CPU, RAM, large-scale storage device, and the like. The details of the configuration of the control unit 11 will be described later.
  • the input unit 12 includes, for example, a mouse, a keyboard, and the like.
  • the display unit 13 can graphically display various types of information such as an editor screen, which will be described later.
  • An editor program for creating programs is installed in the parallel programming device 10 .
  • the editor program is a windows application with a GUI.
  • GUI is an abbreviation for graphical user interface.
  • an editor window is displayed on the display section 13 .
  • the user operates the input unit 12 to create and edit the parallel operation program.
  • IDE integrated development environment
  • a user can operate the parallel programming device 10 to create a parallel operation program.
  • This parallel operation program is used to operate the parallel operation system 50 shown in FIG.
  • This parallel operation system 50 includes a first arm robot 51 , a second arm robot 52 and a camera 53 .
  • a parallel operation program can be written using a known programming language. Although Python is used in this embodiment, the language is not particularly limited.
  • the parallel operation program contains parallel operation blocks.
  • FIG. 2 shows an example of a simple parallel operation program displayed in an editor window. A part of the program illustrated in FIG. 2 includes parallel operation blocks.
  • the parallel operation block corresponds to lines 7-13 of the program.
  • the concept representing a unit of parallel execution may be called a thread.
  • the parallel operation block includes processing for two threads.
  • the behavior of the first thread is defined in lines 8-9, which is an indented block immediately after the if statement on line 7.
  • the thread index number of the first thread is 0, as indicated by the condition of the if statement.
  • a command to move to position B is issued to the first arm type robot 51 on the eighth line.
  • a photographing command is issued to the camera 53 in the ninth line.
  • the processing of the first thread is completed.
  • the behavior of the second thread is defined in the 12th to 13th lines, which is the indented block immediately after the elif statement on the 11th line.
  • the thread index number of the second thread is 1, as indicated by the condition of the elif statement.
  • a command to move to position C is issued to the first arm type robot 51 .
  • a command to move the second arm type robot 52 to the position D is issued in the 13th line.
  • the processing of the parallel operation block is completed when both threads are completed.
  • a user creates a program as shown in FIG. 2, for example, using the parallel programming device 10 in which an editor program is installed.
  • the editor program has a function called extension.
  • a user of the editor program can use extensions to add special functions that the editor program does not have.
  • the user instructs the editor program to install the extension function and designates the package file.
  • a package file is a file in which multiple files for adding functions to the editor program are integrated into one. This makes it possible to apply the extended functions of the package to the editor program.
  • this package may be called a function addition package.
  • the function addition package contains program files written in a known programming language.
  • a known language such as TypeScript or JavaScript can be used, but it is not limited to this.
  • a parallel operation programming support package is applied to the editor program.
  • the parallel operation programming support package is a kind of the above function addition package. Although the details will be described later, this support package has the function of pointing out parts that are likely to be bugs in the program that the user is editing with the editor. Such functions are sometimes called linter functions.
  • the parallel operation programming support package is created by the manufacturer of the first arm type robot 51 and the second arm type robot 52, for example. A user can obtain the package file, for example, by downloading it from a website.
  • Fig. 3 is an example of an architecture diagram of an editor program.
  • the parallel programming device 10 executes the editor program, the parallel programming device 10 starts up the main process 41 and the extension host process 42 .
  • a main program 46 is executed.
  • the main program 46 provides the basic functions of the editor program, such as creating, reading, and saving program files.
  • the main program 46 also provides functions related to program file editing, such as moving the editing position (caret), inserting a character string to the editing position, selecting a character string, and deleting a character string.
  • the extension host process 42 is a process for implementing extension functions.
  • the extension host process 42 executes the robot programming support program 47 included in the package.
  • this program may be simply referred to as a support program.
  • This support program 47 describes processing for realizing the parallel block identification unit 21, the device extraction unit 22, the determination unit 23, the warning unit 24, and the behavior storage unit 25 shown in FIG.
  • the parallel block identification unit 21 identifies the part where the above-mentioned parallel operation block is described based on the description content of the program edited by the editor program.
  • the device extraction unit 22 extracts, for each thread, a device to which an operation command is issued, based on the description content of the parallel operation block specified by the parallel block specification unit 21.
  • the determination unit 23 determines whether or not operation commands are issued from multiple threads to the same device.
  • the device may be referred to as a duplicate target device.
  • the above determination can also be rephrased as determining whether or not there is a target duplicate device.
  • the determination by the determination unit 23 is performed based on the extraction result of the device extraction unit 22 .
  • the warning unit 24 warns the user by displaying the editor program when there is a duplicate target device.
  • the behavior storage unit 25 stores, for each type of device, information about how the device behaves when operation commands are issued in parallel to the same device. This information is used for warning in warning section 24 .
  • the editor program API 43 shown in FIG. 3 is an API published by the editor program.
  • API is an abbreviation for Application Programming Interface. Programs on the extended function side can use some of the functions of the editor program via this API.
  • step S101 the program contents (in other words, text data) currently input to the editor program are acquired.
  • text data corresponding to the program shown in FIG. 2 is obtained. Acquisition of text data can be realized by the support program 47 calling the editor program API 43 .
  • step S102 the above text data is appropriately analyzed. Based on this analysis, the locations of parallel operation blocks included in the program are identified. In the analysis of step S102, the start line and end line of all threads are also specified. According to the example of FIG. 2, the number of threads to be executed in parallel by the processing in step S102 is 2, and the thread with index number 0 (first thread) is from the 8th to 9th lines. , the thread with index number 1 (second thread) is specified from the 12th to the 13th lines.
  • This processing can be implemented using any suitable text processing technique, such as regular expressions, for example.
  • step S103 the lines from the start line to the end line of each thread are examined line by line for all threads, and the name of the device to which the operation command is issued in the thread is extracted. is obtained as a set without For example, from the description "arm1.move (posB)" on the eighth line, "arm1" is extracted as the device name.
  • This extraction process can be realized, for example, by retrieving a character string that matches an appropriate regular expression from each line.
  • ⁇ arm1, camera ⁇ is obtained as a set of devices as a result of checking the eighth and ninth rows in FIG. 2, and for the second thread, the twelfth Rows through 13 are examined, resulting in ⁇ arm1, arm2 ⁇ as a set of devices.
  • a set can be represented by an array variable, for example.
  • step S104 it is determined whether or not the devices included in the above set obtained for each thread are included in other thread sets. This determination can be easily made by examining the elements commonly included in the two array variables.
  • arm1 of the set obtained for the first thread is also included in the set obtained for the second thread.
  • step S104 whether or not there is duplication of devices is determined based on whether or not the sum of the device numbers in the set obtained for each thread matches the device number in the union of all threads. can also be determined.
  • the union of all threads is ⁇ arm1, arm2, camera ⁇ and the number of devices is 3. Since the two do not match, it is determined that one or more devices to which commands are issued are duplicated among a plurality of threads.
  • step S104 if even one device to which an operation command is issued overlaps between threads, it is determined that two or more threads issue operation commands in parallel to the same device. means. If there is such a duplicate target device, there is a high possibility that a plurality of operation commands will conflict, so a warning is displayed in the editor window as shown in step S105.
  • the warning can be issued, for example, by highlighting a line indicating processing for issuing an operation command to the target duplicate device (here, arm1) in an editor window displayed on the display unit 13 by an appropriate method. can be done.
  • a specific example of a warning is indicated by the highlighted portion 61 in FIG.
  • highlighting is achieved by adding a dashed underline, but any method of highlighting is possible.
  • highlighting can be realized by making the color of the characters themselves different from others, or by displaying a warning mark on the left side of the line. Character decoration for highlighting can be performed by the support program 47 calling the editor program API 43 .
  • step S105 If there is no target duplicate device, the process of step S105 is skipped.
  • step S105 when the warning display of step S105 is performed, when the user operates the input unit 12 to place the mouse cursor on the highlighted portion 61, the highlighted portion 61 is displayed as shown in FIG. A pop-up window 62 is displayed at a nearby position.
  • the pop-up window 62 displays, for example, a simple sentence explaining the content of the warning. In this way, a warning can also be realized by displaying a message.
  • the user can quickly notice that, for example, the "arm1" part on line 12 of the program in FIG. 2 may be a bug that causes unexpected events during parallel operation.
  • a pop-up window 62 displays a button 63 for ignoring warnings.
  • this button 63 is clicked, the highlighting is canceled and the pop-up window is closed, after which the command conflict warning in that portion is no longer displayed.
  • the device is a robot (for example, the first arm robot 51)
  • the robot is at point P
  • another thread moves the same robot to point B before the robot completes movement based on the command.
  • the behavior of the robot in this case is generally classified into the following three types.
  • the robot does not start moving to point B until it moves to point A. After completing the movement to point A, the robot moves to point B according to the command to move to point B. In this way, a plurality of conflicting operation commands are sequentially executed in order of receipt.
  • a device that exhibits such behavior may be referred to as a sequential execution type.
  • the robot that was in the middle of moving to point A immediately stops due to an error.
  • the error stop may be performed after the movement to the A point is completed.
  • a device exhibiting such behavior may be referred to as an error type.
  • the message displayed in the pop-up window 62 described above includes an explanation of what type of behavior the robot will exhibit.
  • the message in the pop-up window 62 of FIG. 5 shows an example in which the robot of "arm1" is of the overwrite type.
  • a link 64 is also displayed in the pop-up window 62 .
  • a help window 65 is separately displayed.
  • the display format of the link 64 is arbitrary, and may be displayed in a button format, for example.
  • the device is a camera.
  • the camera is performing a shooting operation according to a first shooting command issued from a certain thread
  • a second shooting command is issued from another thread.
  • the behavior of the camera in this case is generally classified into the following three types.
  • the camera does not start the second shooting until the shooting based on the first shooting command is completed.
  • the camera immediately starts shooting according to the second shooting command after completing the first shooting.
  • This type can be called the sequential execution type described above.
  • the camera does not stop shooting based on the first shooting command.
  • the second photographing command is accepted, but the second photographing is not performed.
  • the imaging result for the second imaging command is the same as the imaging result for the first imaging command.
  • a device exhibiting such behavior is sometimes referred to as a confluence type hereinafter.
  • the camera that was in the middle of shooting based on the first shooting command immediately stops due to an error.
  • This type can be referred to as the error type described above.
  • the manufacturer of each device such as a robot creates information necessary for controlling the robot in advance in the form of a module file and provides it to the user.
  • a module file is a program created on the assumption that it will be used by other programs.
  • this module file contains class definitions.
  • a class means a collection of variables and functions required to express something (here, each device).
  • the 'Arm' module file describes, for example, the definition of the 'Arm' class, which is a class related to arm-type robots.
  • the "Camera” module file describes the definition of the "Camera” class, which is a class related to cameras.
  • the definition of a class includes the definition of functions and the specification of parameters required for each function. Functions defined within a class are called methods. For example, the definition of the "Arm” class includes the contents of the "move” method, which means issuing a move command.
  • the provided module file is read with the import statement on the first line of the program in Figure 2.
  • the required number of instances are instantiated based on the class.
  • Classes are sometimes likened to blueprints, but instantiation means creating actual data in computer storage based on the class.
  • each instance also called an object
  • an object name such as "arm1”.
  • a corresponding operation command is issued to the device, as indicated by, for example, lines 6 and 9 of the program in FIG.
  • the name of the device to which the command is issued substantially means the name of the object whose method is executed.
  • the support program 47 refers to the class definition of the object to obtain information about what type of behavior the device related to the warning will exhibit during command conflict.
  • the support program 47 can display the type of behavior in the pop-up window 62 of FIG. 4 based on the information thus obtained. This makes it possible to present useful information to the user.
  • the flow shown in FIG. 4 is executed each time an editing operation is performed in the editor window. Therefore, if "arm1" on the 12th line of FIG. 2 is changed to "arm2" on the editor, the highlighted portion 61 of FIG. 5 will immediately disappear. Furthermore, if "arm2" is changed back to "arm1" on the editor, the highlighted portion 61 will appear again as shown in FIG.
  • the time from when an editing operation is performed in the editor window until the warning is displayed or disappears is sufficiently short, for example, 1 second or less. Since the real-time display of warnings is substantially ensured in this way, the user can notice the possibility of a bug in the program at an extremely early stage.
  • the parallel programming device 10 of the present embodiment supports programming with respect to a program that causes a plurality of devices including the first arm robot 51 and the second arm robot 52 to operate in parallel.
  • the parallel programming device 10 includes a device extracting section 22, a judging section 23, and a warning section 24.
  • the device extraction unit 22 extracts the object name of the device to which the operation command is issued for each unit of parallel operation based on the description content of the program.
  • the determination unit 23 determines whether or not there is a target duplicate device.
  • a duplicate target device is a device in which an operation command is issued in two or more parallel operations targeting the same device.
  • the warning unit 24 outputs a warning when it is determined that there is a target duplicate device.
  • the parallel programming apparatus 10 of this embodiment includes a parallel block identification unit 21 that identifies parallel operation blocks in which parallel operation of devices is described in the program based on the description content of the program.
  • the device extraction unit 22 extracts the object name of the device to which the operation command is issued from the parallel operation description part for each unit of parallel operation.
  • the parallel programming device 10 of the present embodiment includes a behavior storage unit 25 that stores, for each class, information on device behavior when multiple operation commands are issued in parallel to the same device.
  • the pop-up window 62 output by the warning unit 24 for warning contains information about the behavior of the device when a plurality of operation commands are issued in parallel.
  • the warning by the warning unit 24 includes highlighting the part of the program that specifies the target duplicate device (arm1 in the example of FIG. 5).
  • the warning unit 24 issues a warning substantially in real time according to a change in program content.
  • warning message in the pop-up window 62 may be displayed in another pane of the editor window.
  • the type and number of devices that make up the parallel operation system 50 are arbitrary.
  • the type of robot programmed for parallel operation is not limited, and can be, for example, an arm type, a hand type, a cart, or the like.
  • other sensors such as laser scanners may be included as targets for which parallel operations are programmed.
  • the behavior of the device when conflicting operation commands can be described for each object instead of being described in the class definition.
  • the behavior of a device during operation command conflict can be described for each device as an individual instead of describing it for each device model.
  • the function to detect and warn of target duplicate devices may be provided in the main program 46 instead of the support program 47.
  • the content of the warning message is arbitrary.
  • the warning message may be "This process conflicts with other processes and may cause unintended behavior during execution.”
  • An indication eg, an indication of the line number
  • identifying the line that conflicts with the highlighted line may be included in the message.
  • a processor is considered a processing circuit or circuit because it includes transistors and other circuits.
  • a circuit, unit, or means is hardware that performs or is programmed to perform the recited functions.
  • the hardware may be the hardware disclosed herein, or other known hardware programmed or configured to perform the functions recited.
  • a circuit, means or unit is a combination of hardware and software where the hardware is a processor which is considered a type of circuit, the software being used to configure the hardware and/or the processor.
  • a support device for supporting programming with respect to a program for causing parallel operation of a plurality of devices including at least robots, a device extraction unit that extracts, based on the description content of the program, the identification name of a device to which an operation command is issued, for each unit of parallel operation; a determination unit that determines whether or not there is a target duplicate device, which is the same device as a target and is the device when an operation command is issued in two or more parallel operations; a warning unit that outputs a warning when it is determined that there is the target duplicate device;
  • a robot programming support device comprising:
  • (Item 2) The robot programming support device according to item 1, a specifying unit that specifies a parallel operation description portion in which the parallel operation of the device is described in the program, based on the description content of the program;
  • the robot programming support apparatus wherein the device extraction unit extracts an identification name of a device to which an operation command is issued from the parallel operation description part for each unit of parallel operation.
  • (Item 4) The robot programming support device according to any one of items 1 to 3, The robot programming support apparatus, wherein the warning by the warning unit includes highlighting a part specifying the target duplicate device in the program.
  • a programming support program for supporting programming with respect to a program for operating a plurality of devices including at least robots in parallel, a step of extracting an identification name of a device to which an operation command is issued for each unit of parallel operation based on the description content of the program; Determining whether or not there is a target duplicate device, which is the same device as a target and is the device when an operation command is issued in two or more parallel operations; outputting a warning when it is determined that there is the target duplicate device; A robot programming support program.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Automation & Control Theory (AREA)
  • Numerical Control (AREA)
  • Stored Programmes (AREA)

Abstract

プログラミング支援装置は、少なくともロボットを含む複数のデバイスを並列動作させるプログラムに関し、プログラミングを支援する。プログラミング支援装置は、デバイス抽出部と、判定部と、警告部と、を備える。前記デバイス抽出部は、前記プログラムの記述内容に基づいて、動作コマンドの発行対象であるデバイスの識別名を、並列動作の単位毎に抽出する。前記判定部は、同一のデバイスを対象として、2つ以上の並列動作において動作コマンドが発行される場合の当該デバイスである、対象重複デバイスがあるか否かを判定する。前記警告部は、前記対象重複デバイスがあると判定された場合に警告を出力する。

Description

ロボットプログラミング支援装置、ロボットプログラミング支援プログラム、及び、ロボットプログラミング支援方法
 本開示は、ロボットを含むデバイスを並列で動作するように制御するためのプログラミングに関する。
 物流、配送、組立、食品等の分野において、ロボット、カメラ等のデバイスが広く用いられている。例えば、ロボットを用いた作業のサイクルタイムを短縮するために、複数のロボットを並列的に動作させることが行われる。
 特許文献1は、ロボットに関する並列動作を対象とするものではないが、並列プログラム動作解析方法を開示する。特許文献1によれば、実際の並列プログラムの動作状況を視覚的に監視することができる。
特開平8-328897号公報
 複数のデバイス(例えば、複数のロボット)を並列動作させる場合、並列動作のための特別なプログラムが作成される。しかし、並列動作のプログラミングでは、複数のロボットを同時に同一場所へ移動させる命令等、並列動作特有のバグを含んだプログラムを作成してしまう場合がある。このバグは、プログラムの構文ミスのような単純なバグと異なり、プログラムを各ロボットにインストールして実行した場合に初めて判明するケースも多い。従って、並列動作のバグを発見して修正するための時間及び工数が多く掛かってしまっていた。
 特許文献1は、並列プログラムを構成する各プログラムの間で送受信されるメッセージに関して、メッセージ判別情報を各メッセージに付加することで、プログラムのバグを効率良く特定できるとする。しかしながら、複数のデバイスの並列動作を実現するプログラムを作成する際に、プログラマが、バグの可能性が高い場所をより素早く見つけて機動的に修正できる仕組みが求められている。
 本開示は以上の事情に鑑みてされたものであり、その目的は、複数のデバイスの並列動作に関するプログラムのバグを効果的に防止することにある。
 本開示の解決しようとする課題は以上の如くであり、次にこの課題を解決するための手段とその効果を説明する。
 本開示の第1の観点によれば、以下の構成のロボットプログラミング支援装置が提供される。即ち、このロボットプログラミング支援装置は、少なくともロボットを含む複数のデバイスを並列動作させるプログラムに関し、プログラミングを支援する。ロボットプログラミング支援装置は、デバイス抽出部と、判定部と、警告部と、を備える。前記デバイス抽出部は、前記プログラムの記述内容に基づいて、動作コマンドの発行対象であるデバイスの識別名を、並列動作の単位毎に抽出する。前記判定部は、対象重複デバイスがあるか否かを判定する。前記対象重複デバイスとは、同一のデバイスを対象として、2つ以上の並列動作において動作コマンドが発行される場合の当該デバイスである。前記警告部は、前記対象重複デバイスがあると判定された場合に警告を出力する。
 本開示の第2の観点によれば、以下の構成のロボットプログラミング支援プログラムが提供される。即ち、このプログラミング支援プログラムは、少なくともロボットを含む複数のデバイスを並列動作させるプログラムに関し、プログラミングを支援する。このロボットプログラミング支援プログラムは、以下のステップを含む。即ち、第1ステップにおいては、前記プログラムの記述内容に基づいて、動作コマンドの発行対象であるデバイスの識別名を、並列動作の単位毎に抽出する。第2ステップにおいては、前記対象重複デバイスがあるか否かを判定する。第3ステップにおいては、前記対象重複デバイスがあると判定された場合に警告を出力する。
 本開示の第3の観点によれば、以下の構成のロボットプログラミング支援方法が提供される。即ち、このプログラミング支援方法は、少なくともロボットを含む複数のデバイスを並列動作させるプログラムに関し、プログラミングを支援する。このロボットプログラミング支援方法では、前記プログラムの記述内容に基づいて、動作コマンドの発行対象であるデバイスの識別名を、並列動作の単位毎に抽出する。前記対象重複デバイスがあるか否かを判定する。前記対象重複デバイスがあると判定された場合に警告を出力する。
 これらにより、ユーザは、許容できない動作コマンドの競合を引き起こすバグに、プログラミングの段階で、警告に基づいて容易に気付くことができる。この結果、並列動作に関するプログラムを効率良く作成することができる。
 本開示によれば、複数のデバイスの並列動作に関するプログラムのバグを効果的に防止することができる。
本開示の一実施形態に係る並列プログラミング装置と、プログラミングの対象である並列動作システムを説明する模式図。 並列動作用プログラムの例を示す図。 エディタプログラムのアーキテクチャ図。 ロボットプログラミングの支援プログラムにおいて行われる処理を説明するフローチャート。 エディタプログラムにおいて行われる警告を示す模式図。
 次に、図面を参照して、開示される実施の形態を説明する。図1は、本開示の一実施形態に係る並列プログラミング装置10と、プログラミングの対象である並列動作システム50を説明する模式図である。図2は、並列動作用プログラムの例を示す図である。図3は、エディタプログラムのアーキテクチャ図である。
 図1に示すように、ロボットプログラミング支援装置としての並列プログラミング装置10は、制御部11と、入力部12と、表示部13と、を備える。並列プログラミング装置10は、例えば、デスクトップ型又はノート型のパーソナルコンピュータ等により実現される。
 制御部11は、コンピュータ本体であり、CPU、RAM、大規模記憶装置等を備える。制御部11の構成の詳細については後述する。入力部12は、例えば、マウス、キーボード等を含んで構成される。表示部13は、後述のエディタ画面等、各種の情報をグラフィカルに表示することができる。
 並列プログラミング装置10には、プログラムを作成するためのエディタプログラムがインストールされている。エディタプログラムは、GUIを有するウインドウアプリケーションである。GUIとは、グラフィカルユーザインタフェースの略称である。エディタプログラムが起動すると、表示部13にエディタウインドウが表示される。この状態でユーザは入力部12を操作して、並列動作用プログラムの作成及び編集を行う。エディタプログラムとしては、例えば、統合開発環境(IDE)と呼ばれる公知のプログラムを用いることができる。
 ユーザは、並列プログラミング装置10を操作して、並列動作プログラムを作成することができる。この並列動作プログラムは、図1に示す並列動作システム50を動作させるために用いられる。この並列動作システム50は、第1アーム型ロボット51と、第2アーム型ロボット52と、カメラ53と、を備える。
 並列動作用プログラムは、公知のプログラム言語を用いて記述することができる。本実施形態ではPythonが用いられているが、言語は特に限定されない。
 並列動作用プログラムは、並列動作ブロックを含んでいる。図2は、エディタウインドウに表示された、簡単な並列動作用プログラムの例が示されている。図2に例示するプログラムの一部には、並列動作ブロックが含まれている。並列動作ブロックは、プログラムの第7行~第13行に相当する。以下、並列実行の単位を表す概念をスレッドと呼ぶことがある。
 図2のプログラムが実行されると、第6行で、第1アーム型ロボット51に対し、位置Aへの移動コマンドが発行される。第1アーム型ロボット51の位置Aへの移動動作が完了した後、並列動作ブロックの2つのスレッドが、実質的に同時に開始される。
 並列動作ブロックには、2つのスレッドについての処理が含まれている。
 第1スレッドの動作は、第7行のif文の直後のインデントされたブロックである、第8行~第9行に定義されている。if文の条件で示すとおり、第1スレッドのスレッドインデックス番号は0である。第1スレッドでは、第8行で、第1アーム型ロボット51に対し、位置Bへの移動コマンドが発行される。第1アーム型ロボット51の位置Bへの移動動作が完了した後、第9行で、カメラ53に対して撮影コマンドが発行される。カメラ53の撮影コマンドの動作が完了すると、第1スレッドの処理が完了する。
 第2スレッドの動作は、第11行のelif文の直後のインデントされたブロックである、第12行~第13行に定義されている。elif文の条件で示すとおり、第2スレッドのスレッドインデックス番号は1である。第2スレッドでは、第12行で、第1アーム型ロボット51に対し、位置Cへの移動コマンドが発行される。第1アーム型ロボット51の位置Cへの移動動作が完了した後、第13行で、第2アーム型ロボット52の位置Dへの移動コマンドが発行される。第2アーム型ロボット52の位置Dへの移動動作が完了すると、第2スレッドの処理が完了する。
 2つのスレッドが何れも完了することで、並列動作ブロックの処理が完了する。
 並列動作ブロックの処理が完了すると、第14行で、第2アーム型ロボット52に対し、位置Eへの移動コマンドが発行される。第2アーム型ロボット52の位置Eへの移動動作が完了することにより、プログラムの全ての処理が完了する。
 ユーザは、エディタプログラムがインストールされた並列プログラミング装置10を用いて、例えば図2に示すようなプログラムを作成する。
 エディタプログラムは、エクステンションと呼ばれる機能を有している。エディタプログラムのユーザは、エクステンションを利用することで、エディタプログラムが有していない特別な機能を追加することができる。ユーザは、エディタプログラムにエクステンション機能のインストールを指示し、パッケージファイルを指定する。パッケージファイルは、エディタプログラムに機能を追加するための複数のファイルを1つに統合したファイルである。これにより、パッケージが有する拡張機能をエディタプログラムに適用することができる。以下、このパッケージを、機能追加用パッケージと呼ぶことがある。
 機能追加用パッケージは、公知のプログラム言語で記述されたプログラムファイルを含む。このプログラムファイルのプログラム言語としては、例えばTypeScript又はJavaScript等の公知の言語を用いることができるが、これに限定されない。
 本実施形態では、エディタプログラムに対して、並列動作プログラミング支援パッケージが適用される。並列動作プログラミング支援パッケージは、上記の機能追加用パッケージの一種である。詳細は後述するが、この支援パッケージは、エディタでユーザが編集しているプログラムにおいてバグになりそうな部分を指摘する機能を有している。このような機能は、リンター機能と呼ばれることがある。並列動作プログラミング支援パッケージは、例えば、第1アーム型ロボット51及び第2アーム型ロボット52の製造者により作成される。ユーザは、パッケージファイルを、例えばWebサイトからのダウンロードにより得ることができる。
 図3は、エディタプログラムのアーキテクチャ図の一例である。並列プログラミング装置10においてエディタプログラムが実行されると、並列プログラミング装置10において、メインプロセス41と、エクステンションホストプロセス42と、が起動される。
 メインプロセス41においては、メインプログラム46が実行される。メインプログラム46は、エディタプログラムが有する、プログラムファイルの作成、読込み、及び保存等に関する基本的な機能を提供する。メインプログラム46は、プログラムファイルの編集に関する機能、例えば、編集位置(キャレット)の移動、編集位置への文字列の挿入、文字列の選択、文字列の削除等の機能も併せて提供する。
 エクステンションホストプロセス42は、エクステンション機能を実現するためのプロセスである。エディタプログラムに上述の機能追加用パッケージがインストールされた場合に、エクステンションホストプロセス42において、当該パッケージに含まれる、ロボットプログラミングの支援プログラム47が実行される。以下、このプログラムを単に支援プログラムと呼ぶことがある。
 この支援プログラム47には、図1に示す、並列ブロック特定部21、デバイス抽出部22、判定部23、警告部24、及び挙動記憶部25を実現するための処理が記述されている。
 並列ブロック特定部21は、エディタプログラムで編集されているプログラムの記述内容に基づいて、前述の並列動作ブロックが記述されている部分を特定する。
 デバイス抽出部22は、並列ブロック特定部21で特定された並列動作ブロックの記述内容に基づいて、動作コマンドの発行対象であるデバイスを、スレッド毎に抽出する。
 判定部23は、動作コマンドが複数のスレッドから同一のデバイスに対して発行されるか否かを判定する。以下、このように同一のデバイスを対象として動作コマンドが並列で発行される場合、当該デバイスを対象重複デバイスと呼ぶことがある。上記の判定は、対象重複デバイスがあるか否かの判定と言い換えることもできる。判定部23の判定は、デバイス抽出部22の抽出結果に基づいて行われる。
 警告部24は、対象重複デバイスが存在する場合に、エディタプログラムの表示によってユーザへ警告する。
 挙動記憶部25は、同一のデバイスに対して動作コマンドが並列で発行された場合に当該デバイスがどのような挙動を示すかの情報を、デバイスの種類ごとに記憶する。この情報は、警告部24における警告に用いられる。
 図3に示すエディタプログラムAPI43は、エディタプログラムが公開しているAPIである。APIとは、アプリケーションプログラミングインタフェースの略称である。拡張機能側のプログラムは、このAPIを介して、エディタプログラムが有する機能の一部を利用することができる。
 機能追加用パッケージとしてインストールされた支援プログラム47の処理について、図4のフローチャートを参照して説明する。図4に示すフローは、エディタウインドウにおいてプログラムの内容が変更された場合に、その都度実行される。
 処理が開始すると、ステップS101に示すように、エディタプログラムに現時点で入力されているプログラムの内容(言い換えれば、テキストデータ)が取得される。これにより、例えば、図2に示すプログラムに相当するテキストデータが得られる。テキストデータの取得は、支援プログラム47がエディタプログラムAPI43を呼び出すことで実現することができる。
 次に、ステップS102に示すように、上記のテキストデータが適宜解析される。この解析に基づいて、プログラムに含まれる並列動作ブロックの位置が特定される。ステップS102の解析においては、更に、全てのスレッドの開始行と終了行が特定される。図2の例に即していうと、ステップS102の処理により、並列実行されるスレッドの数は2であり、インデックス番号が0のスレッド(第1スレッド)は第8行から第9行までであり、インデックス番号が1のスレッド(第2スレッド)は第12行から第13行までであることが特定される。この処理は、例えば正規表現等の適宜のテキスト処理技術を用いて実現することができる。
 次に、ステップS103に示すように、すべてのスレッドについて、各スレッドの開始行から終了行までを1行ずつ調べ、当該スレッドにおいて動作コマンドが発行される発行先のデバイスの名称を抽出し、重複のない集合として得る。例えば、第8行の「arm1.move(posB)」という記述から、デバイスの名称として「arm1」が抽出される。この抽出処理は、例えば、適宜の正規表現にマッチする文字列を各行から取り出すことで実現することができる。
 この処理の結果、第1スレッドに関しては、図2の第8行~第9行が調べられる結果、デバイスの集合として{arm1,camera}が得られ、第2スレッドに関しては、図2の第12行~第13行が調べられる結果、デバイスの集合として{arm1,arm2}が得られる。プログラムにおいて、集合は、例えば配列変数によって表現することができる。
 次に、ステップS104に示すように、各スレッドについて得られた上記の集合に含まれるデバイスが、他のスレッドの集合に含まれているか否かを判定する。この判定は、2つの配列変数に共通で含まれる要素を調べることによって容易に行うことができる。上記の例の場合、第1スレッドに関して得られた集合のうちarm1は、第2スレッドに関して得られた集合にも含まれている。
 ステップS104においては、各スレッドに関して得られた集合のデバイス数の和と、全てのスレッドの和集合のデバイス数と、が一致しているか否かに基づいて、デバイスの重複があるか否かを判定することもできる。上記の例で、各スレッドの集合のデバイス数の和は、2+2=4である。一方、全てのスレッドの和集合は{arm1,arm2,camera}であり、そのデバイス数は3である。両者が一致しないので、複数のスレッド間でコマンド発行先のデバイスが1つ以上重複していると判定される。
 ステップS104の判定の結果、動作コマンド発行対象のデバイスがスレッド間で1つでも重複していた場合は、同一のデバイスに対して2つ以上のスレッドから並列的に動作コマンドが発行されることを意味する。このような対象重複デバイスが存在する場合、複数の動作コマンドが競合する可能性が高いので、ステップS105に示すように、エディタウインドウに警告が表示される。
 警告は、例えば、表示部13に表示されるエディタウインドウにおいて、対象重複デバイス(ここでは、arm1)に対して動作コマンドを発行する処理を示す行を、適宜の方法で強調表示することにより行うことができる。警告の具体例が、図5の強調表示部分61によって示されている。図5の例では、破線の下線を付すことで強調表示が実現されているが、強調の方法は任意である。例えば文字自体の色を他と異なるようにしたり、行の左側に警告マークを表示したりすることで、強調表示を実現することができる。強調表示のための文字装飾は、支援プログラム47がエディタプログラムAPI43を呼び出すことにより行うことができる。
 対象重複デバイスがなかった場合は、ステップS105の処理はスキップされる。
 本実施形態において、ステップS105の警告表示が行われた場合、ユーザが入力部12を操作して上述の強調表示部分61にマウスカーソルを合わせると、図5に示すように、強調表示部分61の近傍の位置にポップアップウインドウ62が表示される。ポップアップウインドウ62には、例えば、警告の内容を説明する簡単な文章が表示される。このように、メッセージ表示によって警告を実現することもできる。
 上記の警告により、ユーザは、例えば、図2のプログラムのうち第12行の「arm1」の部分が、並列動作時において予期しない事象を引き起こすバグかもしれないことに早期に気付くことができる。
 図5に示すように、ポップアップウインドウ62には、警告の無視に関するボタン63が表示されている。このボタン63をクリックすると、強調表示が解除されるとともにポップアップウインドウが閉じられ、その後は、当該部分におけるコマンド競合の警告は表示されなくなる。
 ここで、同一のデバイスに対して複数の動作コマンドが競合した場合のデバイスの実際の挙動について説明する。
 以下、デバイスがロボット(例えば、第1アーム型ロボット51)である場合について説明する。例えば、ロボットがP地点にある状態で、あるスレッドがA地点への移動コマンドをロボットに発行した後、当該コマンドに基づくロボットの移動が完了する前に、別のスレッドが同一のロボットにB地点への移動コマンドを発行した場合を考える。この場合のロボットの挙動は、概ね、以下に示す3つの類型に分けられる。
 第1類型では、B地点への移動コマンドが発行された場合でも、ロボットは、A地点へ移動するまでB地点への移動を開始しない。ロボットは、A地点への移動を完了した後、B地点への移動コマンドに従って、B地点へ移動する。このように、競合する複数の動作コマンドが受付順に逐次実行される。以下、このような挙動を示すデバイスを逐次実行型と呼ぶことがある。
 第2類型では、B地点への移動コマンドが発行された時点で、A地点への移動途中であったロボットは移動先をA地点からB地点へ変更し、直ちにB地点への移動を開始する。言い換えれば、A地点への移動コマンドは途中で破棄される。以下、このような挙動を示すデバイスを上書き型と呼ぶことがある。
 第3類型では、B地点への移動コマンドが発行された時点で、A地点への移動途中であったロボットは直ちにエラー停止する。ただし、A地点への移動を完了してからエラー停止しても良い。以下、このような挙動を示すデバイスをエラー型と呼ぶことがある。
 図5に示すように、上述のポップアップウインドウ62において表示されるメッセージには、ロボットがどの類型の挙動を示すかに関する説明が含まれている。図5のポップアップウインドウ62のメッセージは、「arm1」のロボットが上書き型である場合の例を示している。
 ポップアップウインドウ62には、リンク64が併せて表示されている。ユーザが入力部12を操作してリンク64をクリックすると、ヘルプウインドウ65が別に表示される。リンク64の表示形式は任意であり、例えば、ボタン形式で表示されても良い。これにより、ユーザは、コマンド競合時のデバイスの挙動をヘルプウインドウ65での説明により良く理解して、例えば警告を無視して良いか否かを適切に判断することができる。
 次に、デバイスがカメラである場合について説明する。例えば、カメラが、あるスレッドから発行された第1の撮影コマンドに従って撮影動作を行っている途中に、別のスレッドからの第2の撮影コマンドが発行された場合を考える。この場合のカメラの挙動は、概ね、以下に示す3つの類型に分けられる。
 第1類型では、第2の撮影コマンドが発行された場合でも、カメラは、第1の撮影コマンドに基づく撮影が完了するまで第2の撮影を開始しない。カメラは、第1の撮影が完了した後、第2の撮影コマンドによる撮影を直ちに開始する。この類型は、上述の逐次実行型ということができる。
 第2類型では、第2の撮影コマンドが発行された場合でも、カメラは、第1の撮影コマンドに基づく撮影を中断しない。第1の撮影が完了した後、直ちに第2の撮影コマンドが受け付けられるが、2回目の撮影は行われない。第2の撮影コマンドに対する撮影結果は、第1の撮影コマンドに対する撮影結果と同一になる。以下、このような挙動を示すデバイスを合流型と呼ぶことがある。
 第3類型では、第2の撮影コマンドが発行された時点で、第1の撮影コマンドに基づく撮影途中であったカメラは直ちにエラー停止する。この類型は、上述のエラー型ということができる。
 本実施形態において、例えばロボット等の各デバイスのメーカーは、当該ロボットの制御に必要な情報を、予めモジュールファイルの形で作成し、ユーザに提供する。モジュールファイルとは、他のプログラムから利用されることを前提に作成されたプログラムをいう。
 図示を省略するが、このモジュールファイルにはクラスの定義が含まれている。クラスとは、あるもの(ここでは、各デバイス)を表現するために必要な変数及び関数を集約したものを意味する。「Arm」モジュールファイルには、例えば、アーム型ロボットに関するクラスである「Arm」クラスの定義が記述される。「Camera」モジュールファイルには、カメラに関するクラスである「Camera」クラスの定義が記述される。クラスの定義には、関数の定義、及び、各関数に必要なパラメータの指定が含まれる。クラス内で定義された関数は、メソッドと呼ばれる。例えば「Arm」クラスの定義には、移動コマンドの発行を意味する「move」メソッドの内容が含まれている。
 モジュールファイルに記述されるクラスの定義には、更に、コマンド競合時に当該ロボットがどの類型の挙動を示すかに関する情報が記述されている。
 提供されたモジュールファイルは、図2のプログラムの第1行にあるimport文で読み込まれる。プログラムの第2行から第4行までの処理で、クラスに基づいて、必要な数(Armクラスについては2つ、Cameraクラスについては1つ)だけインスタンス化の処理が行われる。クラスは設計図に例えられることがあるが、インスタンス化とは、クラスに基づいて、実際のデータをコンピュータの記憶装置に生成することを意味する。インスタンス化の際、それぞれのインスタンス(オブジェクトとも呼ばれる)に、「arm1」等のオブジェクト名(識別名)が付与される。図2のプログラムの例えば第6行及び第9行等で示すように、オブジェクトのメソッドを実行することにより、デバイスに対して該当の動作コマンドが発行される。
 前述のステップS103で説明した、コマンド発行先のデバイスの名称とは、実質的には、メソッドが実行されるオブジェクト名を意味する。
 支援プログラム47は、オブジェクトのクラス定義を参照して、当該警告に関するデバイスがコマンド競合時にどの類型の挙動を示すかの情報を得る。支援プログラム47は、こうして得られた情報に基づいて、図4のポップアップウインドウ62において挙動の類型を表示することができる。これにより、ユーザに対して有用な情報を提示することができる。
 上述のとおり、図4に示すフローは、エディタウインドウにおいて編集操作が行われる毎に実行される。従って、エディタ上で図2の第12行の「arm1」を「arm2」に変更すれば、図5の強調表示部分61は直ちに消えることになる。更に、エディタ上で「arm2」を「arm1」に戻せば、再び図5のように強調表示部分61が現れることになる。エディタウインドウにおける編集操作が行われてから、警告が表示されるまで又は消えるまでの時間は、十分に短く、例えば1秒以下である。このように警告表示のリアルタイム性が実質的に確保されるので、ユーザはプログラムのバグの可能性にきわめて早期に気付くことができる。
 以上に説明したように、本実施形態の並列プログラミング装置10は、第1アーム型ロボット51及び第2アーム型ロボット52を含む複数のデバイスを並列動作させるプログラムに関し、プログラミングを支援する。並列プログラミング装置10は、デバイス抽出部22と、判定部23と、警告部24と、を備える。デバイス抽出部22は、プログラムの記述内容に基づいて、動作コマンドの発行対象であるデバイスのオブジェクト名を、並列動作の単位毎に抽出する。判定部23は、対象重複デバイスがあるか否かを判定する。対象重複デバイスとは、同一のデバイスを対象として、2つ以上の並列動作において動作コマンドが発行される場合の当該デバイスである。警告部24は、対象重複デバイスがあると判定された場合に警告を出力する。
 これにより、ユーザは、許容できない動作コマンドの競合を引き起こすバグに、プログラミングの段階で、警告に基づいて容易に気付くことができる。この結果、並列動作に関するプログラムを効率良く作成することができる。
 本実施形態の並列プログラミング装置10は、プログラムの記述内容に基づいて、プログラムにおいてデバイスの並列動作が記述されている並列動作ブロックを特定する並列ブロック特定部21を備える。デバイス抽出部22は、前記並列動作記述部分から、動作コマンドが発行されるデバイスのオブジェクト名を、並列動作の単位毎に抽出する。
 これにより、プログラムのうち並列動作を行う部分に対して、適切な警告を行うことができる。
 本実施形態の並列プログラミング装置10は、同一のデバイスに対して複数の動作コマンドが並列で発行された場合のデバイスの挙動に関する情報を、クラス毎に記憶する挙動記憶部25を備える。警告部24が警告のために出力するポップアップウインドウ62には、複数の動作コマンドが並列で発行された場合のデバイスの挙動に関する情報が含まれる。
 これにより、ユーザは、動作コマンドが競合した場合のデバイスの挙動を容易に理解して、警告に対応することができる。
 本実施形態の並列プログラミング装置10において、警告部24による警告は、プログラムのうち、対象重複デバイス(図5の例では、arm1)を指定する部分を強調表示することを含む。
 これにより、ユーザは、バグの可能性が高い部分に容易に注目することができる。
 本実施形態の並列プログラミング装置10において、警告部24は、プログラムの内容の変更に応じて実質的にリアルタイムに警告を行う。
 これにより、ユーザは、バグの可能性についてより早期に気付くことができる。
 以上に本開示の好適な実施の形態を説明したが、上記の構成は例えば以下のように変更することができる。変更は単独で行われても良いし、複数の変更が任意に組み合わせて行われても良い。
 警告メッセージは、ポップアップウインドウ62での表示に代えて、例えば、エディタウインドウの別のペインに表示されても良い。
 並列動作システム50を構成するデバイスの種類及び数は任意である。並列動作がプログラムされるロボットの形式は問わず、例えば、アーム形式、ハンド形式、台車等とすることができる。並列動作がプログラムされる対象として、カメラに代えて、又はカメラに加えて、レーザスキャナ等の他のセンサが含まれても良い。
 動作コマンドの競合時におけるデバイスの挙動は、クラス定義において記述する代わりに、オブジェクト毎に記述することもできる。言い換えれば、動作コマンドの競合時におけるデバイスの挙動は、デバイスの機種ごとに記述する代わりに、個体としてのデバイス毎に記述することもできる。
 対象重複デバイスを検出して警告する機能は、支援プログラム47ではなくメインプログラム46において提供されても良い。
 警告メッセージの内容は任意である。例えば、警告メッセージを、「この処理は他の処理と競合しており、実行時に意図しない動作をする可能性があります。」とすることが考えられる。強調表示されている行と競合する行を特定する表示(例えば、行番号の表示)が、メッセージに含まれても良い。
 本明細書で開示する要素の機能は、開示された機能を実行するように構成又はプログラムされた汎用プロセッサ、専用プロセッサ、集積回路、ASIC(Application Specific Integrated Circuits)、従来の回路、及び/又は、それらの組合せ、を含む回路又は処理回路を使用して実行することができる。プロセッサは、トランジスタやその他の回路を含むため、処理回路又は回路と見なされる。本開示において、回路、ユニット、又は手段は、列挙された機能を実行するハードウェア、又は、列挙された機能を実行するようにプログラムされたハードウェアである。ハードウェアは、本明細書に開示されているハードウェアであっても良いし、あるいは、列挙された機能を実行するようにプログラム又は構成されているその他の既知のハードウェアであっても良い。ハードウェアが回路の一種と考えられるプロセッサである場合、回路、手段、又はユニットはハードウェアとソフトウェアの組合せであり、ソフトウェアはハードウェア及び/又はプロセッサの構成に使用される。
 上記の開示から、少なくとも以下の技術思想を把握することができる。
 (項目1)少なくともロボットを含む複数のデバイスを並列動作させるプログラムに関し、プログラミングを支援する支援装置であって、
 前記プログラムの記述内容に基づいて、動作コマンドの発行対象であるデバイスの識別名を、並列動作の単位毎に抽出するデバイス抽出部と、
 同一のデバイスを対象として、2つ以上の並列動作において動作コマンドが発行される場合の当該デバイスである、対象重複デバイスがあるか否かを判定する判定部と、
 前記対象重複デバイスがあると判定された場合に警告を出力する警告部と、
を備える、ロボットプログラミング支援装置。
 (項目2)項目1に記載のロボットプログラミング支援装置であって、
 前記プログラムの記述内容に基づいて、前記プログラムにおいてデバイスの並列動作が記述されている並列動作記述部分を特定する特定部を備え、
 前記デバイス抽出部は、前記並列動作記述部分から、動作コマンドの発行対象であるデバイスの識別名を、並列動作の単位毎に抽出する、ロボットプログラミング支援装置。
 (項目3)項目1又は2に記載のロボットプログラミング支援装置であって、
 同一のデバイスに対して複数の動作コマンドが並列で発行された場合の当該デバイスの挙動に関する情報を、デバイス毎又はデバイスの機種毎に記憶する挙動記憶部を備え、
 前記警告部が出力する警告に、複数の動作コマンドが並列で発行された場合の前記デバイスの挙動に関する情報が含まれる、ロボットプログラミング支援装置。
 (項目4)項目1から3までの何れか一項に記載のロボットプログラミング支援装置であって、
 前記警告部による警告は、前記プログラムのうち、前記対象重複デバイスを指定する部分を強調表示することを含む、ロボットプログラミング支援装置。
 (項目5)項目1から4までの何れか一項に記載のロボットプログラミング支援装置であって、
 前記警告部は、前記プログラムの内容の変更に応じて実質的にリアルタイムに警告を行う、ロボットプログラミング支援装置。
 (項目6)少なくともロボットを含む複数のデバイスを並列動作させるプログラムに関し、プログラミングを支援するプログラミング支援プログラムであって、
 前記プログラムの記述内容に基づいて、動作コマンドの発行対象であるデバイスの識別名を、並列動作の単位毎に抽出するステップと、
 同一のデバイスを対象として、2つ以上の並列動作において動作コマンドが発行される場合の当該デバイスである、対象重複デバイスがあるか否かを判定するステップと、
 前記対象重複デバイスがあると判定された場合に警告を出力するステップと、
を備える、ロボットプログラミング支援プログラム。
 (項目7)少なくともロボットを含む複数のデバイスを並列動作させるプログラムに関し、プログラミングを支援するプログラミング支援方法であって、
 前記プログラムの記述内容に基づいて、動作コマンドの発行対象であるデバイスの識別名を、並列動作の単位毎に抽出し、
 同一のデバイスに対して複数の並列動作において動作コマンドが発行される対象重複デバイスがあるか否かを判定し、
 前記対象重複デバイスがあると判定された場合に警告を出力する、ロボットプログラミング支援方法。

Claims (7)

  1.  少なくともロボットを含む複数のデバイスを並列動作させるプログラムに関し、プログラミングを支援する支援装置であって、
     前記プログラムの記述内容に基づいて、動作コマンドの発行対象であるデバイスの識別名を、並列動作の単位毎に抽出するデバイス抽出部と、
     同一のデバイスを対象として、2つ以上の並列動作において動作コマンドが発行される場合の当該デバイスである、対象重複デバイスがあるか否かを判定する判定部と、
     前記対象重複デバイスがあると判定された場合に警告を出力する警告部と、
    を備える、ロボットプログラミング支援装置。
  2.  請求項1に記載のロボットプログラミング支援装置であって、
     前記プログラムの記述内容に基づいて、前記プログラムにおいてデバイスの並列動作が記述されている並列動作記述部分を特定する特定部を備え、
     前記デバイス抽出部は、前記並列動作記述部分から、動作コマンドの発行対象であるデバイスの識別名を、並列動作の単位毎に抽出する、ロボットプログラミング支援装置。
  3.  請求項1に記載のロボットプログラミング支援装置であって、
     同一のデバイスに対して複数の動作コマンドが並列で発行された場合の当該デバイスの挙動に関する情報を、デバイス毎又はデバイスの機種毎に記憶する挙動記憶部を備え、
     前記警告部が出力する警告に、複数の動作コマンドが並列で発行された場合の前記デバイスの挙動に関する情報が含まれる、ロボットプログラミング支援装置。
  4.  請求項1に記載のロボットプログラミング支援装置であって、
     前記警告部による警告は、前記プログラムのうち、前記対象重複デバイスを指定する部分を強調表示することを含む、ロボットプログラミング支援装置。
  5.  請求項1に記載のロボットプログラミング支援装置であって、
     前記警告部は、前記プログラムの内容の変更に応じて実質的にリアルタイムに警告を行う、ロボットプログラミング支援装置。
  6.  少なくともロボットを含む複数のデバイスを並列動作させるプログラムに関し、プログラミングを支援するプログラミング支援プログラムであって、
     前記プログラムの記述内容に基づいて、動作コマンドの発行対象であるデバイスの識別名を、並列動作の単位毎に抽出するステップと、
     同一のデバイスを対象として、2つ以上の並列動作において動作コマンドが発行される場合の当該デバイスである、対象重複デバイスがあるか否かを判定するステップと、
     前記対象重複デバイスがあると判定された場合に警告を出力するステップと、
    を備える、ロボットプログラミング支援プログラム。
  7.  少なくともロボットを含む複数のデバイスを並列動作させるプログラムに関し、プログラミングを支援するプログラミング支援方法であって、
     前記プログラムの記述内容に基づいて、動作コマンドの発行対象であるデバイスの識別名を、並列動作の単位毎に抽出し、
     同一のデバイスに対して複数の並列動作において動作コマンドが発行される対象重複デバイスがあるか否かを判定し、
     前記対象重複デバイスがあると判定された場合に警告を出力する、ロボットプログラミング支援方法。
PCT/JP2022/044909 2021-12-13 2022-12-06 ロボットプログラミング支援装置、ロボットプログラミング支援プログラム、及び、ロボットプログラミング支援方法 WO2023112772A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2021201852A JP2023087457A (ja) 2021-12-13 2021-12-13 ロボットプログラミング支援装置、ロボットプログラミング支援プログラム、及び、ロボットプログラミング支援方法
JP2021-201852 2021-12-13

Publications (1)

Publication Number Publication Date
WO2023112772A1 true WO2023112772A1 (ja) 2023-06-22

Family

ID=86774554

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2022/044909 WO2023112772A1 (ja) 2021-12-13 2022-12-06 ロボットプログラミング支援装置、ロボットプログラミング支援プログラム、及び、ロボットプログラミング支援方法

Country Status (2)

Country Link
JP (1) JP2023087457A (ja)
WO (1) WO2023112772A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008142788A (ja) * 2006-12-06 2008-06-26 Yaskawa Electric Corp 動作プログラム作成支援方法および動作プログラム作成装置。
JP2011123667A (ja) * 2009-12-10 2011-06-23 Star Micronics Co Ltd 数値制御プログラムのコマンド表示装置及びコマンド表示プログラム
JP2020095453A (ja) * 2018-12-12 2020-06-18 ソニー株式会社 プログラムの製造方法、およびプログラムの表示方法
JP2021144588A (ja) * 2020-03-13 2021-09-24 オムロン株式会社 ロボット制御システムおよび制御方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008142788A (ja) * 2006-12-06 2008-06-26 Yaskawa Electric Corp 動作プログラム作成支援方法および動作プログラム作成装置。
JP2011123667A (ja) * 2009-12-10 2011-06-23 Star Micronics Co Ltd 数値制御プログラムのコマンド表示装置及びコマンド表示プログラム
JP2020095453A (ja) * 2018-12-12 2020-06-18 ソニー株式会社 プログラムの製造方法、およびプログラムの表示方法
JP2021144588A (ja) * 2020-03-13 2021-09-24 オムロン株式会社 ロボット制御システムおよび制御方法

Also Published As

Publication number Publication date
JP2023087457A (ja) 2023-06-23

Similar Documents

Publication Publication Date Title
CN108351764B (zh) 数据处理方法和系统
EP0785510B1 (en) Program debugging system for debugging a program having a graphical user interface
US7873939B2 (en) Processing logic modeling and execution
JP3729640B2 (ja) 画面フローによるビジュアルプログラミング装置
KR20060087995A (ko) 작업 흐름을 모델링하는 방법 및 시스템
US8032232B2 (en) Natively retaining project documentation in a controller
US20090259933A1 (en) System for Displaying an Annotated Programming File
JP2011165208A (ja) 画像処理アプリケーションを開発するための方法およびシステム
US10379821B1 (en) Optimization tracing
CN110673842A (zh) 一种可视化编程方法及系统、存储介质、设备
JP3535354B2 (ja) ストール検出表示装置及び方法
WO2023112772A1 (ja) ロボットプログラミング支援装置、ロボットプログラミング支援プログラム、及び、ロボットプログラミング支援方法
JP2000112737A (ja) プログラム作成装置
US11609772B2 (en) Dynamically generating guided tours for software
JP2006244106A (ja) 情報処理装置及びその処理方法
JP2000112736A (ja) プログラム作成装置
US20090013308A1 (en) Programming interface for computer programming
JPH02275539A (ja) デバッグ処理方式
WO2015019421A1 (ja) 組み込みソフトウェアのプログラム開発方法、プログラミング装置および組み込み機器
JP2001005517A (ja) 制御プログラムのモニター方法および装置
KR101940719B1 (ko) 태스크 그래프 기반 대화 처리 시스템의 태스크 그래프 구축 장치 및 방법
Charalambous et al. Extension of pipe2 to support coloured generalised stochastic petri nets
US12001501B1 (en) System and method for using inspect element framework for building mobile DAP content
EP1868099A1 (en) Bug management tool
JPH1185835A (ja) 作図装置

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: 22907300

Country of ref document: EP

Kind code of ref document: A1