Robots and methods for operating robots
By recognizing user input and adjusting the robot's motion input processing based on its motion state, the problem of inconsistent robot motion in active or idle states is solved, enhancing the vividness and friendliness of the user experience.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2021-10-13
- Publication Date
- 2026-03-27
AI Technical Summary
Existing robots lack motion coordination corresponding to user input in video/voice communication, resulting in a poor user experience, especially when the robot is in an active or idle state, the motion input processing is inconsistent.
Robots and electronic devices recognize user input and adjust motion input processing based on motion state, including storing and identifying active motion identifiers, controlling motors to drive corresponding motions using a motion graph database, and taking into account whether the robot is active or idle.
It enhances the vividness, friendliness, and fun of the user experience, avoids motion input conflicts, and provides more natural user interaction, especially in motion coordination when the robot is active or idle.
Smart Images

Figure CN116847957B_ABST
Abstract
Description
TECHNICAL FIELD
[0001] Various embodiments of the disclosure relate to a robot for controlling motion input processing in consideration of a motion state of the robot and a driving method thereof. BACKGROUND
[0002] People widely interact with each other through networked electronic devices. As robot technology develops along with the expansion of robot application fields, home robots that can be used in ordinary households are being manufactured in addition to, for example, high-tech medical robots and aerospace robots. Accordingly, a user of an electronic device (e.g., a smart phone) can communicate with another person in real time using a networked robot. For example, a robot called a "telepresence robot" (or a remote presence robot or a virtual presence robot) is a robot that can be remotely controlled via an electronic device such as a smart phone through which a user of the electronic device can perform video and voice communication with a robot user. SUMMARY
[0003] TECHNICAL PROBLEM
[0004] If a robot provides motion corresponding to video / voice in addition to video / voice communication, the interaction experience (such as, for example, liveliness, friendliness, and fun) between users can be further enhanced. In this case, it must process motion input based on user input (e.g., video, voice, etc.) in line with motion driven by the robot.
[0005] Various embodiments of the disclosure provide a robot and a driving method thereof that are capable of adjusting motion input processing when the robot drives motion corresponding to user input, in consideration of whether a motion state of the robot is an active state or an idle state.
[0006] TECHNICAL SOLUTION
[0007] According to an aspect of the disclosure, a robot can include at least one motor to drive the robot to perform a predetermined motion, a memory to store a motion graph database and a program including one or more instructions, and at least one processor electrically connected to the at least one motor and the memory, the at least one processor configured to execute the one or more instructions of the program stored in the memory to obtain an input motion identifier based on user input, identify a motion state indicating whether the robot is performing a motion, store the input motion identifier in the memory based on the motion state being in an active state, and based on the motion state being in an idle state: determine an active motion identifier from at least one motion identifier stored in the memory based on a predetermined criterion; and control the at least one motor to drive a motion corresponding to the active motion identifier based on the motion graph database.
[0008] According to another aspect of the disclosure, an electronic device can include an input / output interface configured to obtain a user input, a communication interface configured to receive a motion state corresponding to any one of an active state or an idle state from a robot, a memory storing a program including one or more instructions, and at least one processor electrically connected to the input / output interface, the communication interface, and the memory, the at least one processor being configured to execute the one or more instructions of the program stored in the memory to obtain an input motion identifier based on the user input, store the input motion identifier in the memory based on the motion state being in the active state, and based on the motion state being in the idle state: determine an active motion identifier from at least one motion identifier stored in the memory based on a predetermined criterion, and transmit the active motion identifier to the robot using the communication interface.
[0009] According to still another aspect of the disclosure, a method of driving a robot can include obtaining an input motion identifier based on a user input, identifying a motion state indicating whether the robot is in an active state or an idle state, storing the input motion identifier based on the motion state being in the active state, and based on the motion state being in the idle state: determining an active motion identifier from at least one stored motion identifier based on a predetermined criterion, and driving a motion corresponding to the active motion identifier based on a motion graph database.
[0010] According to another aspect of the disclosure, a method of operating an electronic device can include receiving a motion state indicating one of an active state or an idle state from a robot, obtaining an input motion identifier based on a user input, storing the input motion identifier based on the motion state being in the active state, and based on the motion state being in the idle state: determining an active motion identifier from at least one stored motion identifier based on a predetermined criterion, and transmitting the active motion identifier to the robot.
[0011] Advantageous Effects
[0012] According to various embodiments of the disclosure, a user experience such as, for example, liveliness, friendliness, concentration, fun, learning effect, etc., can be further enhanced so that the robot can provide a motion corresponding to a user input such as, for example, a voice, a text, an image, an emoticon, and a gesture. Furthermore, providing a motion corresponding to a user input in the robot makes it possible to further facilitate communication among users thereof through the robot.
[0013] Further, according to various embodiments of the disclosure, the robot can drive a motion corresponding to a motion identifier obtained based on a user input, such that when the robot is in an active motion state, the obtained motion identifier is stored, and when the robot is in an idle motion state, a motion identifier is determined based on a predetermined criterion from at least one stored motion identifier to perform a motion input, thereby allowing the motion input processing to be controlled in consideration of a motion state of the robot. Accordingly, even when a motion input speed is faster than a motion driving speed by the robot, any possible error caused by a conflict of the motion driving in the robot can be avoided in advance, and a user can obtain a more natural user experience as if a human performs such a motion.
[0014] Effects obtainable from the example embodiments of the disclosure are not limited to what has been described above and any other effects which are not specifically described can also be obvious from the following description for those having ordinary skill in the art to which the example embodiments of the disclosure belong. In other words, any effects of the example embodiments of the disclosure are not limited to those explicitly described in the present disclosure and can include any technical benefits which are directly or indirectly known to those skilled in the art to which the example embodiments of the disclosure belong. BRIEF DESCRIPTION OF DRAWINGS
[0015] Figure 1 A robot driving environment including a robot, an electronic device, and a network connecting the robot and the electronic device with each other according to various embodiments is illustrated.
[0016] Figure 2 is a diagram illustrating an appearance of a robot according to an embodiment.
[0017] Figure 3 is a diagram of a robot driving method including a user input, a motion identifier determination, a motion matching, and a robot operation according to an embodiment.
[0018] Figure 4 is a diagram of obtaining a motion record corresponding to a motion identifier from a motion map database according to an embodiment.
[0019] Figure 5 is an example diagram of setting a motion map database according to an embodiment.
[0020] Figure 6 is a schematic block diagram of an electronic device according to an embodiment.
[0021] Figure 7 is a schematic block diagram of a robot according to an embodiment.
[0022] Figure 8 is a flowchart of a driving method of a robot according to an embodiment.
[0023] Figure 9 is a flowchart of an operation method of an electronic device according to an embodiment. DETAILED DESCRIPTION
[0024] While considering the functions of the present disclosure, the terms used in the various embodiments of the present disclosure have been selected as general terms that are widely used at present, but they can vary according to the intention of those skilled in the art, any related precedent, appearance of new technology, etc. Also, in some cases, terms arbitrarily selected by the applicant can be used, in which case their meanings will be described in more detail in the description of the corresponding embodiment. Therefore, the terms used in the present disclosure should be defined based on the essential meanings of the terms and the overall content of the present disclosure, not the simple names of the terms.
[0025] Throughout the specification, when an element "includes" a certain component, unless otherwise explicitly stated, it will be meant that it can further include any other component(s) rather than excluding other components. Also, the terms such as, for example, "…unit", "…module", etc. described throughout the specification will mean a unit processing at least one function or operation, which can be implemented as hardware or software, or a combination of hardware and software.
[0026] Hereinafter, various example embodiments will be described in detail with reference to the accompanying drawings, so that those of ordinary skill in the art to which the present disclosure pertains can easily implement the example embodiments. However, the present disclosure can be implemented in several different forms, and is not limited to the example embodiments described herein. In the drawings, the same reference numerals refer to the same elements or components, and the size of each component in the drawings can be partially exaggerated or reduced / enlarged for more clear description.
[0027] Figure 1 A robot driving environment including a robot, an electronic device, and a network connecting the robot and the electronic device with each other according to various embodiments is illustrated.
[0028] According to various embodiments, the robot driving environment can include a networked robot 110 and an electronic device 120.
[0029] The electronic device 120 or the robot 110 can obtain a user input. The user input can include, for example, a voice, a text, an image, an emoticon, and a gesture. The electronic device 120 or the robot 110 can obtain a text based on the user input, and perform natural language processing for the obtained text to obtain a motion identifier for performing a motion.
[0030] According to an embodiment, the robot 110 and the electronic device 120 can perform voice and / or video communication with each other through their applications, respectively. The robot 110 can output voice and / or video provided from the electronic device 120. Also, the electronic device 120 can obtain a motion identifier based on the voice and / or video. When the electronic device 120 obtains the motion identifier based on a user input, the robot 110 can receive the motion identifier from the electronic device 120. The robot 110 can drive a motion corresponding to the motion identifier.
[0031] According to various embodiments, the robot 110 or the electronic device 120 can adjust a motion input process based on a user input, considering a motion state of the robot.
[0032] Hereinafter, according to various embodiments, reference will be made to Figure 3 A method for driving the robot 110 is described, which includes a user input, a motion identifier determination, a motion matching, and a robot operation.
[0033] According to various embodiments, the electronic device 120 can include a terminal capable of performing a computing and communication function, etc. The electronic device 120 can be a desktop computer, a smart phone, a notebook computer, a tablet PC, a smart TV, a mobile phone, a personal digital assistant (PDA), a laptop computer, a media player, a micro server, a global positioning system (GPS) device, an electronic book terminal, a digital broadcasting terminal, a navigation system, a self-service terminal, an MP3 player, a digital camera, a home appliance, or other mobile or non-mobile computing devices, but is not limited thereto. Also, the electronic device 120 can be a wearable terminal such as a watch, glasses, a headband, a ring, etc. capable of performing a computing and communication function. The electronic device 120 can be one of various types of terminals, without being limited to the above description.
[0034] According to various embodiments, the network connecting the robot 110 and the electronic device 120 can be a short distance communication network such as, for example, Bluetooth, wireless fidelity (Wi-Fi), Zigbee, or infrared data association (IrDA), and a long distance area communication network such as, for example, a cellular network, a next generation communication network, the Internet, or a computer network (e.g., LAN or WAN). The cellular network can include, for example, global system for mobile communication (GSM), enhanced data GSM environment (EDGE), code division multiple access (CDMA), time division multiple access (TDMA), 5G, long term evolution (LTE), and LTE-advanced (LTE-A). The network can include connections of network elements such as, for example, hubs, bridges, routers, switches, and gateways. The network can include one or more connected networks, for example, a multi-network environment including a public network such as the Internet and a private network such as a secure enterprise private network. Access to the network can be provided via one or more wired or wireless access networks. In addition, the network can support an Internet of things (IoT) network for exchanging and processing information between distributed components of various things.
[0035] Figure 2 is a diagram illustrating an appearance of a robot (e.g., the robot 110) according to an embodiment. Figure 1
[0036] Referring to Figure 2 , the robot 200 can include a camera 210, a display 220, a neck 230, an arm 240, and a trunk 250.
[0037] The camera 210 can capture an image of the surroundings of the robot 200. For example, the camera 210 can take a photo of a person (e.g., a child) around the robot 200. As such, the electronic device 120 can monitor a person around the robot 200 through the robot 200. The camera 210 can include one or more cameras and can be located on the display 220, but the number and location of the camera 210 are not limited thereto.
[0038] When the robot 200 does not communicate with other devices, the display 220 can display a predetermined facial expression such as, for example, a doll-like face. When the robot 200 performs voice communication with the electronic device 120, the display 220 can output a predetermined screen. The predetermined screen can include a user video or a user image corresponding to a user of the electronic device 120, but is not limited thereto. When the robot 200 performs video communication with the electronic device 120, the display 220 can output an image received from the electronic device 120.
[0039] The robot 200 can include at least one connecting portion (i.e., joint) in the neck 230, the arm 240, and the torso 250, and each connecting portion can have at least one degree of freedom (DOF). The degree of freedom can refer to a degree of freedom in kinematics or inverse kinematics. The degree of freedom can imply the minimum number of variables required to determine the position and posture of each joint. For example, each joint in a three-dimensional space composed of an x-axis, a y-axis, and a z-axis can have at least one of three degrees of freedom (position on each axis) for determining a spatial position and three degrees of freedom (angle of rotation around each axis) for determining a spatial posture. For example, when a joint is movable along each axis and rotatable around each axis, it can be understood that the joint has six degrees of freedom. To achieve at least one degree of freedom in each connecting portion, each connecting portion can include at least one motor. For example, each degree of freedom can be achieved by each motor, or a certain number of degrees of freedom can be achieved by a single motor.
[0040] For example, when the connecting portion of the neck 230 in the robot 200 is rotatable around two axes (e.g., in the front-back direction and the left-right direction), the connecting portion of the neck 230 can have two degrees of freedom. In addition, there can be two arms 240, i.e., a left arm and a right arm, and each arm 240 can include a shoulder connecting portion and an elbow connecting portion. When each of the shoulder connecting portion and the elbow connecting portion is rotatable around two axes, each of the shoulder connecting portion and the elbow connecting portion can have two degrees of freedom. In addition, when the torso 250 connecting portion is rotatable around one axis, the torso 250 connecting portion can have one degree of freedom. However, the number and position of the connecting portions and their respective degrees of freedom are not limited to the above-described example.
[0041] Figure 3 A robot driving method according to an embodiment is conceptually illustrated to include user input, motion identifier determination, motion matching, and robot operation.
[0042] Referring to Figure 3 The robot driving method can obtain user input from the electronic device 120 or the robot 110 and determine a motion identifier based on the obtained user input.
[0043] The user input can include, for example, voice, text, image, emoticon, gesture, etc. The electronic device 120 or the robot 110 can obtain at least one text by at least one of voice recognition, image recognition, emoticon recognition, and gesture recognition based on the user input. For example, when the user input is voice, the electronic device 120 or the robot 110 can convert a signal externally obtained through a user's utterance into an electrical audio signal, and then obtain at least one text sequentially recognized from the converted audio signal. The electronic device 120 or the robot 110 can obtain at least one string (or keyword) corresponding to each motion from the obtained at least one text through natural language processing. The natural language processing is a technology for allowing the electronic device 120 or the robot 110 as a machine to understand human language, and can include dividing a natural language that complies with grammar. The electronic device 120 or the robot 110 can determine each motion identifier based on the obtained respective string. The motion identifier can identify each motion that the robot 110 can drive. The motion identifier can be the obtained string or a numeric code corresponding to the obtained string, but is not limited thereto, and can have various formats.
[0044] Based on the motion identifier determined in the robot 110, the robot driving method can obtain at least one set of motor values capable of driving a motion corresponding to the determined motion identifier from the motion graph database, and drive the motion using the obtained at least one set of motor values.
[0045] Hereinafter, the operation of obtaining at least one set of motor values (or motion record) capable of driving a motion from the motion graph database based on the determined motion identifier is described with reference to Figure 4 , and the operation of setting the motion graph database will be described later with reference to Figure 5
[0046] Figure 4 A conceptual diagram of obtaining a motion record corresponding to a motion identifier from a motion graph database according to an embodiment is illustrated.
[0047] Now, referring to Figure 4 , the robot 110 can obtain a motion record from the motion graph database using the motion identifier in order to drive a motion corresponding to the obtained motion identifier based on a user input from the electronic device 120 or the robot 110.
[0048] In the illustrated example, the electronic device 120 or the robot 110 can obtain a voice input from a user, obtain at least one text based on the obtained voice input, and perform natural language processing on the obtained at least one text in order to obtain at least one string (or keyword) corresponding to each motion. The electronic device 120 or the robot 110 can determine each motion identifier based on each string obtained. The motion identifier can identify each motion that the robot 110 can drive. The motion identifier can be the string obtained or a numerical code corresponding to the string obtained, but is not limited thereto, and can have various formats.
[0049] Table 1 below shows Figure 3 the motion identifiers in the form of a string or a numerical code corresponding to the string in the illustrated example.
[0050]
Table 1
[0051] String Number code Hello (410) 0 I know (420) 1 Ha ha (430) 2 I love you (440) 3
[0052] When the electronic device 120 obtains a motion identifier based on a user input, the robot 110 can receive the motion identifier from the electronic device 120. The robot 110 can store a motion graph database, and the motion graph database can be provided to the robot by the robot 110 or by an external device. The operation of setting the motion graph database will be described later with reference to Figure 5 The robot 110 can obtain a motion record corresponding to the motion identifier from the motion graph database by using the motion identifier. Figure 4 Motion records 450 to 480 in a motion graph database corresponding to the motion identifiers 410 to 440 disclosed through the example in Table 1 above are illustrated. Each motion record corresponding to each motion that can be driven by at least one motor can include a motion identifier and at least one set of motor values for each motion time frame. Each motion record can further include information indicating a motion speed for each motion time frame. For example, when a motion is driven at a motion speed corresponding to any one of acceleration, constant speed, or deceleration in each motion time frame, the motion record can further include information indicating a motion speed corresponding to one of acceleration, constant speed, or deceleration for each motion time frame.
[0053] Table 2 below exemplarily discloses motion records corresponding to the motion identifier having the string "hello" or the numerical code "0" in the example of Table 1. In the example of Table 2, each of the connecting parts (joints) of the left arm, the right arm, the neck, and the torso can have one degree of freedom, and one degree of freedom of each connecting part exemplarily discloses a motion record corresponding to a scenario implemented by one motor. For example, for the motion corresponding to "hello", each motor driving the left arm, the right arm, the neck, and the torso can drive the left arm, the right arm, the neck, and the torso to 0 degrees, 0 degrees, 0 degrees, and 0 degrees, respectively, for a time period of 0 seconds to 1 second; to 0 degrees, 60 degrees, 0 degrees, and 0 degrees, respectively, for a time period of 1 second to 2 seconds; and to 0 degrees, 0 degrees, 0 degrees, and 0 degrees, respectively, for a time period of 2 seconds to 2.5 seconds.
[0054] Table 2
[0055]
[0056] Figure 5 is an example diagram of setting a motion graph database according to an embodiment. Referring to Figure 5 , the electronic device 120 or the robot 110 can set a motion graph database through an application. The electronic device 120 or the robot 110 can obtain a user input for setting a motion of the robot and a string corresponding to the set motion through an interface. In Figure 5 , the electronic device 120 or the robot 110 can output a robot image, set a motion of the robot through conversion of the robot image and output of the converted image based on a user input such as, for example, dragging or clicking the robot image, and receive a string (for example, "hello") corresponding to the set motion (for example, "hello") of the robot from the user.
[0057] The electronic device 120 or the robot 110 can obtain a motion identifier based on the string. The motion identifier can identify each motion that the robot 110 can drive. The motion identifier can be the obtained string or a numerical code corresponding to the obtained string, but is not limited thereto, and can have various formats.
[0058] The electronic device 120 or the robot 110 can obtain at least one set of motor values for each motion time frame corresponding to the set motion. The electronic device 120 or the robot 110 can include an inverse kinematics module using a Jacobian inverse matrix, and can map Cartesian coordinate information corresponding to the set motion to joint coordinate information of the robot 110 using the inverse kinematics module. The electronic device 120 or the robot 110 can obtain at least one set of motor values for each motion time frame corresponding to the set motion from the Cartesian coordinate information corresponding to the set motion.
[0059] Electronic device 120 or robot 110 may store records including motion identifiers and at least one set of motor values for each motion time frame in a motion graph database. Robot 110 may receive the motion graph database from a device other than robot 110 (e.g., electronic device 120) that sets up the motion graph database.
[0060] Figure 6 This is a schematic block diagram of an electronic device according to an embodiment.
[0061] Now refer to Figure 6 Electronic device 600 (e.g., Figure 1 The electronic device 120 may include a processor 610, a memory 620, a communication interface 640, and / or an input / output interface 650. At least one of a microphone (MIC) 681, a speaker (SPK) 682, a camera (CAM) 683, or a display (DPY) 684 may be connected to the input / output interface 650. The memory 620 may include a program 630, which includes one or more instructions. The program 630 may include an operating system (OS) program and application programs. The electronic device 600 may include any additional components besides those shown, or omit at least one of the shown components, as required.
[0062] According to an embodiment, communication interface 640 may provide an interface for communicating with other systems or devices. Communication interface 640 may include a network interface card or wireless transceiver unit for enabling communication via an external network. Communication interface 640 may perform signal processing for accessing a wireless network. The wireless network may include at least one of, for example, a wireless LAN or a cellular network (e.g., an LTE (Long Term Evolution) network).
[0063] According to an embodiment, the input / output interface 650 can detect input from an external source (e.g., a user) and provide data corresponding to the detected input to the processor 610. The input / output interface 650 may include at least one hardware module for detecting input from the external source. The at least one hardware module may include at least one of, for example, a sensor, keyboard, keypad, touchpad, or touch panel. When the input / output interface 650 is implemented as a touch panel, it may be coupled to a display 684 to provide a touchscreen. In this case, the input / output interface 650 may provide the processor 610 with data regarding the user's touch input (such as, for example, clicking, pressing, pinching, stretching, swiping, swiping, rotating, etc.).
[0064] According to an embodiment, the display 684 can perform a function of outputting information in the form of numbers, characters, images, and / or graphics. The display 684 can include at least one hardware module for output. The at least one hardware module can include, for example, at least one of a liquid crystal display (LCD), a light emitting diode (LED), a light emitting polymer display (LPD), an organic light emitting diode (OLED), an active matrix organic light emitting diode (AMOLED), or a flexible LED (FLED). The display 684 can display a screen corresponding to data received from the processor 610. The display 684 can be referred to as an "outputter," a "display," or other terms having equivalent technical meanings.
[0065] According to an embodiment, the microphone 681, which can be electrically coupled to the processor 610 through the input / output interface 650, can convert an auditory signal externally input due to a user's utterance into an electrical audio signal. The audio signal converted by the microphone 681 can be provided to the processor 610 through the input / output interface 650. In addition to the microphone 681, components that can be electrically coupled to the processor 610 through the input / output interface 650 can be at least one of a speaker 682 or a camera 683. The speaker 682 can convert an electrical audio signal provided from the processor 610 through the input / output interface 650 into an auditory signal audible to humans and then output the same. The camera 683 can capture a subject in response to a control from the processor 610 and convert the captured image into an electrical signal to be provided to the processor 610 through the input / output interface 650.
[0066] According to an embodiment, the memory 620 can store data such as, for example, a program 630 including one or more instructions or setting information. The program 630 can include an operating system program corresponding to a basic program for the overall operation of the electronic device 600 and one or more application programs for supporting various functions. The memory 620 can consist of a volatile memory, a non-volatile memory, or a combination of the volatile memory and the non-volatile memory. The memory 620 can provide stored data on the request of the processor 610.
[0067] According to an embodiment, the processor 610 can use the program 630 stored in the memory 620 to perform operations or data processing required for control and / or communication of at least one other component in the electronic device 600. The processor 610 can include, for example, at least one of a central processing unit (CPU), a graphics processing unit (GPU), a micro controller unit (MCU), a sensor hub, an auxiliary processor, a communication processor, an application processor, an application specific integrated circuit (ASIC), or a field programmable gate array (FPGA), and can have multiple cores.
[0068] According to an embodiment, the processor 610 can process data obtained through the input / output interface 650, or control an operation state of various input and / or output means through the input / output interface 650. The various input and / or output means can be, for example, at least one of a microphone (MIC) 681, a speaker (SPK) 682, a camera (CAM) 683, or a display (DPY) 684. The processor 610 can transmit and / or receive signals through the communication interface 640.
[0069] According to an embodiment, the input / output interface 650 can obtain a user input. The user input can include, for example, voice, text, an image, an emoticon, and / or a gesture.
[0070] According to an embodiment, the communication interface 640 can receive a motion state corresponding to one of an active state or an idle state from the robot 110. The motion state can be received from the robot 110 when the motion state is changed in the robot 110, in response to a motion identifier transmission from the robot 110, or as a response to a motion state request of the electronic device 600. In the motion state, the active motion state can mean a state in which at least one motor of the robot 110 is driven, and the idle motion state can mean a state in which no motor is driven in the robot 110.
[0071] According to an embodiment, the processor 610 can obtain a motion identifier based on a user input. The processor 610 can obtain text based on the user input, and perform natural language processing on the obtained text to obtain at least one string (or keyword) corresponding to each motion. The processor 610 can determine each motion identifier based on each string obtained. The motion identifier can identify each motion that the robot 110 can drive. The motion identifier can be the obtained string or a numeric code corresponding to the obtained string, but is not limited thereto, and can have various formats.
[0072] When the motion state received from the robot 110 is the active state, the processor 610 can store the obtained motion identifier in the memory 620.
[0073] According to an embodiment, the processor 610 can not store the motion identifier in the memory 620 based on a preset storage option. The preset storage option can be set to a value indicating "enable" or "disable". When the preset storage option is a value indicating "disable" and the motion state received from the robot 110 is the active state, the processor 610 can skip the obtained motion identifier without storing it in the memory 620 in order to adjust the motion input processing in consideration of the motion state of the robot.
[0074] When the motion state is the idle state, the processor 610 can determine a motion identifier from at least one stored motion identifier based on a predetermined criterion. The processor 610 can control to transmit the determined motion identifier to the robot using the communication interface 640. The communication interface 640 can transmit the determined motion identifier to the robot.
[0075] The predetermined criterion can correspond to one of a motion identifier set based on external input, a motion identifier obtained most based on user input, or a motion identifier most recently stored. For example, the predetermined motion identifier set based on external input can be a motion identifier determined to be most frequently used based on external information in various formats. Also, the predetermined motion identifier set based on external input can be a null value. In this case, when the motion state received from the robot 110 is the active state, the obtained motion identifier can be skipped in the electronic device 600, so that the electronic device 600 can adjust motion input processing in consideration of the motion state of the robot.
[0076] Accordingly, for the motion identifier obtained based on user input, when the robot is in the active motion state, the processor 610 can store the obtained motion identifier in the memory 620, and when the robot is in the idle motion state, determine a motion identifier from at least one stored motion identifier based on a predetermined criterion, and control the communication interface 640 to transmit the determined motion identifier to the robot 120, thereby adjusting motion input processing in consideration of the motion state of the robot.
[0077] Figure 7 is a schematic block diagram of a robot according to an embodiment.
[0078] Referring to Figure 7 , the robot 700 (e.g., the robot 110 of Figure 1 ) can include a processor 710, a memory 720, a motor 750, a communication interface 760, and / or an input / output interface 770. At least one of a microphone (MIC) 781, a speaker (SPK) 782, a camera (CAM) 783, and a display (DPY) 784 can be connected to the input / output interface 770. The memory 720 can store a program 730 including one or more instructions and a motion map database 740. The program 730 can include an operating system (OS) program and at least one application program. The robot 700 can include additional components other than the illustrated components as necessary, or at least one of the illustrated components can be omitted.
[0079] According to an embodiment, the communication interface 760 can provide an interface for communication with other systems or devices. The communication interface 760 can include a network interface card or a wireless transceiver enabling communication over an external network. The communication interface 760 can perform signal processing for accessing a wireless network. The wireless network can include at least one of, for example, a wireless LAN or a cellular network (e.g., Long Term Evolution (LTE)).
[0080] According to an embodiment, the input / output interface 770 can detect an input from the outside (e.g., a user) and provide data corresponding to the detected input to the processor 710. The input / output interface 770 can include at least one hardware module for detecting an input from the outside. The at least one hardware module can include, for example, at least one of a sensor, a keypad, a key pad, a touch pad, or a touch panel. When the input / output interface 770 is implemented as a touch panel, the input / output interface 770 can be coupled to the display 784 to provide a touch screen. In this scenario, the input / output interface 770 can provide the processor 710 with data on a user's touch input such as, for example, a tap, a press, a pinch, a stretch, a swipe, a flick, a rotation, etc.
[0081] According to an embodiment, the display 784 can perform a function of outputting information in the form of numbers, characters, images, and / or graphics. The display 784 can include at least one hardware module for outputting. The at least one hardware module can include, for example, at least one of a Liquid Crystal Display (LCD), a Light Emitting Diode (LED), a Light Emitting Polymer Display (LPD), an Organic Light Emitting Diode (OLED), and an Active Matrix Organic Light Emitting Diode (AMOLED), or a Flexible LED (FLED). The display 784 can display a screen corresponding to data received from the processor 710. The display 784 can be referred to as an "output unit," a "display unit," or other terms having equivalent technical meanings thereto.
[0082] According to an embodiment, a microphone 781, which can be electrically coupled to the processor 710 through the input / output interface 770, can convert an auditory signal input from the outside due to a user's utterance into an electrical audio signal. The audio signal converted by the microphone 781 can be provided to the processor 710 through the input / output interface 770. In addition to the microphone 781, any other component, which can be electrically coupled to the processor 710 through the input / output interface 770, can be at least one of a speaker 782 or a camera 783. The speaker 782 can convert an electrical audio signal provided from the processor 710 through the input / output interface 770 into an auditory signal audible to a person and then output the same. The camera 783 can capture an object in response to a control from the processor 710, convert a captured image into an electrical signal, and provide the captured image to the processor 710 through the input / output interface 770.
[0083] According to an embodiment, the memory 720 can store a program 730 including one or more instructions and a motion map database 740. The memory 720 can also store data such as, for example, setting information. The program 730 can include an operating system program corresponding to a basic program for the operation of the robot 700 and at least one application program supporting various functions. The memory 720 can include a volatile memory, a non-volatile memory, or a combination of a volatile memory and a non-volatile memory. The memory 720 can provide stored data on the request of the processor 710.
[0084] According to an embodiment, the processor 710 can use the program 730 stored in the memory 720 to perform operations or data processing related to the control and / or communication of at least one other component in the robot 700. The processor 710 can include, for example, at least one of a central processing unit (CPU), a graphics processing unit (GPU), a micro controller unit (MCU), a sensor hub, a sub-processor, a communication processor, an application processor, an application specific integrated circuit (ASIC), or a field programmable gate array (FPGA), and can have multiple cores.
[0085] According to an embodiment, the processor 710 can process data obtained through the input / output interface 770, or control the operation state of various input and / or output means through the input / output interface 770. The various input and / or output means can be, for example, at least one of a microphone (MIC) 781, a speaker (SPK) 782, a camera (CAM) 783, or a display (DPY) 784. The processor 710 can transmit and / or receive signals through the communication interface 760.
[0086] According to an embodiment, the motor 750 can include at least one motor that drives the robot to perform a predetermined motion. The motor 750 can be electrically connected to the processor 710 and can be controlled by the processor 710 to drive the motion of the robot. To implement at least one degree of freedom in each connected portion (joint) of the robot, the robot 700 can include at least one motor corresponding to each connected portion. For example, each degree of freedom of the connected portion can be implemented by each motor, or a predetermined number of degrees of freedom thereof can be implemented by one motor.
[0087] According to an embodiment, the processor 710 can obtain a motion identifier based on a user input. The processor 710 can obtain a motion identifier determined based on a user input through the input / output interface 770, or the communication interface 760 can receive a motion identifier determined based on a user input in the electronic device 120, so that the processor 710 can obtain the received motion identifier from the communication interface 760. The user input can include, for example, voice, text, image, emoticon, and gesture.
[0088] The processor 710 can identify a motion state indicating whether the robot 700 is performing a motion. When the motion state is an active state, the processor 710 can store the obtained motion identifier in the storage 720.
[0089] According to an embodiment, the processor 710 can not store the motion identifier in the storage 720 based on a preset storage option. The preset storage option can be set to a value indicating "enable" or "disable". When the preset storage option is a value indicating "disable" and the motion state is in the active state, the processor 710 can ignore the obtained motion identifier without storing it in the storage 720, thereby adjusting the motion input processing in consideration of the motion state of the robot.
[0090] When the motion state is idle, the processor 710 can control to determine a motion identifier from at least one stored motion identifier based on a predetermined criterion, and cause the motor 750 to drive a motion corresponding to the determined motion identifier based on the motion graph database 740. The active motion state of the motion state can mean a state in which at least one motor of the robot 700 is driven, and the idle motion state can mean a state in which no motor is driven in the robot 700.
[0091] The motion graph database can include, for each motion drivable by at least one motor, a motion identifier and at least one set of motor values for each motion time frame.
[0092] The predetermined criterion can correspond to one of a motion identifier set based on external input, a motion identifier obtained most based on user input, or a recently stored motion identifier. For example, the predetermined motion identifier set based on external input can be a motion identifier determined to be most frequently used based on various formats of external information. In addition, the predetermined motion identifier set based on external input can be a null value. In this case, when the robot 700 is in the active motion state, the obtained motion identifier can be skipped without being driven to a motion, thereby adjusting the motion input processing in consideration of the motion state of the robot.
[0093] According to an embodiment, the motor 750 can drive the motion based on at least one set of motor values for each motion time frame obtained from the motion map database 740 using the motion identifier, in each motion time frame, at a motion speed corresponding to one of acceleration, constant speed, or deceleration. For example, the motor 750 can sequentially drive the motion at the motion speeds of acceleration, constant speed, or deceleration, thereby naturally driving the motion and thus enhancing the user experience. When the motor 750 is driven at a predetermined motion speed, the processor 710 can store the obtained motion identifier in the storage 720. For example, when the motion is driven at a motion speed corresponding to one of constant speed or deceleration, the processor 710 can store the obtained motion identifier in the storage 720. As another example, when the motion is driven at a motion speed corresponding to deceleration, the processor 710 can store the obtained motion identifier in the storage 720. Through the above-described examples, when the motion is driven in an initial operation period (e.g., an acceleration period) of the entire operation period (i.e., a plurality of time frames) of the motion, the processor 710 can skip the obtained motion identifier without storing it in the storage 720, thereby adjusting motion input processing.
[0094] According to an embodiment, the robot 700 can generate the motion map database 740. In this case, the input / output interface 770 can obtain a user input for setting a motion of the robot and a string corresponding to the set motion. The processor 710 can obtain a motion identifier based on the string. The processor 710 can obtain at least one set of motor values for each motion time frame corresponding to the set motion. The processor 710 can store a record in the motion map database 740, wherein the record includes the motion identifier and the at least one set of motor values for each motion time frame.
[0095] Figure 8 A schematic flowchart of a driving method in a robot according to an embodiment is illustrated.
[0096] Reference will now be made to Figure 8 In operation 810 according to an embodiment, the robot 110 can obtain an input motion identifier based on a user input. The robot 110 can receive a motion identifier corresponding to the user input from the electronic device 120 to obtain the input motion identifier. Alternatively, the robot 110 can obtain the user input using an interface and determine the input motion identifier based on the obtained user input. The user input can include, for example, voice, text, image, emoticon, and gesture.
[0097] In operation 820 according to an embodiment, the robot 110 can identify a motion state indicating whether the robot 110 is performing a motion.
[0098] In operation 830 according to an embodiment, the robot 110 can determine whether the motion state is an active state. If the motion state is the active state, operation 840 can be performed, and if the motion state is not the active state (i.e., an idle state), operation 850 can be performed.
[0099] In operation 840 according to an embodiment, the robot 110 can store the input motion identifier.
[0100] In operation 850 according to an embodiment, the robot 110 can determine an active motion identifier from at least one stored motion identifier based on a predetermined criterion. The predetermined criterion can correspond to one of a motion identifier set based on external input, a motion identifier obtained most based on user input, or a motion identifier stored most recently.
[0101] In operation 860 according to an embodiment, the robot 110 can drive a motion corresponding to the active motion identifier based on a motion graph database. The motion graph database can include at least one record corresponding to each motion, wherein the at least one record includes a motion identifier and at least one set of motor values for each motion time frame.
[0102] According to an embodiment, the robot 110 can drive the motion at a motion speed corresponding to one of acceleration, constant speed, or deceleration in each motion time frame based on the at least one set of motor values for each motion time frame. In this case, the operation of storing the input motion identifier (operation 840) can be an operation of storing the input motion identifier when the motion is driven at a predetermined motion speed. For example, the input motion identifier can be stored when the robot 110 drives the motion at a motion speed corresponding to one of constant speed or deceleration. As another example, the input motion identifier can be stored when the robot 110 drives the motion at a motion speed corresponding to deceleration. Through the above examples, the robot 110 can skip the input motion identifier without storing it in the memory when the motion is driven in an initial motion period (e.g., an acceleration period) of the entire operation period of the motion, thereby adjusting motion input processing.
[0103] According to an embodiment, the robot 110 can set a motion graph database. In this case, the robot 110 can set a motion of the robot, obtain a string corresponding to the set motion, and obtain a motion identifier based on the string. The robot 110 can obtain at least one set of motor values for each motion time frame corresponding to the set motion. The robot 110 can store a record in the motion graph database, wherein the record includes the motion identifier and the at least one set of motor values for each motion time frame.
[0104] Figure 9 A schematic flowchart of a method of operating an electronic device according to an embodiment is illustrated.
[0105] Reference will now be made to Figure 9 In operation 910 according to an embodiment, the electronic device 120 can receive a motion state corresponding to one of an active state or an idle state from the robot 110. Operation 910 can be performed before or after operation 920.
[0106] In operation 920 according to an embodiment, the electronic device 120 can obtain an input motion identifier based on a user input.
[0107] In operation 930 according to an embodiment, the electronic device 120 can determine whether the motion state is an active state. If the motion state is an active state, operation 940 can be performed, and if the motion state is not an active state (i.e., an idle state), operation 950 can be performed.
[0108] In operation 940 according to an embodiment, the electronic device 120 can store the input motion identifier.
[0109] In operation 950 according to an embodiment, the electronic device 120 can determine a motion identifier based on a predetermined criterion from at least one stored motion identifier. The predetermined criterion can correspond to one of a motion identifier set based on an external input, a motion identifier extracted the most, or a motion identifier stored most recently.
[0110] In operation 960 according to an embodiment, the electronic device 120 can transmit the determined motion identifier to the robot 110.
[0111] As described throughout the present disclosure, the electronic device 600, the robot 700, the electronic device 600, and a program executed by the robot 700 can be implemented with hardware components or software components and / or a combination of hardware components and software components. The program can be executed by any system capable of executing computer-readable instructions.
[0112] The software can include a computer program, code, instructions, or a combination of one or more of these, and can configure a processing unit to operate as needed or command the processing unit independently or collectively. The software can be implemented as a computer program including instructions stored in a computer-readable storage medium. The computer-readable recording medium can include, for example, a magnetic storage medium (e.g., a floppy diskette, a hard disk, etc.), a solid state storage medium (e.g., a read-only memory (ROM), a random access memory (RAM), etc.), an optically readable storage medium (e.g., a CD-ROM, a digital versatile disk (DVD), etc.), etc. The computer-readable recording medium can be distributed over network-connected computer systems, so that computer-readable code can be stored and executed in a distributed manner. The medium can be read by a computer, stored in a memory, and executed on a processor.
[0113] The computer readable storage medium can be provided in the form of a non-transitory storage medium. Here, the term "non-transitory" can merely imply that the storage medium does not include a signal and is tangible, and it does not distinguish whether data is semi-permanently or temporarily stored in the storage medium.
[0114] Further, the program according to an embodiment can be contained in a computer program product. The computer program product can be traded between a seller and a buyer as goods. The computer program product can include a software program and a computer readable storage medium storing the software program. For example, the computer program product can include a product (for example, a downloadable application) in the form of a software program that is electronically distributed through a manufacturer of such devices or an electronic market (for example, Google Play Store, App Store). For the electronic distribution, at least part of the software program can be stored in a storage medium or can be temporarily generated. In this context, the storage medium can be a storage medium of a server of the manufacturer, a server of the electronic market, or a storage medium of a relay server that temporarily stores the software program. TM Play Store, App Store) electronically distributed through a manufacturer of such devices or an electronic market (for example, Google
[0115] In a system composed of a server and a device, the computer program product can include a storage medium of the server or a storage medium of the device. Alternatively, in the case where a third device (for example, a smartphone) that is communicatively connected to the server or the device exists, the computer program product can include a storage medium of the third device. Alternatively, the computer program product can include a software program itself transmitted from the server to the device or the third device or from the third device to the device. In this case, one of the server, the device, and the third device can execute the computer program product to perform the method according to an embodiment. Further, two or more of the server, the device, and the third device can execute the computer program product so as to implement the method according to the disclosed embodiment in a distributed manner. For example, the server can execute the computer program product stored in the server to control the device that is communicatively connected with the server to perform the method according to an embodiment. As another example, the third device can execute the computer program product to control the device that is communicatively connected with the third device to perform the method according to an embodiment. When the third device executes the computer program product, the third device can download the computer program product from the server and execute the downloaded computer program product. Alternatively, the third device can execute the computer program product provided in a preloaded state to perform the method according to an embodiment.
[0116] As described above, although various embodiments have been described in particular reference to the embodiments disclosed and the accompanying drawings, it should be noted that various modifications and changes can be made by persons skilled in the art in light of the above description. For example, the techniques described thus far can be performed in a different order than described, and / or components such as the computer systems or modules described above can be coupled or combined in a different form than described, or can be replaced by other components or their equivalents, to achieve the appropriate and equivalent results.
Claims
1. A robot, comprising: At least one motor drives the robot to perform a predetermined movement; Memory, which stores a motion graph database and a program including one or more instructions; as well as At least one processor, electrically connected to the at least one motor and a memory, is configured to execute one or more instructions of a program stored in the memory to perform the following operations: The input motion identifier is obtained based on user input. The system identifies whether the robot is in a motion state that indicates whether it is performing a movement. Based on whether the robot is in an active motion state while performing motion, the input motion identifier is stored in the memory, and Based on whether the robot is in an idle state while performing a movement: Active motion identifiers are determined from at least one motion identifier stored in memory based on predetermined criteria; and The at least one motor is controlled based on the motion graph database to drive the robot to perform movements corresponding to active motion identifiers.
2. The robot according to claim 1, wherein, The predetermined standard corresponds to one of the motion identifiers set based on external input, the most frequently obtained motion identifiers, or the most recently stored motion identifiers.
3. The robot according to claim 1, further comprising one or more of the following: The communication interface is configured to receive input motion identifiers from electronic devices; or The input / output interface is configured to receive user input. in, User input includes voice, text, images, emojis, and gestures.
4. The robot according to claim 1, wherein, The motion graph database includes at least one record corresponding to each motion that the at least one motor can drive, and The at least one record includes at least one motion identifier and at least one set of motor values for each of the at least one motion identifier for each motion time frame.
5. The robot according to claim 1, wherein: The at least one motor is configured to drive the robot to perform the motion at a motion speed corresponding to one of acceleration, constant speed, or deceleration in each motion time frame based on at least one set of motor values obtained from a motion graph database using an active motion identifier; as well as The at least one processor is configured to be driven at a predetermined motion speed based on the at least one motor, and to store the input motion identifier in a memory.
6. The robot according to claim 1, further comprising: The input / output interface is configured to receive user input for setting the robot's motion and a string corresponding to the set motion. The at least one processor is further configured to execute one or more instructions of a program stored in memory to perform the following operations: Candidate motion identifiers are obtained from strings. Obtain at least one set of motor values for each motion time frame corresponding to the set motion, and Records are stored in a motion graph database, wherein the records include candidate motion identifiers and at least one set of motor values for each motion time frame.
7. An electronic device comprising: The input / output interface is configured to receive user input. The communication interface is configured to receive motion states from the robot that correspond to either an active state or an idle state. Memory, which stores programs including one or more instructions; as well as At least one processor, electrically connected to an input / output interface, a communication interface, and a memory, is configured to execute one or more instructions of a program stored in the memory to perform the following operations: The input motion identifier is obtained based on user input. Based on the fact that the motion state is active, the input motion identifier is stored in memory; as well as Based on the motion state being in an idle state: Active motion identifiers are determined from at least one motion identifier stored in memory based on predetermined criteria. as well as The active motion identifier is sent to the robot using the communication interface.
8. The electronic device according to claim 7, wherein, The predetermined standard corresponds to one of the motion identifiers set based on external input, the most frequently obtained motion identifiers, or the most recently stored motion identifiers.
9. A method for driving a robot, comprising: Obtain the input motion identifier based on user input; The system identifies whether the robot is in an active or idle state. Based on the motion state indicating whether the robot is in an active or idle state, the input motion identifier is stored. as well as Based on the motion state indicating whether the robot is in an active or idle state, it is in an idle state: Active motion identifiers are determined from at least one stored motion identifier based on predetermined criteria; as well as Motion is driven by a motion graph database and corresponds to active motion identifiers.
10. The method according to claim 9, wherein, The predetermined standard corresponds to one of the motion identifiers set based on external input, the most frequently obtained motion identifiers, or the most recently stored motion identifiers.
11. The method according to claim 9, wherein: Obtaining an input motion identifier based on user input includes one of the following: receiving a motion identifier determined based on user input from an electronic device or obtaining user input using an input / output interface; and User input includes voice, text, images, emojis, and gestures.
12. The method according to claim 9, wherein, The motion graph database includes at least one record corresponding to each motion that the at least one motor can drive, wherein the at least one record includes at least one motion identifier and at least one set of motor values for each of the at least one motion identifier for each motion time frame.
13. The method according to claim 9, wherein: The motion corresponding to the active motion identifier is driven by the following operation: based on at least one set of motor values for each motion time frame, the motion is driven at a motion speed corresponding to one of acceleration, constant speed or deceleration in each motion time frame; as well as The operation of storing input motion identifiers is based on the motion driven at a predetermined motion speed.
14. The method of claim 9, further comprising: Obtain user input for setting the robot's motion; Get the string corresponding to the set motion; Obtain candidate motion identifiers based on strings; Obtain at least one set of motor values for each motion time frame corresponding to the set motion; as well as Records are stored in a motion graph database, wherein the records include candidate motion identifiers and at least one set of motor values for each motion time frame.
15. A method of operating an electronic device, comprising: Receive a motion state from the robot, indicating either an active or idle state; Obtain the input motion identifier based on user input; Based on the active state of the motion state, the input motion identifier is stored; as well as Based on the motion state being in an idle state: Active motion identifiers are determined from at least one stored motion identifier based on predetermined criteria; as well as Send the active motion identifier to the robot.
Citation Information
Patent Citations
Communication robot and control program of communication robot
US20200130194A1