This application claims the benefits of Korean Patent Application No. 10-2005-0121047, filed on Dec. 9, 2005, and Korean Patent Application No. 10-2006-0098097, filed on Oct. 9, 2006, in the Korean Intellectual Property Office, the disclosures of which are incorporated herein in their entirety by reference.
1. Field of the Invention
The present invention relates to a method of visually preparing an application control program for controlling a robot, and a programming tool for the same, and more particularly, to a method of preparing a robot control program which is represented by an assembly of robot action blocks visualized by diagrams instead of text, and a programming tool for the same.
2. Description of the Related Art
In the past, to control a robot, a programmer had to code entire modules at a code level, even for common functions such as robot action, speech recognition, and graphical user interface (GUI). Since the modules had to be recompiled whenever they were changed, maintained, or repaired, robot programming was expensive, time consuming, and needed specialized knowledge.
Currently used methods of preparing robot tasks employ one of the following two types of method.
In the first method, a robot task program is directly prepared by using an object oriented language such as C++ or java or C language by using an interface which represents the hardware. This method has the disadvantage that developers have difficulty preparing a task if they are not skilled in robot hardware features and control programs. In addition, it is difficult to change the attributes of the once prepared robot task during an execution time.
In the second method, data dependent on the hardware used for the robot task is prepared by using XML, thereby adding flexibility to the programming. In this method, since information on features of the hardware used by the robot task is written in XML, the execution time can be reduced, and the robot task can be easily changed. However, as mentioned in the first method, only those skilled in robot programming can develop robot tasks, since the robot tasks are also developed using a programming language.
Because of these technical limits, it is impossible to satisfy the need for developing a large amount of contents for robots and robot application programs in which systematic information is effectively transmitted to the end user by utilizing various robot resources in order to commercialize the robot.
A multimedia authoring tool for real time lectures has also been developed. This authoring program downloads multimedia content from a server in real time to a personal computer, and reproduces data such as general objects, sound, and moving pictures through a separate player. However, since this tool was developed for remote lecture objects, it cannot be used to prepare contents for robots including the various robot actions.
Moreover, since the previously developed robot control program has to be coded as text in a high level programming language, it is difficult for developers to use if they are not skilled in that field.
The present invention provides a method of supporting robot application programming and a programming tool for the same, which allows a robot program to be easily developed by a general robot user instead of a professional programmer by combining motion, speech recognition, speech synthesis, GUI, and other application modules such as mail send, music play, and sound play.
According to an aspect of the present invention, there is provided a method of supporting robot application programming in which behavior that constitutes operations to be performed by a robot are assembled in a programming tool for programming an application program for the operations to be performed by the robot, the method including: classifying the operations to be performed by the robot by functions of the robot; displaying the behavior of the robot which can constitute one of the functions of the robot on a display device in a graphical form with block shapes that can be connected one another visually with a plurality of conditions; and converting a set of the blocks into an XML file, when the function of the robot is constructed as a robot task by the set of blocks in the graphical form.
According to another aspect of the present invention, there is provided a programming tool for a robot application program, the programming tool including: an action window which displays an action block obtained by visualizing one or more behaviors to be performed by a robot; a selection window in which the behavior of the action block is displayed and the selected behavior is input into the action block; and a toolbar window which includes shortcuts related to a pallet menu that can open or close, storing/opening, uploading to the robot, and executing operations, and supplies tools for completing execution of the action block.
The above and other features and advantages of the present invention will become more apparent by describing in detail exemplary embodiments thereof with reference to the attached drawings in which:
FIGS. 4 to 7 illustrates tasks in
Preferred embodiments of the present invention will now be described in detail with reference to the attached drawings.
First, referring to
After processing the graphic including the action blocks, the user assembles the displayed action blocks to complete the function. Then, the function is converted into an XML file to become an application program. At this time, an input condition for execution of a task and a completion condition for completion of the task are supplied to the user. That is, the user graphically inputs the selected condition as shown in FIGS. 5 to 7. Output information, which is the execution result of the task, and property information, which defines exceptional situations obstructing the execution of the task, are supplied to the user, and a selected condition is input by the user. Accordingly, the completed function is converted into the XML file in operation S130.
A programming tool for programming a robot application according to an embodiment of the present invention will now be described in detail, with reference to FIGS. 2 to 7. Hereinafter a programming tool 200 is assumed to be the same as the programming device. As described above, the programming tool 200 shown in
The different types of action blocks are distinguished by color and shapes. Several action blocks can be combined. For example, a square may indicate an action including a sub-behavior, an octagon may indicate a minimal unit action, a round roof shape may indicate a loop control, and a wide roof shape may indicate a branching statement such as IF.
Each of the action blocks includes a fold/unfold button and a property dialog button to control its features.
The action that constitutes the action block includes predetermined unit behavior such as MoveTo, Text To Speech (TTS), GoTo, and the like, according to types.
The action blocks include a user-defined block, a control block, and a sensor/event block. The user-defined block can be reused as a library. When the contents of the user-defined block are changed, the contents of the user-defined block in another related block are concurrently changed. The control block for controlling execution including repetition (loop) and condition (if) can be divided into sub-categories as needed by the programmer. The sensor/event block is used as the conditional statement of the control block when a sensing information event is generated.
The action block describes what the robot has to do. However, the task to be performed by the robot is described by using information on when to act, what conditions are required, what happens when the task is completed, and exceptional conditions dependent on the task.
Accordingly, a task editor for representing the action block includes an input (input of each attribute in FIGS. 5 to 7) condition for indicating an execution condition, a completion condition for creating a successful execution result of the task, output information for indicating an execution result, and attribute information for defining an exceptional situation representing the case where the task can not be executed any more.
In addition, the task editor according to an embodiment of the present invention supports forming design patterns of the robot task to reuse the robot task regardless of the service domain of the robot. The design pattern is determined by classifying the designs for solving similar problems by analyzing the design examples for various problems, and generalizing and establishing the most suitable design for each problem type. In the embodiment of the present invention, the robot task can be visually recognized according to the shapes and patterns of the visual blocks.
Therefore, in the robot application service area, the knowledge about the robot task design or the know-how as to the design pattern is well materialized into the problem for each type, and moreover, the knowledge about the solution or the know-how is sufficiently generalized about the same problem type to the pattern type.
An XML schema for defining a task of the robot will now be described. Service XML describes tasks to be distributed to URCSA. At present, in URCSA, only one service XML has to be designated when the system starts, but the service XML is expected to exchange in order to load the service through a network.
<!- -
In URCSA, a service is a bundle of tasks. The task is a bundle of behavior. The service describes attributes of the tasks that it includes. One service includes one or more tasks.
Used in: services
- - >
<! ELEMENT service (servicename, task*)>
<!- -
The name of a service is designated.
Used in: service
- - >
<! ELEMENT service-name (#PCDATA)>
<!- -
The attributes of each task that constitutes the service are designated. The attributes of each task include name, property, and behavior information. Each task includes one or more types of behavior.
Used in: service
- - >
<! ELEMENT task (name, properties, behavior*)>
<!- -
The name of the task is designated.
Used in: task
- - >
<! ELEMENT name (#PCDATA)>
<!- -
The attributes of the task are designated. The attributes of the task include an execution mode, call instruction, priority, an execution type, the task to execute next, and the like. The detailed contents of the attribute information are described in each tag description.
The execution mode indicates an invoke mode, and the execution type indicates whether the program is executed in parallel, single, or planned mode.
Each element that constitutes the properties is changed depending on the attributes to be designated according to an event, a command, and the execution mode of a timer. Timertype, expiration, duration, and interval are used only when the exetype is a timer task.
Used in: task
- - >
<! ELEMENTproperties (exectype, type, command?, priority?, next-invoke?,2 post-condition?, pre-condition?, timertype?, firetime?, duration?, interval?)>
<!- -
The execution mode (invoke mode) of a task is designated. The execution modes of the task are classified into event, command, and timer. The task which is set as an event is performed by using the next-invoke of another task instead of the command of the external system.
Used in: properties
- - >
<! ELEMENT exectype (#PCDATA)>
<!- -
The execution type of the task is designated. The execution type of the task may be parallel, single, or planned.
1) Parallel Task: concurrently executable tasks (tasks which do not include Moveto and Gototo)
Example) Music Play Task, E-mail Send Task, Home Appliance Control Task. etc.
2) Single Task : an exclusively executable task in a system
Example) Follow Person Task etc
3) Planned Task : task to which a path planning operation is applicable
Example) MoveTo Task, GoTo Task etc
Used in: properties
- - >
<! ELEMENT type (#PCDATA)>
<!- -
When the execution mode of the task is designated to a command or event, a command used to call the task is designated. When the execution mode is designated to an event, the command is transmitted to a planner to perform planning.
Used in: properties
- - >
<! ELEMENT command (#PCDATA)>
<!- -
The priority of a task is arbitrarily designated by a user who constructs the task by considering the relation among tasks. When there is no priority, the priority is dynamically designated to the tasks which are set as the planned tasks on the basis of the distance from the planner of URCSA.
Used in: properties
- - >
<! ELEMENT priority (#PCDATA)>
<!- -
A task to be called after the execution of the current task is completed is designated. The next task is executed in an event mode.
Used in: properties
- - >
<! ELEMENT next-invoke (#PCDATA)>
<!- - The condition of a case where the execution of the task is completed and the execution result of the task is success is described. The successful completion of the task is checked by LogicalSensor. The type and the value of LogicalSensor are designated by the user. When the Post Condition is not satisfied, the next task that is set by the Next invoke cannot be performed.
Used in: properties
- - >
<! ELEMENT post-condition (logicalsensor, value)>
<!- -
The type of LogicalSensor, which checks the completion condition of the task, is designated.
Used in: post-condition
- - >
<! ELEMENT logicalsensor (#PCDATA)>
<!- -
The value of LogicalSensor, which checks the completion condition of the task, is designated.
Used in: post-condition
- - >
<! ELEMENT value (#PCDATA)>
<!- -
The condition for checking whether the task can be executed, before execution of the task, is described. The determination of the execution of the task is checked by LogicalSensor similarly to the post-condition. The type and the value of LogicalSensor are designated by the user. When the Pre Condition is not satisfied, the task cannot be performed.
Used in: properties
- - >
<! ELEMENT pre-condition (logicalsensor, value)>
<!- -
The type of LogicalSensor which checks the execution condition of the task is designated.
Used in: pre-condition
- - >
<! ELEMENT logicalsensor (#PCDATA)>
<!- -
The value of LogicalSensor which checks the execution condition is designated.
Used in: pre-condition
- - >
<! ELEMENT value (#PCDATA)>
<!- -
Timertype is designated when the execution mode is Timer. The timertype includes OneshotTimer or PeriodicTimer (refer to
1) OneshotTimer is a task which is performed once at a predetermined time (absolute time)
2) PeriodicTimer is a task which is repeatedly performed at predetermined time intervals (relative time)
Used in: properties
- - >
<! ELEMENT timertype (#PCDATA)>
<!- -
Firetime is a value that is set when the execution mode of the task is Timer. When the Timer Task is OneshotTimer, the firetime indicates a period from a registration time to when the timer is fired.
Used in: properties
- - >
<! ELEMENT firetime (#PCDATA)>
<!- -
Duration is a value that is set when the execution mode of the task is Timer. When the timertype is set as PeriodicTimer, the duration indicates the period until the timer is first fired.
Used in: properties
- - >
<! ELEMENT duration (#PCDATA)>
<!- -
Interval is a value that is set when the execution mode of the task is Timer. When the timertype is set as PeriodicTimer, the interval indicates the period after which the Timer Task is fired.
Used in: properties
- - >
<! ELEMENT interval (#PCDATA)>
<!- -
Information on the behaviors which constitute the task is described. The Behaviors are classified into system Behaviors which are supplied from URCSA and user Behaviors which are prepared by the user.
Used in: task
- - >
<! ELEMENT behaviors (#PCDATA)>
<!- -
Unit behaviors which constitute the task are described.
Used in: behaviors
- - >
<! ELEMENT behavior (sequence, type, owner, defined-class-name?, normal-content?, abnormal_content?, post-condition?, goal?)>
<!- -
An execution sequence of the unit behaviors which constitute the task is described.
Used in: behavior
- - >
<! ELEMENT sequence (#PCDATA)>
<!- -
The type of each Behavior is designated. The behavior types supported by the system are MoveTo, Goto, Speech, Vision, and homegateway. The behavior prepared by the user may be executed.
Used in: behavior
- - >
<! ELEMENT type (#PCDATA)>
<!- -
It is determined whether the behavior is supported by the system or prepared by the user. The type of the behavior may be user or system.
Used in: behavior
- - >
<! ELEMENT owner (#PCDATA)>
<!- -
When the user is the owner, the name of the behavior class prepared by the user is designated. The class name has to be designated as a full name including a package.
Used in: behavior
- - >
<! ELEMENT defined-class-name (#PCDATA)>
<!- -
Normal-content is a value used for Speech behavior. When there is no Next Invoke Task, the normal-content is a value to be played by SpeechBehavior.
Used in: behavior
- - >
<! ELEMENT normal-content (#PCDATA)>
<!- -
Abnormal-content is a value used for Speech behavior. When a Next Invoke Task exists, the abnormal-content is a value to be played by SpeechBehavior.
Used in: behavior
- - >
<! ELEMENT abnormal-content (#PCDATA)>
<!- -
Goal is a value used for GotoBehavior and MoveTo Behavior. The goal designates a goal position of Goto or Moveto. The goal indicates a symbol value defined in Map.xml.
Used in: behavior
- - >
<! ELEMENT goal (#PCDATA)
Action blocks for indicating a task, behavior, and a control block IF or LOOP may have different colors in order to be easily distinguished from one other.
Accordingly, the robot task developer only defines the properties of each action block and combines the visually represented action blocks shown FIGS. 2 to 7 with one another without directly preparing the XML file in a text form shown in
As described above, according to the method of supporting robot application programming and the programming tool for the same, various robot applications can be intuitively, easily and speedily developed by simply using the tool boxes of the graphical programming tools without directly inputting code in text form.
The programming tool in the visual programming environment is a function block obtained by visualizing the library of essential components such as control methods for sensors and motors used by the robot, human-robot interaction, autonomous traveling, and speech/image recognition.
The robot application developer can develop the robot application in the visual programming environment by dragging and dropping the tool box using the mouse, like assembling lego blocks and defining necessary properties using the function of the tool box.
In addition, the user can easily modify and update the robot application, thereby reducing the cost and time needed for preparing the robot application programs.
Only the defined motion of the robot can be performed in the past. In the present invention, the accurate motion of the robot desired by the contents developer can be embodied by designating various types of parameter properties according to the types of the robot actions.
The method of supporting robot application programming according to an embodiment of the present invention can also be embodied as computer readable code on a computer readable recording medium. The computer readable recording medium is any data storage device that can store data which can be thereafter read by a computer system. Examples of the computer readable recording medium include read-only memory (ROM), random-access memory (RAM), CD-ROMs, magnetic tapes, floppy disks, optical data storage devices, and carrier waves (such as data transmission through the Internet). The computer readable recording medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.
While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it will be understood by those of ordinary skill in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the present invention as defined by the following claims.
Number | Date | Country | Kind |
---|---|---|---|
10-2005-0121047 | Dec 2005 | KR | national |
10-2006-0098097 | Oct 2006 | KR | national |