Patent Description:
Techniques are known to control the movement of robots and other apparatuses in such a way that the robots can imitate something users feel affection for, such as friends and pets. For example, Patent Literature <NUM> (Unexamined <CIT>) describes a dog-type robotic device that behaves like an actual pet when an external stimulus such as a user stroking, lifting, or talking is applied. The robotic device includes a movable part including a servo motor and/or the like (a driving unit), and such a behavior can be realized by moving the head or the like connected to a gear member or the like driven by the servo motor or the like.

Such a robotic device can be sometimes brutally handled by a child or other users, such as being thrown against a wall and/or accidentally dropped to the floor. In such a case, the robotic device may be subjected to an intense impact by a collision with the wall and/or floor, resulting in significant damage to the movable part and possibly causing the robotic device to fail.

<CIT> discloses a robot designed for reducing collision impacts during human interaction. The robot includes a robot controller including a joint control module. The robot includes a link including a rigid support element and a soft body segment coupled to the rigid support element, and the body segment includes a deformable outer sidewall enclosing an interior space. The robot includes a pressure sensor sensing pressure in the interior space of the link. A joint is coupled to the rigid support element to rotate or position the link. During operations, the robot controller operates the joint based on the pressure sensed by the pressure sensor. The robot controller modifies operation of the joint from a first operating state with a servo moving or positioning the joint to a second operating state with the servo operating to allow the joint to be moved or positioned in response to outside forces applied to the link.

<CIT> discloses a robot comprises: a movable part; a driving part that drives the movable part; a collision detecting part that detects a collision from a prescribed object; a motion producing part that produces a motion of the movable part to avoid a prescribed area including the prescribed object if the collision detecting part detects the collision; and a driving control part that controls the driving part on the basis of the motion produced by the motion producing part. <CIT> discloses a device control apparatus includes at least one processor that executes a program stored in at least one memory. The at least one processor sets growth degree data representing a simulated growth degree of a device, acquires character data representing a simulated character of the device, acquires other data related to the device, the other data being different from the character data, selectively sets a first movement mode based on the character data and a second movement mode based on the other data as a movement mode of the device according to the set growth degree data, and controls a movement of the device according to the set movement mode.

<CIT> discloses a robot that prevents fall and obstacle collision. In the timer unit, when a timer interrupt signal is output, a reset and start signal is simultaneously sent to the counter unit. If the count value "N" by the counter unit is counted before the movement control signal from the CPU unit to the movement control signal latch unit, a stop set signal is output from the counter unit to the movement control signal latch unit, causing the gear wheel unit to stop.

<CIT> discloses an apparatus control device includes: at least one processor; and at least one first memory that stores a program executed by the processor, in which the processor acquires input data based on at least one of acceleration and angular velocity generated by application of an external force to an apparatus, classifies a plurality of the acquired input data into a plurality of clusters by an unsupervised clustering method, acquires relationship data representing relationship between the acquired input data and the plurality of classified clusters, and controls movement of the apparatus based on the acquired relationship data.

The present disclosure is made in light of the above situation. An objective of the present disclosure is to provide a robot, a robot control method, and a program that can reduce damage to a movable part when subjected to an impact.

An aspect of an apparatus according to the present disclosure includes:.

According to the present disclosure, damage to a movable part when subjected to an impact can be suppressed.

A more complete understanding of this application can be obtained when the following detailed description is considered in conjunction with the following drawings, in which:.

The following describes an embodiment of the present disclosure with reference to the drawings. Note that the same or equivalent components in the drawings are denoted by the same reference numerals.

An embodiment in which the control device of an apparatus according to the present disclosure is applied to a robot <NUM> illustrated in <FIG> is described with reference to the drawings. The robot <NUM> according to the embodiment is a pet robot that imitates a small animal. In order to facilitate understanding, <FIG> denotes the directions of front, back, left, right, up-and-down. The following description proceeds with reference to these directions as necessary. The robot <NUM> is covered with an exterior <NUM> with eye-like decorative members <NUM> and bushy fur <NUM> as illustrated in <FIG>. The exterior <NUM> houses the housing <NUM> of the robot <NUM>. As illustrated in <FIG>, the housing <NUM> of the robot <NUM> includes a head <NUM>, a joint <NUM>, and a body <NUM> where the joint <NUM> couples the head <NUM> and the body <NUM>. Note that, in <FIG>, hatching patterns are omitted in view of facilitating visibility of the drawings.

The body <NUM> extends in the front-and-back direction as illustrated in <FIG>. The body <NUM> is loaded through the exterior <NUM> on a mounting surface <NUM>, such as a floor or a table, on which the robot <NUM> is placed. Also, as illustrated in <FIG>, a twist motor <NUM> is provided at the front end of the body <NUM>, and the head <NUM> is coupled to the front end of the body <NUM> through the joint <NUM>. The joint <NUM> is provided with an up-and-down motor <NUM>. Although the twist motor <NUM> is provided in the body <NUM> in <FIG>, the twist motor <NUM> may be provided in the joint <NUM> or may be provided in the head <NUM>.

The joint <NUM> couples the body <NUM> and the head <NUM> in such a way that the body <NUM> and the head <NUM> freely rotate (by the twist motor <NUM>) about a first rotational axis extending back and forth along the body <NUM> through the joint <NUM>. As illustrated in <FIG> and <FIG> as the front view of the housing <NUM>, the twist motor <NUM> causes the head <NUM> to rotate clockwise (right turn) relative to the body <NUM> within a range of forward rotation angle about the first rotational axis (forward rotation), or rotate counterclockwise (left turn) within a range of reverse rotation angle (reverse rotation). Note that the clockwise direction herein is the clockwise direction when viewed from the head <NUM> toward the direction of the body <NUM>. The clockwise rotation is also referred to as the "rightward twist" and the counterclockwise rotation as the "leftward twist. " The maximum value of the angle to be twisted to the right or left is arbitrary. However, in the present embodiment, the rotation angle is up to <NUM> degrees leftward and rightward. As illustrated in <FIG>, the angle of the head <NUM> in a state in which the head <NUM> is not twisted to the right or left (hereinafter, referred to as a "twist reference angle") is <NUM> degrees. The angle of the head <NUM> when twisted to the leftmost (rotated counterclockwise) is -<NUM> degrees, as illustrated in <FIG>. The angle of the head <NUM> when twisted to the rightmost (rotated clockwise) is +<NUM> degrees, as illustrated in <FIG>.

The joint <NUM> also connects the body <NUM> and the head <NUM> in such a way that the body <NUM> and the head <NUM> can rotate freely (by the up-and-down motor <NUM>) about a second rotational axis extending in the width direction (left-and-right direction) of the body <NUM> through the joint <NUM>. As illustrated in <FIG> and <FIG> as a side view of the housing <NUM>, the up-and-down motor <NUM> causes the head <NUM> to rotate upward (forward rotation) within a range of forward rotation angle about a second rotational axis, or rotate downward (reverse rotation) within a range of reverse rotation angle. The maximum value of the rotation angle upward or downward is arbitrary. However, in the present embodiment, the rotation angle is up to <NUM> degrees upward and downward. As illustrated in <FIG>, the angle of the head <NUM> in a state in which the head <NUM> is not rotated upward or downward (hereinafter, referred to as an "up-and-down reference angle") is <NUM> degrees. The angle of the head <NUM> when rotated to the highest position is +<NUM> degrees, as illustrated in <FIG>. The angle of the head <NUM> when rotated to the lowest position is -<NUM> degrees, as illustrated in <FIG>. Note that when the head <NUM> is rotated to or below the up-and-down reference angle due to up-and-down rotation about the second rotational axis, the head <NUM> can contact, through the exterior <NUM>, the mounting surface <NUM>, such as a floor or a table, on which the robot <NUM> is placed. Although <FIG> illustrates an example in which the first rotational axis and the second rotational axis are orthogonal to each other, the first and second rotational axes may not be orthogonal to each other.

The robot <NUM> also includes a touch sensor <NUM> in the head <NUM> in order to detect that a user has stroked or tapped the head <NUM>, as illustrated in <FIG>. The robot <NUM> also includes a touch sensor <NUM> in the body <NUM> in order to detect that a user has stroked or tapped the body <NUM>.

The robot <NUM> also includes an acceleration sensor <NUM> in the body <NUM> in order to detect a posture (orientation) of the robot <NUM> or to detect that the robot <NUM> has been lifted, turned, or thrown by a user. The robot <NUM> also includes a gyro sensor <NUM> in the body <NUM> in order to detect that the robot <NUM> is rolling or rotating.

The robot <NUM> also includes a microphone <NUM> in the body <NUM> in order to detect an external sound. In addition, the robot <NUM> includes a speaker <NUM> in the body <NUM> in order that the speaker <NUM> can be used to emit a sound (a sound effect) of the robot <NUM>.

Although the acceleration sensor <NUM>, the gyro sensor <NUM>, the microphone <NUM>, and the speaker <NUM> are provided in the body <NUM> in the present embodiment, all or some of these may instead be provided in the head <NUM>. Alternatively, in addition to the acceleration sensor <NUM>, gyro sensor <NUM>, microphone <NUM>, and speaker <NUM> provided in the body <NUM>, all or some of these may also be provided in the head <NUM>. Although the touch sensors <NUM> are provided in both the head <NUM> and the body <NUM>, a touch sensor <NUM> may be provided only in either the head <NUM> or the body <NUM>. Alternatively, a plurality of touch sensors <NUM> may be provided in one or both of the head <NUM> and the body <NUM>.

Next, the functional configuration of the robot <NUM> is described. The robot <NUM> includes, as illustrated in <FIG>, a control device <NUM> of the apparatus, an external stimulus acquirer <NUM>, a movable part <NUM>, an audio output <NUM>, an operation input <NUM>, and a power controller <NUM>. The control device <NUM> of the apparatus includes a controller <NUM>, a storage <NUM>, and a communicator <NUM>. In <FIG>, the control device <NUM> of the apparatus is connected to the external stimulus acquirer <NUM>, the movable part <NUM>, the audio output <NUM>, the operation input <NUM>, and the power controller <NUM> via a bus line BL, as an example. The control device <NUM> of the apparatus may be connected to the external stimulus acquirer <NUM>, the movable part <NUM>, the audio output <NUM>, the operation input <NUM>, and the power controller <NUM> via a wired interface such as a universal serial bus (USB) cable or a wireless interface such as Bluetooth (registered trademark) or the like. In addition, the controller <NUM> may be connected to the storage <NUM> and the communicator <NUM> via a bus line BL or the like.

The control device <NUM> of the apparatus controls the operation of the robot <NUM> by the controller <NUM> and the storage <NUM>.

The controller <NUM> includes, for example, a central processing unit (CPU) or the like, and executes various processing (robot control processing, fall detection processing, roll detection processing, pick-up detection processing, rotation detection processing, and/or the like) as described later by a program stored in the storage <NUM>. Note that the controller <NUM> is compatible with a multithreading function that executes a plurality of processes in parallel, and thus various types of processing (robot control processing, fall detection processing, roll detection processing, pick-up detection processing, rotation detection processing, and the like) as described later can be executed in parallel. In addition, the controller <NUM> includes a clock function, a timer function, and/or the like, and can time a date and time and/or the like.

The storage <NUM> includes a read-only memory (ROM), a flash memory, a random access memory (RAM), and/or the like. The ROM stores a program to be executed by the CPU of the controller <NUM> and other data that are a prerequisite for executing the program. The flash memory is a rewritable, non-volatile memory that stores data that should be retained even after the power is turned off. The RAM stores data that are created or modified during program execution.

The communicator <NUM> includes a communication module compatible with a wireless local area network (LAN), Bluetooth (registered trademark), and/or the like, and communicates data with an external device such as a smartphone. The details of data communication include, for example, alarm setting data and sleep setting data that are used to set an alarm function and a sleep function that are described later.

The external stimulus acquirer <NUM> includes the aforementioned touch sensor <NUM>, acceleration sensor <NUM>, gyro sensor <NUM>, and microphone <NUM>. The controller <NUM> obtains, via the bus line BL, detected values detected by various sensors equipped in the external stimulus acquirer <NUM> as external stimulus data representing an external stimulus acting on the robot <NUM>. Note that the external stimulus acquirer <NUM> may also include other sensors than the touch sensor <NUM>, the acceleration sensor <NUM>, the gyro sensor <NUM>, and the microphone <NUM>. By increasing the types of sensors equipped in the external stimulus acquirer <NUM>, the types of external stimuli that the controller <NUM> can obtain can be increased.

The touch sensor <NUM> detects that a certain object has come into contact. The touch sensor <NUM> includes, for example, a pressure sensor, a capacitance sensor, or the like. The controller <NUM> can obtain contact intensity and contact time based on the detected values from the touch sensor <NUM> in order to detect an external stimulus such as a user stroking or tapping the robot <NUM> based on these values.

The acceleration sensor <NUM> detects acceleration in three axis directions consisting of a front-and-back direction (X-axis direction), a width (left-and-right) direction (Y-axis direction), and an up-and-down direction (Z-axis direction) of the body <NUM> of the robot <NUM>. Since the acceleration sensor <NUM> detects gravitational acceleration when the robot <NUM> is stationary, the controller <NUM> can detect the current posture of the robot <NUM> based on the gravitational acceleration detected by the acceleration sensor <NUM>. Also, for example, when the user lifts or throws the robot <NUM>, the acceleration sensor <NUM> detects the acceleration associated with the movement of the robot <NUM> in addition to the gravitational acceleration. Accordingly, the controller <NUM> can detect the movement of the robot <NUM> by subtracting the gravitational acceleration component from the detected value detected by the acceleration sensor <NUM>.

The gyro sensor <NUM> detects an angular velocity when rotation is applied to the body of the robot <NUM>. Specifically, the gyro sensor <NUM> detects an angular velocity of the three-axis rotation consisting of a rotation about the front-and-back direction axis (X-axis direction), a rotation about the width (left-and-right) direction axis (Y-axis direction), and a rotation about the up-and-down direction (Z-axis direction) axis of the body <NUM>. The controller <NUM> can more accurately detect the motion of the robot <NUM> by combining the detected value detected by the acceleration sensor <NUM> with the detected value detected by the gyro sensor <NUM>.

Note that the touch sensor <NUM>, the acceleration sensor <NUM>, and the gyro sensor <NUM> are synchronized, and the intensity, acceleration, and angular velocity of a contact are detected at the same timing, and the detected values are output to the controller <NUM>. Specifically, the touch sensor <NUM>, the acceleration sensor <NUM>, and the gyro sensor <NUM> detect the intensity, acceleration, and angular velocity of a contact at the same timing, for example, every <NUM> seconds.

The microphone <NUM> detects sounds around the robot <NUM>. The controller <NUM> can detect, for example, a user calling the robot <NUM> or clapping hands, based on the sound component detected by the microphone <NUM>.

The movable part <NUM> is a mechanism for causing the robot <NUM> to perform a physical operation, and includes a driver such as a twist motor <NUM> and an up-and-down motor <NUM>, a coupling member, a gear member, and the like for transmitting the force of the driver in order to move the head <NUM> and the like. The movable part <NUM> (the twist motor <NUM> and the up-and-down motor <NUM>) is driven by the controller <NUM>. The twist motor <NUM> and the up-and-down motor <NUM> are servo motors that, when instructed by the controller <NUM> with a specified operation time and operation angle, operate to rotate to the specified operation angle by the specified operation time. As a result, the robot <NUM> can express operations such as, for example, lifting the head <NUM> (rotating the head <NUM> upward about the second rotational axis) or twisting the head <NUM> sideways (rotating the head <NUM> rightward or leftward about the first rotational axis). Motion data for driving the movable part <NUM> to express these operations are recorded in a control content table <NUM> as described later.

The audio output <NUM> includes a speaker <NUM> that outputs a sound when the controller <NUM> has input sound data into the audio output <NUM>. For example, when the controller <NUM> inputs sound data of the robot <NUM> to the audio output <NUM>, the robot <NUM> emits a simulated sound. The sound data are also recorded in the control content table <NUM> as sound effect data.

The operation input <NUM> includes, for example, an operation button and a volume knob. The operation input <NUM> is an interface for accepting an operation by a user (an owner or a borrower), for example, power on/off and volume adjustment of output sound.

The power controller <NUM> includes a sub microcomputer, a charging integrated circuit (IC), a power control IC, a power receiving unit, and/or the like, and charges the battery of the robot <NUM>, obtains a remaining power level, and controls the power supply of the robot <NUM>.

Next, emotion data <NUM>, emotion change data <NUM>, and a control content table <NUM> that are characteristic data of the present embodiment, are described sequentially among data stored in the storage <NUM> of the control device <NUM> of the apparatus.

The emotion data <NUM> are data for causing the robot <NUM> to show a simulated emotion. For example, the emotion data <NUM> are multidimensional data that individually quantify a comfort level (anxiety level), an excitement level (lethargic level), and/or the like.

The emotion change data <NUM> are data that indicate a simulated emotional change level of the robot <NUM> indicated by the emotion data <NUM>. For example, the emotion change data <NUM> are data indicating individual change amounts in the values of the comfort level (anxiety level) and excitement level (lethargy level) indicated by the emotion data <NUM>. Since the emotion change data <NUM> can tell the tendency of the simulated emotional change of the robot <NUM>, the emotion change data <NUM> can be said to be data representing the simulated character of the robot <NUM> (whether the robot <NUM> is shy, cheerful, active, spoiled, and/or the like).

Note that the emotion data <NUM> and the emotion change data <NUM> can adopt various types of data. For example, the emotion data <NUM> and the emotion change data <NUM> may be the types of data described in Unexamined <CIT>.

The control content table <NUM> stores control conditions and control data in association with each other, as illustrated in <FIG>. When a control condition (for example, a certain external stimulus is detected) is satisfied, the controller <NUM> controls the movable part <NUM> and the audio output <NUM> based on corresponding control data (motion data in order to express a movement by the movable part <NUM> and sound effect data in order to output a sound effect by the audio output <NUM>).

The motion data are a series of sequence data for controlling the movable part <NUM> (in the order of time (milliseconds), rotation angle (degrees) of the up-and-down motor <NUM>, and rotation angle (degrees) of the twist motor <NUM>), as illustrated in <FIG>. For example, when the body is stroked, the controller <NUM> controls the movable part <NUM> by setting the rotation angles of the up-and-down motor <NUM> and the twist motor <NUM> to <NUM> degrees (up-and-down reference angle and twist reference angle) at first (<NUM> seconds), raising the head <NUM> in such a way that the rotation angle of the up-and-down motor <NUM> becomes <NUM> degrees in <NUM> seconds, and twisting the head <NUM> in such a way that the rotation angle of the twist motor <NUM> becomes <NUM> degrees in <NUM> second.

Although, in <FIG>, a text explaining each sound effect data is described to facilitate understanding, in fact, the sound effect data themselves (the sampled sound data) explained by these texts are stored in the control content table <NUM> as sound effect data.

Although the control content table illustrated in <FIG> does not include a condition related to emotion (represented by the emotion data <NUM>) in the control conditions, the control data may be changed according to an emotion by including a condition related to emotion in the control conditions.

Next, robot control processing executed by the controller <NUM> of the control device <NUM> of the apparatus is described with reference to the flowchart illustrated in <FIG>. The robot control processing is processing in which the control device <NUM> of the apparatus controls an operation and sound of the robot <NUM> based on a detected value or the like from the external stimulus acquirer <NUM>. When a user turns on the robot <NUM>, the thread of the robot control processing is started in parallel with the various detection processing and the like described later. Through the robot control processing, the movable part <NUM> and the audio output <NUM> (sound output unit) are controlled, thereby expressing a movement and outputting audio such as a sound of the robot <NUM>.

First, the controller <NUM> initializes various types of data such as emotion data <NUM> and emotion change data <NUM> (step S101). Note that, for the second activation of the robot <NUM> and after, the values that were set at the time the robot <NUM> last turned off may be set at step S101. This can be achieved by the controller <NUM> storing the value of each data in the non-volatile memory (a flash memory or the like) of the storage <NUM> when the last power-off operation is performed, and then setting the stored value to the value of each data when the power is turned on.

Subsequently, the controller <NUM> initializes, to "<NUM>," the values of various stop flags (a fall stop flag, a roll stop flag, a pick-up stop flag, and a rotation stop flag) and various counters (a fall determination counter, a roll determination counter, a pick-up determination counter, a rotation detection counter, a fall stop counter, a roll stop counter, a pick-up stop counter, and a rotation stop counter) that are set and referred to in the various detection processing described later (fall detection processing, roll detection processing, pick-up detection processing, and rotation detection processing) (step S102).

Subsequently, the controller <NUM> determines whether or not the values of the various stop flags (the fall stop flag, the roll stop flag, the pick-up stop flag, and the rotation stop flag) are all "<NUM>" (step S103).

When not all values of the stop flags are "<NUM>," in other words, the value of a certain stop flag is "<NUM>" (step S103; No), an abnormal state of the robot <NUM> is detected in any of the various detection processing as described later. Accordingly, the controller <NUM> stands by until the values of all the stop flags become "<NUM>" without performing any subsequent steps of the robot control processing. As a result, the robot <NUM> will no longer perform an operation in response to a motion stimulus or a spontaneous operation such as breathing, indicating a state as if the animal has fainted (fainted state).

On the other hand, if all the values of the various stop flags are "<NUM>" (step S103; Yes), the controller <NUM> obtains a detected value detected by the external stimulus acquirer <NUM> (step S104). The controller <NUM> then determines whether or not any external stimulus was present based on the obtained detected value (step S105).

When an external stimulus was present (step S105; Yes), the controller <NUM> obtains emotion change data <NUM> according to the detected value of the external stimulus obtained at step S104 (step S106). Specifically, for example, when the touch sensor <NUM> of the head <NUM> detects that the head <NUM> has been stroked as an external stimulus, the robot <NUM> obtains a simulated comfort feeling, and thus the controller <NUM> obtains emotion change data <NUM> indicating an added amount to add to the value of comfort level included in the emotion data <NUM>.

The controller <NUM> then sets the emotion data <NUM> based on the emotion change data <NUM> obtained at step S106 (step S107). Specifically, for example, when an added amount of the value of a comfort level has been obtained as the emotion change data <NUM> at step S106, the controller <NUM> adds this added amount to the value of the comfort level included in the emotion data <NUM>.

Subsequently, the controller <NUM> refers to the control content table <NUM> and obtains control data associated with the control condition that is satisfied by the detected value of the obtained external stimulus (step S108).

The controller <NUM> then playbacks the control data obtained at step S108 (step S109) and returns to step S103. This allows the robot <NUM> to perform an operation in response to an external stimulus. Note that the content of the control data to be playbacked may be adjusted (changed) based on the set emotion data <NUM>.

On the other hand, at step S105, when there is no external stimulus (step S105; No), the controller <NUM> determines whether or not to perform a spontaneous operation (such as a breathing imitation operation that imitates breathing of a living thing) (step S110). Although the method of determining whether or not to perform the spontaneous operation is optional, in the present embodiment, the determination of step S110 is Yes and the breathing imitation operation is performed at each breathing cycle (for example, <NUM> seconds).

If a spontaneous operation is not performed (step S110; No), the controller <NUM> returns to step S103. If a spontaneous operation is performed (step S110; Yes), the controller <NUM> performs a spontaneous operation (for example, a breathing imitation operation) (step S111) and returns to step S103.

The control data of this spontaneous operation are also stored in the control content table <NUM> (for example, as indicated by "breathing cycle elapsed" in the "control condition" in <FIG>). Just as when the external stimulus was present, at step S111, the control content of the spontaneous operation may be adjusted (changed) based on the set emotion data <NUM>.

Next, detection processing for detecting various abnormal states (fall detection processing, roll detection processing, pick-up detection processing, and rotation detection processing) performed by the controller <NUM> of the control device <NUM> of the apparatus, is described with reference to the flowcharts illustrated in <FIG>. Each thread of the detection processing is interrupt processing that is repeatedly executed every <NUM> seconds in parallel with the robot control processing described above while the power is supplied to the robot <NUM>. The fall detection processing, roll detection processing, pick-up detection processing, and rotation detection processing are exclusively controlled, and two or more threads of detection processing are not executed simultaneously. Each thread of the detection processing detects an abnormal state (falling state, rolling state, pick-up state, rotating state) in which the robot <NUM> may be subjected to an impact, and, when an abnormal state is detected, the robot <NUM> is controlled in such a way that the movable part <NUM> suppresses the impact.

First, fall detection processing is described in detail with reference to <FIG>.

At first, the controller <NUM> determines whether or not the value of a fall stop flag is "<NUM>" (step S201).

If the value of the fall stop flag is not "<NUM>" (step S201; No), that is, "<NUM>", the controller <NUM> determines whether or not the value of a fall counter is "<NUM>" or more (step S202).

If the value of the fall counter is less than "<NUM>" (step S202; No), the controller <NUM> reads out the acceleration aX in the front-and-back direction (X-axis direction), the acceleration aY in the left-and-right direction (Y-axis direction), and the acceleration aZ in the up-and-down direction (Z-axis direction) of the robot <NUM> detected by the acceleration sensor <NUM> (step S203).

Then, the controller <NUM> calculates the value of an acceleration vector V obtained by synthesizing the read-out accelerations aX, aY, and aZ as indicated by the following equation (<NUM>) (step S204). [Math <NUM>] <MAT>.

Then, the controller <NUM> determines whether the calculated acceleration vector V is smaller than the acceleration threshold GT that is considered to be a free fall state in order to determine whether the robot <NUM> is free falling (step S205). In the case of a complete free fall, the acceleration vector V is <NUM>. However, since a rotational motion and the like may also be added during a free fall, it is desirable to set the acceleration threshold GT to a value with a certain margin (for example, a value of <NUM>/<NUM> of the gravitational acceleration).

If the acceleration vector V is smaller than the acceleration threshold GT (step S205; Yes), the controller <NUM> adds <NUM> to the value of the fall counter (step S206). Then the fall detection processing ends.

On the other hand, when the acceleration vector V is equal to or greater than the acceleration threshold GT (step S205; No), the robot <NUM> is not currently free falling, and thus the controller <NUM> initializes the values of the fall counter and the fall stop flag to "<NUM>" (step S207). Then, the fall detection processing ends.

When the value of the fall counter is "<NUM>" or more (step S202; Yes), that means the acceleration vector V is continuously determined to be less than the acceleration threshold GT in the last two or more threads of fall detection processing that have been repeatedly executed every <NUM> seconds, the robot <NUM> is determined to be in a falling state continuously for <NUM> seconds or more. Accordingly, the controller <NUM> sets the fall stop flag to "<NUM>" and initializes the fall counter and the fall stop counter to "<NUM>" (step S208). By setting the fall stop flag to "<NUM>," the procedure of the aforementioned robot control processing (<FIG>) stops, and control data playback processing in response to an external stimulus (step S109) and a spontaneous operation such as breathing (step S110) are no longer performed, and the robot <NUM> becomes in a state as if it has fainted (fainting state).

Returning to <FIG>, the controller <NUM> then controls the movable part <NUM> to be in a free state (step S209). Specifically, the controller <NUM> transmits a stop signal to the twist motor <NUM> and the up-and-down motor <NUM>. The twist motor <NUM> and the up-and-down motor <NUM> that received the stop signal stop driving, and the motors become in a free state in which no torque is applied to the motor even if a force is applied to rotate the motor from the outside (for example, in the case of a coil motor, the coil becomes in an open state). This makes it possible to reduce damage to the movable part <NUM> even if the robot <NUM> subsequently collides with a floor, a table, or the like due to the fall. For example, even if the head <NUM> collides with a floor, a table, or the like, the coupling member, gear member, and the like of the movable part <NUM> for moving the head <NUM> move freely in the direction in which the head <NUM> was impacted without resistance, as a result, preventing excessive force from being applied to these members and preventing damage to these members or the motors.

The controller <NUM> then outputs a screaming sound that a living thing the robot <NUM> imitates is expected to make during a fall from the audio output (S210), and the fall detection processing ends. Note that the controller <NUM> may differentiate the details of the screaming sound to be output in accordance with the simulated emotion and character of the robot <NUM>. For example, if the robot <NUM> has a shy character or has a lethargic emotion, the controller <NUM> may reduce the volume of the screaming sound or may not output the screaming sound.

On the other hand, if the value of the fall stop flag is "<NUM>" (step S201; Yes), the robot <NUM> is currently in a fainting state. Accordingly, the controller <NUM> carries out a control to recover the robot <NUM> from such a state. In other words, in this case, the controller <NUM> first adds "<NUM>" to the value of the fall stop counter. (step S211).

Then, the controller <NUM> determines whether or not the value of the fall stop counter is equal to or greater than "<NUM>" (step S212).

When the value of the fall stop counter is less than "<NUM>" (step S212; No), a sufficient amount of time (<NUM> seconds or more) has not elapsed since the robot control processing stopped (the robot <NUM> fainted) with the fall stop flag set to "<NUM>," and the fall detection processing ends without performing the recovery process because it is unnatural if the robot <NUM> as a living thing recovers at this timing.

On the other hand, when the value of the fall stop counter is "<NUM>" or more (step S212; Yes), a sufficient amount of time (<NUM> seconds or more) has elapsed since the robot control processing was stopped (the robot <NUM> fainted) with the fall stop flag set to "<NUM>. " Then, the controller <NUM> sets the fall stop flag and the fall stop counter to "<NUM>" (step S213). As a result, the robot control processing (<FIG>) resumes, playback of the control data in response to an external stimulus (step S109) and a spontaneous operation such as breathing (step S110) are performed, and the robot <NUM> behaves as if it has recovered from the fainting state. In addition, the twist motor <NUM> and the up-and-down motor <NUM> are appropriately driven by the execution of step S109 or step S110, and the free state of the movable part <NUM> is released. Then, the fall detection processing ends.

Next, roll detection processing is described with reference to <FIG> focusing on details that are different from the fall detection processing described above.

Roll detection processing is basically the same processing as the fall detection processing. However, the roll detection processing differs in that a rolling state is detected instead of a falling state of the robot <NUM>. Accordingly, in the roll detection processing, the angular velocity rX of the rotation about the front-and-back direction (X-axis direction) axis of the robot <NUM> is read out from the gyro sensor <NUM> (step S303). Then, when the absolute value of the angular velocity rX is greater than the rolling threshold RXT (step S305; Yes), the robot <NUM> is determined to be in a rolling state and the roll counter is incremented (step S306). The other steps are substantially the same as the fall detection processing, and thus descriptions thereof are omitted.

Next, pick-up detection processing is described with reference to <FIG> focusing on details that are different from the fall detection processing described above.

The pick-up detection processing is basically the same as the fall detection processing. However, the pick-up detection processing differs in that a pick-up state is detected instead of a falling state of the robot <NUM>. Accordingly, in the pick-up detection processing, the acceleration aZ in the up-and-down direction (Z axis direction) of the robot <NUM> is read out from the acceleration sensor (step S403). Then, when the value of the acceleration aZ is greater than the pick-up threshold GZT (step S405; Yes), the robot <NUM> is determined to be in a pick-up state and the pick-up counter is incremented (step S406). The other steps are substantially the same as the fall detection processing, and thus descriptions thereof are omitted.

Next, rotation detection processing is described with reference to <FIG> focusing on details that are different from the fall detection processing described above.

The rotation detection processing is basically the same as the fall detection processing. However, the rotation detection processing differs in that a rotating state is detected instead of a falling state of the robot <NUM>. Accordingly, in the rotation detection processing, the angular velocity rZ of the rotation about the up-and-down direction (Z-axis direction) axis of the robot <NUM> is read out from the gyro sensor <NUM> (step S503). Then, when the absolute value of the angular velocity rZ is greater than the rotation threshold RZT (step S505; Yes), robot <NUM> is determined to be in a rotating state and the rotation counter is incremented (step S506). The other steps are substantially the same as the fall detection processing, and thus descriptions thereof are omitted.

Thus, according to the control device <NUM> of the apparatus according to the present embodiment, when the robot <NUM> is determined to be likely to be subjected to an impact (when the robot <NUM> is determined to be in an abnormal state (any of a falling state, a rolling state, a pick-up state, or a rotating state)), the movable part <NUM> is transferred from an operable state (a first state) to a free state (a second state) for suppressing an impact exerted on the movable part <NUM>. This makes it possible to suppress damage to the movable part <NUM> when the robot <NUM> is subjected to an impact.

In addition, according to the control device <NUM> of the apparatus according to the present embodiment, when the robot <NUM> is determined to be likely to be subjected to an impact (when an abnormal state is detected), the movable part <NUM> is transferred to a free state, and an operation that does not require the movable part <NUM> is executed to imitate a reaction of a living thing to be made when subjected to an impact (for example, output of a screaming sound (a second operation) at step S210 of <FIG>, step S310 of <FIG>, step S410 of <FIG>, and step S510 of <FIG>). This makes it possible to better express the characteristic of the living thing and to notify a user in the vicinity of the occurrence of the abnormal state.

Furthermore, according to the control device <NUM> of the apparatus according to the present embodiment, when an abnormal state is detected, the robot control processing (<FIG>) stops with the stop flag set to "<NUM>. " This causes the robot <NUM> to be in a fainting state (an execution stop state) in which the execution of all operations (first operation), including operations that do not use the movable part <NUM> (for example, an operation of the audio output <NUM>), has stopped. As a result, it is possible to reproduce a behavior of a real living thing that has been shocked and fainted.

According to the control device <NUM> of the apparatus according to the present embodiment, after the first time (<NUM> seconds in the embodiment) has elapsed since the movable part <NUM> was transferred to the free state (the second state), the robot control processing resumes with the stop flag reset to "<NUM>," the movable part <NUM> transfers to the operable state (the first state), and the fainting state (the execution stop state) of the robot <NUM> is canceled. This makes it possible to reproduce a behavior like a real living thing that can recover and move after a period of time has elapsed after fainting.

In addition, according to the control device <NUM> of the apparatus according to the present embodiment, the number of times that an abnormal state detection condition is continuously satisfied is counted in each detection processing. Then, when the number of times is "<NUM>" or more, that is, when the robot <NUM> is continuously determined to be likely to be subjected to an impact within a predetermined time period (<NUM> seconds), the movable part <NUM> is controlled to be in a free state. This makes it possible to improve the accuracy of abnormal state detection.

Note that the present disclosure is not limited to the above-described embodiments, and various variations and applications are possible. For example, although, in the above embodiment, a falling state, a rolling state, a pick-up state, and a rotating state of the robot <NUM> have been detected as an abnormal state in which the robot <NUM> is likely to be subjected to an impact, the abnormal state is not limited thereto, and other states that are likely to lead to an impact in a short moment may be detected as abnormal states.

Although, in the above embodiment, when an abnormal state is detected, the movable part <NUM> is controlled to be in a free state as a state for reducing damage from an impact, the movable part <NUM> may be controlled to be in another state. For example, the movable part <NUM> may be controlled to be in an energy-saving operation mode, or the like, that makes output less than normal.

Although, in the above embodiment, the robot <NUM> can recover and resume all operations immediately after the first time (<NUM> seconds) has elapsed from the fainting state, the robot <NUM> may be controlled to gradually recover from the fainting state. Specifically, the controller <NUM> may cancel the fainting state (execution stop state) <NUM> seconds after the movable part <NUM> has been transferred to the free state by setting the stop flag to "<NUM>" while maintaining the free state of the movable part <NUM>, enabling operations other than those performed by the movable part <NUM> (for example, sound output from the audio output <NUM>) to be executed. Subsequently, after <NUM> seconds (the second time) have elapsed, the controller <NUM> may transfer the movable part <NUM> from the free state to the operable state (the first state) to enable all operations to be executed. This makes it possible to reproduce a behavior even more like a real living thing.

In the above embodiment, even when the robot <NUM> goes into a fainting state due to any of the abnormal states of the falling state, rolling state, pick-up state, and rotating state, the robot control processing resumes uniformly after <NUM> seconds (after the first time has elapsed), and the operation of the robot <NUM> is recovered. However, depending on the determined abnormal state, the length of time to recover from the fainting (the first time) may vary. This can be achieved by appropriately changing the value "<NUM>" to be compared with the stop counter at step S212 of <FIG>, step S312 of <FIG>, step S412 of <FIG>, and step S512 of <FIG>. The length of the second time described above may also vary depending on the determined abnormal state. In this way, the robot <NUM> can have variations for the timing of recovery from the abnormal state, making it possible to operate even more like a living thing.

The controller <NUM> may also be able to estimate the intensity of an impact the robot <NUM> is about to receive in detection processing (fall detection processing, roll detection processing, pick-up detection processing, and rotation detection processing). For example, the intensity of such an impact may be estimated from the degree of deviation between a detected value detected by the acceleration sensor <NUM> or the gyro sensor <NUM> and the threshold. The controller <NUM> may then control the robot <NUM> to vary the aforementioned first time or second time depending on the estimated intensity of the impact. This makes it possible to control the robot <NUM> to operate even more like a real living thing, for example, by increasing the first time and increasing the time to recover when a very fast rotating state is detected than when a slower speed rotating state is detected.

The controller <NUM> may also control the robot <NUM> to vary the length of the above-described first time or second time based on the set emotion data <NUM>. In this way, for example, when the set emotion data <NUM> indicates an emotion such as sadness, anxiety, or lethargy, the time to recover from an abnormal state is made longer than the normal emotion time by increasing the first time, making the robot <NUM> to operate even more like a real living thing.

In the above-described embodiment, the configuration is such that the control device <NUM> of the apparatus is embedded in the robot <NUM>, but the control device <NUM> of the apparatus may not be embedded in the robot <NUM>. For example, the control device <NUM> of the apparatus may be configured as a separate device (for example, a server) without being embedded in the robot <NUM>. In this case, the robot <NUM> also includes a communicator, and is configured in such a way that the communicator <NUM> of the control device <NUM> of the apparatus and the communicator of the robot <NUM> can transmit and receive data to and from each other. Then, the controller <NUM> obtains an external stimulus detected by the external stimulus acquirer <NUM> through the two communicators, and controls the movable part <NUM> and the audio output <NUM>.

Claim 1:
A robot (<NUM>) in which a head (<NUM>) is connected to a body (<NUM>) through a joint (<NUM>) to be driven by output from a motor (<NUM>, <NUM>), the head (<NUM>) being movable up and down or rotatable relative to the body (<NUM>) by driving of the joint (<NUM>), the robot (<NUM>) comprising a controller (<NUM>) configured to execute:
processing of causing the joint (<NUM>) to be driven at a predetermined first cycle by the output from the motor (<NUM>, <NUM>), to thereby cause the robot (<NUM>) to perform a simulated breathing operation;
processing of determining, through detection of an output value from an acceleration sensor (<NUM>) or a gyro sensor (<NUM>) that is included in the robot (<NUM>) at a predetermined second cycle, whether the robot (<NUM>) is in a state of falling or in a state of rotating at a speed equal to or higher than a predetermined speed; and
processing of, when the motor (<NUM>, <NUM>) is in an operable state, in a case where a determination is made that the robot (<NUM>) is in the state of falling or in a case where a determination is made that the robot (<NUM>) is in the state of rotating at the speed equal to or higher than the predetermined speed, transferring the motor (<NUM>, <NUM>) to a free state and causing the simulated breathing operation to be stopped, to thereby transferring the robot (<NUM>) to a simulated fainting state.