Patent Description:
The present disclosure relates to a controller apparatus, a controller apparatus controlling method, and a program.

There exists a controller apparatus furnished with a push-in button arranged to be movable between a predetermined first position and a predetermined second position. The push-in button biased in the first position can be pushed in the direction of the second position by a user's push-in operation.

This controller apparatus may also be furnished with a vibration mechanism coming into contact periodically with a back side of the push-in button (i.e., an opposite side of a side pushed in by the user) so as to vibrate the push-in button.

<CIT> discloses an operation device with a movable portion to which tactile force sense is presented. Moreover, vibration might be presented at the movable portion, the vibration having an intended width.

From <CIT>, a pachinko machine is known to comprise an operation switch unit. The operation switch unit includes a push button member, which enables a pushing operation. The pushing operation of the push button member is detected by an operation detection sensor. By the pushing operation of the push button member, moreover, a display performance corresponding to the operation is performed in a pattern display device. In this case, the operation switch unit comprises a transmission case housing a vibration motor. When the vibration motor is vibrating, the push button member is pushed and abuts against the transmission case so that the push button member vibrates.

<CIT> relates to an information processing apparatus that is connected to a device having a button that can be pressed within a prescribed movement range, the apparatus detecting the push-in position when the button is pressed, and being capable of presenting a resistance force against a pressing force of the button.

<CIT> describes a system that generates a haptic effect experienced at a user input element in response to the received position of the user input element. The peripheral device including a housing, a user input element, a haptic output device located within the housing and coupled to the user input element, and a haptic diminishment prevention component. The system further causes the haptic diminishing prevention component to create a range that the user input element can move within in response to the output force when the trigger is in a maximum open position outside of the range, or a maximum closed position outside of the range.

One problem with the above-mentioned controller apparatus incorporating the existing vibration mechanism is that with the push-in button moved to the second position, activating the vibration mechanism can propagate vibration to various components of the controller apparatus in a manner generating an unintended vibration noise.

The present disclosure has been devised in view of the above circumstances, and it is desirable to provide a controller apparatus, a controller apparatus controlling method, and a program for suppressing the generation of an unintended vibration noise.

The problem is solved by the subject-matter of the independent claims.

According to an embodiment of the present disclosure, there is provided a controller apparatus including a vibrating body movable within a predetermined movable range as defined by claim <NUM>.

According to another embodiment of the present disclosure, there is provided a controller apparatus controlling method as defined by claim <NUM>.

According to a further embodiment of the present disclosure, there is provided a program as defined by claim <NUM>.

According to the embodiments of the present disclosure, the generation of an unintended vibration noise is suppressed.

A preferred embodiment of the present disclosure is described below with reference to the accompanying drawings. As depicted in <FIG>, a controller apparatus <NUM> according to the embodiment of the present disclosure includes a main body section <NUM>, grips <NUM> that extend from both sides of the main body section <NUM> to the front side of the main body section <NUM>, an operation section <NUM> arranged on the main body section <NUM>, a vibration presentation section <NUM>, and a circuit section <NUM>. The controller apparatus <NUM> sends and receives operation-related information to and from an information processing apparatus <NUM>.

The operation section <NUM> of the controller apparatus <NUM> in this embodiment includes a push-in button <NUM> to be pushed for operation by a user. The operation section <NUM> may also include other buttons and controls such as joysticks to be tilted for operation as well as arrow keys. As an example here of the embodiment, the push-in button <NUM> is positioned to be operable with the index finger or the middle finger of the user holding the grips <NUM> of the controller apparatus <NUM> with the balls of the thumbs, little fingers, and ring fingers.

The push-in button <NUM> is formed to be substantially columnar. The push-in button <NUM> has an external surface 131F exposed outside a housing and touched by the user's fingertip, and a back surface 131B that is located inside the housing and has its normal line in parallel or substantially parallel (within a predetermined range of angles relative to the parallel) with the push-in direction.

In this example of the embodiment, when not operated by the user, the push-in button <NUM> has its external surface 131F forced into a default position typically by an elastic body. When pushed into the housing of the controller apparatus <NUM> by the user, the external surface 131F moves into the housing up to a limit position defined by a mechanically predetermined range.

The push-button <NUM> electrically detects its pushed-in position and outputs information indicative of the detected pushed-in position to the circuit section <NUM>. The method of detecting the pushed-in position involves using various well-known sensors and thus will not be discussed further.

Here, the pushed-in position is represented by the position of the back surface 131B of the push-in button <NUM> as depicted in <FIG>. It is assumed that a first position Pa denotes the position of the back surface 131B at the time the external surface 131F is in the default position and that a second position Pb stands for the position of the back surface 131B at the time the external surface 131F is pushed into the housing up to the limit position. Thus the position of the push-in button <NUM> is between the first position Pa and the second position Pb, i.e., within the stroke of the button <NUM> (moving range R).

The vibration presentation section <NUM> vibrates the push-in button <NUM>, thereby presenting the user operating the push-in button <NUM> with vibration. A specific configuration and operations of the vibration presentation section <NUM> will be discussed later.

The circuit section <NUM> receives from the operation section <NUM> information indicative of the details of operation performed by the user on the controller apparatus <NUM>. The circuit section <NUM> outputs the received information to the information processing apparatus <NUM>. In one example of this embodiment, as depicted in <FIG>, the circuit section <NUM> includes a processor <NUM>, a storage section <NUM>, and a communication section <NUM>.

Here, the processor <NUM> is a program-controlled device that operates in accordance with programs held in the storage section <NUM>. In this embodiment, the processor <NUM> receives from the operation section <NUM> information indicative of operation details including the push-in amount of the push-in button <NUM> in the operation section <NUM>. The processor <NUM> outputs the received information regarding the operation details to the information processing apparatus <NUM>. The processor <NUM> further controls the vibration presentation section <NUM>. The operation of the processor <NUM> will be discussed later in detail.

The storage section <NUM> is a memory device that holds the programs to be executed by the processor <NUM>. The storage section <NUM> also acts as a work memory for the processor <NUM>.

The communication section <NUM> sends and receives information to and from the information processing apparatus <NUM> by wire or wirelessly. That is, under instructions input from the processor <NUM>, the communication section <NUM> outputs information indicative of processing details to the information processing apparatus <NUM>. The communication section <NUM> further outputs to the processor <NUM> diverse information received from the information processing apparatus <NUM>.

In an example of this embodiment, the controller apparatus <NUM> may further include a tilt sensor (not depicted), push switches, and joysticks to be tilted for operation. In this case, the processor <NUM> sends to the information processing apparatus <NUM> the information indicative of the operation details including the posture of the controller apparatus <NUM> detected by the tilt sensor (tilt angle information) as well as information regarding push switch and joystick operations.

A typical configuration and operations of the vibration presentation section <NUM> are explained below. In this embodiment, the vibration presentation section <NUM> vibrates the push-in button <NUM> to present the user operating the push-in button <NUM> with vibration. In a specific example, as depicted in <FIG>, the vibration presentation section <NUM> includes an actuator <NUM> and an arm <NUM> (corresponding to a vibrating body of the present disclosure) rotated by the actuator <NUM>.

Here, the actuator <NUM> is controlled by the processor <NUM> in the circuit section <NUM>. The actuator <NUM> has a rotating shaft 141r furnished with the arm <NUM> extending in the direction of a circumference tangent of the shaft. Under instructions input from the processor <NUM>, the actuator <NUM> rotates the arm <NUM> in a designated direction around the rotating shaft 141r. The actuator <NUM> further includes an encoder that acquires information regarding a rotation angle θ of the rotating shaft 141r relative to a reference angle in a predetermined reference state (e.g., in which the arm <NUM> is fully retracted into the housing). The actuator <NUM> outputs the rotation angle information to the processor <NUM>.

In this embodiment, by the operation of the actuator <NUM>, a tip of the arm <NUM> moves in a range overlapping with a moving range (movement trajectory) R of the back surface 131B of the push-in button <NUM> depicted in <FIG>. Specifically, on the underside (into the housing), the tip of the arm <NUM> has its limit position located in a position Px further into the housing past the second position Pb. On the upper side (on the side of the button <NUM>), the tip of the arm <NUM> has its limit position located in a position Py further into the housing past the first position Pa.

Thus, in this embodiment, a moving range Px-Py of the arm <NUM> as the vibrating body (i.e., vibrating body moving range) overlaps partially with the moving range R of the push-in button <NUM> (its back surface 131B).

The operation of the processor <NUM> is explained next. In this embodiment, the processor <NUM> is connected communicably with the information processing apparatus <NUM> by wire or wirelessly. When acting in accordance with the programs held in the storage section <NUM>, the processor <NUM> functionally implements a configuration that includes a reception section <NUM>, a detection section <NUM>, and a vibration control section <NUM> as depicted in <FIG>.

The reception section <NUM> receives an instruction to generate vibration (vibration instruction) from the information processing apparatus <NUM>, and outputs the received instruction to the vibration control section <NUM>. This instruction includes vibration strength information indicative of the strength of the vibration. The reception section <NUM> further receives an instruction to end vibration (vibration end instruction) from the information processing apparatus <NUM>, and outputs the received instruction to the vibration control section <NUM>.

The detection section <NUM> receives information regarding the position within the moving range R of the back surface 131B of the push-in button <NUM> used as an operating member, detects the position Q of the back surface 131B of the push-in button <NUM>, and outputs the information indicative of the detected position Q.

The vibration control section <NUM> gives vibration to the push-in button <NUM> by controlling the rotational position and vibration of the actuator <NUM> in the vibration presentation section <NUM> in accordance with the vibration instruction received by the reception section <NUM> for vibration generation and with the information regarding the position of the push-in button <NUM> (the position of its back surface 131B) detected by the detection section <NUM>.

Specifically, upon receipt of the vibration instruction by the reception section <NUM>, the vibration control section <NUM> in this embodiment controls the rotational position of the actuator <NUM> in such a manner that the arm <NUM> comes into contact with the position Q of the back surface 131B of the push-in button <NUM> detected by the detection section <NUM>.

In an example of this embodiment, the vibration control section <NUM> obtains information regarding the position of the arm <NUM> on the basis of the rotation angle information regarding the rotating shaft 141r, the information being output by the actuator <NUM> (in the ensuing description, the position of the arm <NUM> refers to a point 142p that is part of the tip of the substantially columnar arm <NUM> and is closest to an outer circumference of the housing). In keeping with the information indicative of the position of the back surface 131B of the push-in button <NUM> (within the moving range R) and indicative of the position of the arm <NUM> (corresponding to the rotational position of the actuator <NUM>), the vibration control section <NUM> generates position range information quantitatively representing each of <NUM> stages (P0 to P9 in <FIG>) in which the moving range R and the movable range of the arm <NUM> overlap with each other.

Then, the vibration control section <NUM> controls the rotational position of the actuator <NUM> in such a manner that when the position Q of the back surface 131B of the push-in button <NUM> detected by the detection section <NUM> is in the quantified position stage P4, for example, the arm <NUM> is moved to a target position inside the position stage P4 (e.g., to the center of the position stage P4).

While controlling an amplitude of the rotation angle of the actuator <NUM> on the basis of the vibration strength information included in the vibration instruction received by the reception section <NUM>, the vibration control section <NUM> causes the actuator <NUM> to reciprocate continuously across the controlled amplitude in a manner causing the arm <NUM> to also reciprocate continuously across that amplitude. As a result, the arm <NUM> enters a vibrating state (under vibration control). At this point, the amplitude of the rotation angle is within the range between two angles: the angle at which the position of the arm <NUM> is rotated by θa from a target angle θt corresponding to the above-mentioned target position in the direction in which the arm <NUM> is caused to approach a position Px (in the direction in which the arm <NUM> is retracted into the housing) on one hand, and the angle at which the position of the arm <NUM> is rotated by θb from the target angle θt in the direction in which the arm <NUM> is caused to approach a position Py (in the direction in which the push-in button <NUM> is pushed up) on the other hand. Here, the angle θa is set using a monotonically increasing function in which, given a strength value "s" represented by the vibration strength information received by the reception section <NUM>, the angle θa is set for θa = α·s (α is an experimentally determined positive constant), for example. The angle θb may be a predetermined value. Alternatively, as with the angle θa, the angle θb may be set using a monotonically increasing function in which, given the strength value "s," the angle θb is set for θb = β-s (as with α, β is an experimentally determined positive constant), for example.

When controlling the vibration of the arm <NUM>, the vibration control section <NUM> initially sets, for example, θt - θa as the target angle for the actuator <NUM>. Thereafter, whenever the actuator <NUM> stops rotating or every time the actuator <NUM> reaches the target position, the vibration control section <NUM> sets θt + θb or θt - θa alternately as the target angle for the actuator <NUM> and causes the actuator <NUM> to reciprocate accordingly.

The vibration control section <NUM> vibrates the arm <NUM> continuously until the reception section <NUM> receives the vibration end instruction to terminate vibration. While continuing the vibration, the vibration control section <NUM> repeatedly acquires the information regarding the position of the push-in button 131B detected by the detection section <NUM>. Every time the position information is changed, the vibration control section <NUM> controls the rotational position of the actuator <NUM> in a manner bringing the arm <NUM> into contact with the changed position for continuous vibration.

One thing characterizing this embodiment is that when in a state where predetermined conditions are satisfied, the vibration control section <NUM> controls the vibration of the arm <NUM> in a manner correcting the vibration designated by the vibration instruction received by the reception section <NUM> (e.g., the vibration is controlled on the basis of the strength value obtained by correcting the vibration strength value represented by the vibration strength information).

The conditions here may include one specifying that the back surface 131B of the push-in button <NUM> as one operating member be in a position stage close to the second position Pb (i.e., the above-mentioned position stage P9). That is, in this example of the embodiment, while the arm <NUM> is being vibrated, for example, moving the back surface 131B of the push-in button <NUM> to a position within the position stage P9 (i.e., the user pushes the push-in button <NUM> into a position close to the limit) causes the vibration control section <NUM> to control the vibration of the arm <NUM> with a strength obtained by correcting the designated vibration strength.

The correction of the vibration strength may alternatively involve causing the strength value represented by the designated vibration strength information to be multiplied by a parameter defined by a predetermined function. For example, this function is determined for each different condition. Given a condition specifying that the back surface 131B of the push-in button <NUM> be in a position P (position stage P9 in the above-mentioned <NUM>-stage position range) close to the second position Pb, the function may be a monotonic function of the position P such that the smaller the difference is between the position P of the back surface 131B of the push-in button <NUM> on one hand and the position Pb as the most pushed-in position of the back surface 131B of the push-in button <NUM> on the other hand, the closer the parameter is to "<NUM>," and that the larger the difference becomes, the closer the parameter is to "<NUM>" (wherever the position, the value is between "<NUM>" and "<NUM>" inclusive). The value of the strength is corrected by multiplying the strength value designated by the vibration strength information, by the parameter defined by the monotonic function of the position P.

In this example of the correction, the user pushes in the push-in button <NUM>. With the back surface 131B of the push-in button <NUM> within the position stage P9, the user further pushes in the push-in button <NUM>. The vibration of the arm <NUM> is then controlled in such a manner that the closer the back surface 131B is to the limit position, the smaller the strength becomes with which the arm <NUM> is vibrated than the vibration strength designated by the information processing apparatus <NUM>. This makes it possible to sufficiently reduce the vibration when the push-in button <NUM> is pushed to its limit position, which prevents the vibration from propagating to various components of the controller apparatus <NUM> and inhibits an unintended vibration noise from being generated.

It has been explained above that the condition specifies that the back surface 131B of the push-in button <NUM> be in the position P close to the second position Pb (within the position stage P9). However, this is not limitative of the condition in which the vibration is corrected with this embodiment.

For example, in this embodiment, the vibration may be corrected on the condition that when the arm <NUM> is controlled to be vibrated, the push-in button <NUM> is operated and moved by the user from the current position.

Specifically, given the vibration instruction in this embodiment, the vibration control section <NUM> controls the rotational position of the actuator <NUM> in such a manner that the tip of the arm <NUM> is moved to the position Q of the back surface 131B of the push-in button <NUM> detected by the detection section <NUM>.

That is, the vibration control section <NUM> sets the target position to which to move the tip of the arm <NUM> at the position Q of the back surface 131B of the push-in button <NUM>. The vibration control section <NUM> further sets the target angle at the rotation angle θt of the actuator <NUM> at the time the arm <NUM> is rotated until its tip reaches the target position. Then, on the basis of information regarding the current rotation angle and the target angle output by the actuator <NUM>, the vibration control section <NUM> controls the rotation direction and rotation velocity (typically represented by the current supplied to the actuator <NUM>) of the actuator <NUM>. This control may be implemented using a common feedback control scheme and thus will not be discussed further.

The vibration control section <NUM> repeatedly references the rotation angle information output by the actuator <NUM> at predetermined timing intervals. When the rotation angle output by the actuator <NUM> reaches the target angle within a predetermined time period after the start of control, the target angle θt for the rotation angle of the actuator <NUM> is updated by θt + Δθ. Again, under feedback control, the tip of the arm <NUM> is moved. Here, the angle Δθ is to be determined beforehand.

In the case where, despite the control over the rotation direction and rotation velocity, the rotation angle output by the actuator <NUM> fails to reach the target angle within a predetermined time period after the start of control (i.e., the position Q of the back surface 131B of the push-in button <NUM> is closer to the second position than to the position of the tip of the arm <NUM> rotated to the target angle, so that the tip of the arm <NUM> comes into contact with the push-in button <NUM> and stops at the position Q), the vibration control section <NUM> switches from feedback control to a control scheme (vibration control) under which the vibration control section <NUM> controls the rotation angle amplitude of the actuator <NUM> on the basis of the vibration strength information included in the vibration instruction received by the reception section <NUM>. In so doing, the vibration control section <NUM> causes the actuator <NUM> to continuously reciprocate across the amplitude, causing likewise the arm <NUM> to continuously reciprocate across the amplitude.

At the start of vibration control, the vibration control section <NUM> retains the position of the arm <NUM> (rotation angle of the actuator <NUM>) as an initial position θs. Initially, the correction value λ of the amplitude is set for λ = λmin, where λmin is a value of <NUM> or larger and smaller than <NUM>.

The vibration control section <NUM> vibrates the tip of the arm <NUM> (under vibration control) by setting the actuator <NUM> to rotate reciprocatingly between two angles: the angle at which the actuator <NUM> is rotated by λ·θb from the initial position θs in the direction in which the push-in button <NUM> is pushed up (i.e., θs + λ·θb) on one hand, and the angle at which the actuator <NUM> is rotated by λ·θa from the initial position θs into the housing (i.e., θs - λ·θa) on the other hand.

By referencing the rotation angle output by the actuator <NUM> under vibration control, the vibration control section <NUM> obtains a rotation angle θu on the upper side when the arm <NUM> is most outside the housing (close to the first position). When the rotation angle θu satisfies the relation θs - θu > θth (where θth is a positive threshold value) (i.e., when, after the start of vibration, the push-button <NUM> is pushed into the housing by more than a predetermined movement amount), the vibration control section <NUM> assumes that the amplitude correction value λ is set for λ = <NUM>, and sets the actuator <NUM> to rotate reciprocatingly between two angles: the angle at which the actuator <NUM> is rotated by λ·θb from the rotation angle θu in the direction in which the push-in button <NUM> is pushed up (i.e., θu + λ·θb) on one hand, and the angle at which the actuator <NUM> is rotated by λ·θa from the rotation angle θu into the housing (i.e., θu - λ·θa) on the other hand.

Meanwhile, when the relation <NUM> ≤ θs - θu ≤ θth is satisfied, the vibration control section <NUM> assumes that the amplitude correction value λ is set for λ = f(θs - θu), where f(x) is a monotonically increasing function with respect to "x. " Given x > θth, then f(x) = <NUM>, where f (<NUM>) = λmin.

The vibration control section <NUM> then sets the actuator <NUM> to rotate reciprocatingly between two angles: the angle at which the actuator <NUM> is rotated by λ·θb from the rotation angle θu in the direction in which the push-in button <NUM> is pushed up (i.e., θu + λ·θb) on one hand, and the angle at which the actuator <NUM> is rotated by λ·θa from the rotation angle θu into the housing (i.e., θu - λ·θa) on the other hand.

That is, in this embodiment, when the push-in button <NUM> is to be presented with vibration by vibrating the arm <NUM>, the vibration control section <NUM> retains, as initial position information, the information regarding the position of the arm <NUM> corresponding to the position of the push-in button <NUM> in the vibration start position (the information used in the above example is the rotation angle of the actuator <NUM> in a position where the arm <NUM> is in contact with the push-in button <NUM>). The further the push-in button <NUM> is pushed beyond the position designated by the initial position information, the larger the vibration amplitude (strength) is made. Also, the closer the arm <NUM> is to the initial position, the smaller the vibration amplitude (strength) becomes.

In this manner, it is possible to suppress the noise generated when the vibration is presented in a state where the user's fingertip is leaving the push-in button <NUM> (the state in which the push-in button <NUM> is returning to the first position from the pushed-in position, i.e., the state where the push-in button <NUM> is pushed further from the initial position, before returning to the initial position).

The controller apparatus <NUM> of this embodiment in the above configuration operates as explained below. In an example that follows, the controller apparatus <NUM> sets the amplitude θa of the arm <NUM> using a monotonically increasing function in which, given the vibration strength "s" designated by the information processing apparatus <NUM>, the amplitude θa is monotonically increased for θa = α·s (α is an experimentally determined positive constant) except at the start of vibration or except when the push-in button <NUM> is pushed to the limit (with the back surface 131B reaching a position within the position stage P9).

Initially, it is assumed that the user grips the controller apparatus <NUM> and pushes the push-in button <NUM> until its back surface 131B reaches the position Q within the position stage P4. At this time, a game application running on the information processing apparatus <NUM> performs a process of outputting a vibration instruction including the vibration strength information specifying that vibration be generated with a predetermined strength "s. " Upon receipt of the vibration instruction, the processor <NUM> operates as follows:
The processor <NUM> detects that the back surface 131B of the push-in button <NUM> is in the position Q. The processor <NUM> then sets the target position of the arm <NUM> at the position Q of the back surface 131B of the push-in button <NUM>. The processor <NUM> further sets as the target angle the rotation angle θt of the actuator <NUM> at the time the arm <NUM> reaches the target position. The processor <NUM> then performs feedback control such that the rotation direction and rotation velocity of the actuator <NUM> are controlled on the basis of the information regarding the current rotation angle and the target angle output by the actuator <NUM>.

The processor <NUM> repeatedly references the rotation angle information output by the actuator <NUM> at predetermined timing intervals. When the rotation angle output by the actuator <NUM> reaches the target angle θt within a predetermined time period after the start of feedback control, the processor <NUM> sets the amplitude correction value λ for λ = λmin, and vibrates the tip of the arm <NUM> (under vibration control) by setting the actuator <NUM> to rotate reciprocatingly between two angles: the angle at which the actuator <NUM> is rotated by λ·θb from the target angle θt in the direction in which the push-in button <NUM> is pushed up (i.e., θs + λ·θb) on one hand, and the angle at which the actuator <NUM> is rotated by λ·θa from the initial position θs into the housing (i.e., θs - λ·θa) on the other hand.

Thereafter, by referencing the rotation angle output by the actuator <NUM> under vibration control, the processor <NUM> obtains the rotation angle θu on the upper side when the arm <NUM> is most outside the housing (close to the first position). When the rotation angle θu satisfies the relation θs - θu > θth (where θth is a positive threshold value), the processor <NUM> assumes that the amplitude correction value λ is set for λ = <NUM>, and sets the actuator <NUM> to rotate reciprocatingly between two angles: the angle at which the actuator <NUM> is rotated by λ·θb from the rotation angle θu in the direction in which the push-in button <NUM> is pushed up (i.e., θu + λ·θb) on one hand, and the angle at which the actuator <NUM> is rotated by λ·θa from the rotation angle θu into the housing (i.e., θu - λ·θa) on the other hand. Meanwhile, when the relation <NUM> ≤ θs - θu ≤ θth is satisfied, the processor <NUM> sets the amplitude correction value λ for λ = f(θs - θu), where f(x) is a monotonically increasing function with respect to "x. " Given x > θth, then f(x) = <NUM>, where f(<NUM>) = λmin.

The processor <NUM> then sets the actuator <NUM> to rotate reciprocatingly between two angles: the angle at which the actuator <NUM> is rotated by λ·θb from the rotation angle θu in the direction in which the push-in button <NUM> is pushed up (i.e., θu + λ·θb) on one hand, and the angle at which the actuator <NUM> is rotated by λ·θa from the rotation angle θu into the housing (i.e., θu - λ·θa) on the other hand.

Under the above control, in the state where the user is pushing the external surface 131F of the push-in button <NUM> with the fingertip (i.e., where the external surface 131F is under the force of the fingertip), the push-in button <NUM> is moved into the housing from a position equivalent to the initial position, the correction value λ is monotonically increased, and the vibration is increased accordingly. When the push-in button <NUM> is pushed by more than a predetermined push-in amount from the position equivalent to the initial position, then the correction value λ is set for λ = <NUM>, so that the predetermined vibration is presented.

Thereafter, when the user stops pushing the push-in button <NUM> (or reduces the pushing force), the push-in button <NUM> returns to the position equivalent to the initial position, the correction value λ is monotonically decreased, and the vibration is reduced accordingly. When the push-in button <NUM> is moved close to the default position beyond the position equivalent to the initial position, the vibration is not presented.

Thus, in the state where the user's fingertip does not act as a vibration damper (i.e., the state in which the user's fingertip is not fully in contact with the push-in button <NUM>), the vibration is reduced and the generation of noise is suppressed.

Suppose that the user pushes the push-in button <NUM> until its back surface 131B reaches the position P within the position stage P9, and then pushes the push-in button <NUM> further to the limit (with the back surface 131B of the push-in button <NUM> reaching the second position Pb). During this time, a game application running on the information processing apparatus <NUM> may perform a process of outputting a vibration instruction including the vibration strength information specifying that vibration be generated with a predetermined strength "s. " Upon receipt of the vibration instruction, the processor <NUM> operates as follows:
The processor <NUM> detects that the back surface 131B of the push-in button <NUM> is in the position Pb. The processor <NUM> then sets the target position of the arm <NUM> at the position P of the back surface 131B of the push-in button <NUM>. The processor <NUM> further sets as the target angle the rotation angle θt of the actuator <NUM> at the time the arm <NUM> reaches the target position. The processor <NUM> then performs feedback control such that the rotation direction and rotation velocity of the actuator <NUM> are controlled on the basis of the information regarding the current rotation angle and the target angle output by the actuator <NUM>.

The processor <NUM> repeatedly references the rotation angle information output by the actuator <NUM> at predetermined timing intervals. When the rotation angle output by the actuator <NUM> reaches the target angle θt within a predetermined time period after the start of feedback control, the processor <NUM> thereupon switches from feedback control to determination of the rotation angle amplitude of the actuator <NUM> on the basis of the vibration strength information included in the received vibration instruction.

Specifically, the smaller the difference is between the position P of the back surface 131B of the push-in button <NUM> on one hand and the position Pb constituting the most pushed-in position of the back surface 131B of the push-in button <NUM> on the other hand, the closer the value of a monotonic function g(P) of the position P is to "<NUM>" (this is a function whose value is between "<NUM>" and "<NUM>" inclusive, wherever the position), and the larger the difference, the closer the value of the function is to "<NUM>. " The value of the vibration strength is corrected by multiplying the monotonic function g(P) of the position P by the value "s" of the strength designated by the vibration strength information.

That is, the amplitude θa is set for θa = α·g(P)·s.

The processor <NUM> then establishes the amplitude between two angles: the angle at which the position of the arm <NUM> is rotated by θb from the target angle θt in the direction in which the push-in button <NUM> is pushed up (i.e., θt + θb) on one hand, and the angle at which the position of the arm <NUM> is rotated by θa, determined by the above-described method, from the target angle θt into the housing (i.e., θt - θa) on the other hand. Control (vibration control) is performed such that the actuator <NUM> is caused to continuously reciprocate across this amplitude range, causing the arm <NUM> to vibrate. The amount θb is a predetermined value.

Here, the processor <NUM> determines, during vibration control, whether or not the rotation angle θ output by the actuator <NUM> becomes larger than a predetermined threshold value θh (<NUM> < θh ≤ θb) in the direction in which the push-in button <NUM> is pushed up from the previously set target angle θt (i.e., whether or not the relation θ > θt + θh is satisfied).

In this example, it is assumed that the rotation angle θ output by the actuator <NUM> does not exceed the predetermined threshold value θh in the direction in which the push-in button <NUM> is pushed up from the target angle θt + Δθ.

Thereafter, the processor <NUM> repeatedly acquires the back surface 131B of the push-in button <NUM> and sets the amplitude θa for θa = α·g(P)·s for vibration control. The correction function g(P) causes the processor <NUM> to perform control such that the larger the amount by which the user pushes the push-in button <NUM>, the smaller the amplitude becomes.

Claim 1:
A controller apparatus (<NUM>) comprising:
a vibrating body (<NUM>) movable within a predetermined movable range thereof;
an operating member (<NUM>) operated by a user, the operating member (<NUM>) being movably operable within a movable range thereof overlapping partially with the movable range of the vibrating body (<NUM>);
a reception section (<NUM>) configured to receive a vibration instruction designating generation of vibration from an information processing apparatus external to the controller apparatus (<NUM>);
a detection section (<NUM>) configured to detect a position of the operating member (<NUM>) within the movable range thereof; and
a control section (<NUM>) configured to give vibration to the operating member (<NUM>) by controlling a position and vibration of the vibrating body (<NUM>) in accordance with the received vibration instruction and the detected position of the operating member (<NUM>),
wherein, when predetermined conditions are satisfied, the control section (<NUM>) controls the vibration of the vibrating body (<NUM>) in a manner correcting the vibration designated by the vibration instruction,
wherein the vibration instruction includes information for designating strength of vibration, and
when the predetermined conditions are satisfied, the control section (<NUM>) corrects the designated vibration strength by a predetermined correction method, so as to control the vibration of the vibrating body (<NUM>) in a manner giving vibration to the operating member (<NUM>) with the corrected vibration strength,
the correction method providing reduction of the vibration strength when the operating member (<NUM>) is pushed to its limit position.