Search Images Maps Play YouTube News Gmail Drive More »
Sign in
Screen reader users: click this link for accessible mode. Accessible mode has the same essential features but works better with your reader.

Patents

  1. Advanced Patent Search
Publication numberCA2233206 C
Publication typeGrant
Application numberCA 2233206
PCT numberPCT/US1996/015340
Publication date3 Apr 2001
Filing date25 Sep 1996
Priority date27 Sep 1995
Also published asCA2233206A1, DE69607189D1, DE69607189T2, DE69627046D1, DE69627046T2, EP0852770A1, EP0852770A4, EP0852770B1, EP0974889A1, EP0974889B1, US5691898, US5907487, US5929607, US6271833, US6348911, US7038657, US7439951, US20020126091, US20050195168, US20090033624, WO1997012337A1
Publication numberCA 2233206, CA 2233206 C, CA 2233206C, CA-C-2233206, CA2233206 C, CA2233206C, PCT/1996/15340, PCT/US/1996/015340, PCT/US/1996/15340, PCT/US/96/015340, PCT/US/96/15340, PCT/US1996/015340, PCT/US1996/15340, PCT/US1996015340, PCT/US199615340, PCT/US96/015340, PCT/US96/15340, PCT/US96015340, PCT/US9615340
InventorsLouis B. Rosenberg, Adam C. Braun, Bruce M. Schena
ApplicantImmersion Human Interface Corporation, Louis B. Rosenberg, Adam C. Braun, Bruce M. Schena, Immersion Corporation
Export CitationBiBTeX, EndNote, RefMan
External Links: CIPO, Espacenet
Safe and low cost computer peripherals with force feedback for consumer applications
CA 2233206 C
Abstract
A method and apparatus for providing safe and low-cost force feedback peripherals for consumer applications. A device microprocessor (26) local to an interface device (14) is coupled to the host (12) by a first interface bus (24). The microprocessor receives host commands from the host computer on the first interface bus, such as an RS-232 interface, and commands an actuator (30) to apply a force to a user object (22), such as a joystick, in response to host commands. A sensor (28) detects positions of the user object and outputs signals to the host on a second interface bus (25), such as a PC game port bus, separate from the firt bus. A safety switch (41) of the present invention disables the actuator when the interface device is not in use and enables the actuator when an amount of weight over a predetermined amount is placed on the joystick created by a user grasping the joystick.
Claims(76)
1. An interface apparatus for interfacing motion of a user manipulable object with a host computer and enabling said host computer to track motion of said user, to update and execute a software process in response to said motion, and to command feedback forces to said user, said interface apparatus providing a button-reflex capability wherein a force sensation is generated locally in response to a press of a button on said interface apparatus, said interface apparatus comprising:
a user object being physically contacted and manipulable by a user and having at least one degree of freedom of movement;
a device microprocessor provided local to said interface apparatus and separate from said host computer and being controlled by software instructions stored in a memory device separate from said host computer, said microprocessor being coupled to said host computer by an interface bus and receiving host commands from said host computer on said interface bus, wherein said host commands include a supervisory command which affects implementation of said software instructions by said device microprocessor;
at least one button-actuated switch coupled to said device microprocessor, wherein said supervisory command enables said switch to initiate a force sensation specified by a parameter in said supervisory command on said user object when said button-actuated switch is manipulated to a particular state by said user;
a sensor coupled to said user object for detecting a position of said user object along said degree of freedom and for outputting a locative sensor signal which represents said position of said user manipulable object, said locative sensor signal being received by said host computer on said interface bus, and wherein said host computer modifies a displayed process in response to said locative sensor signal; and an actuator for applying a force to said user, wherein said actuator applies said force in response to microprocessor force commands produced by said device microprocessor.
2. An interface apparatus as recited in claim 1 wherein said interface bus is a serial interface bus for bi-directionally transmitting and receiving data serially.
3. An interface apparatus as recited in any of the preceding claims wherein said user object includes a joystick.
4. An interface apparatus as recited in any of the preceding claims wherein said supervisory command enables said switch to initiate a specified force sensation on said user object when said button-actuated switch is closed by said user.
5. An interface apparatus as recited in any of the preceding claims further comprising multiple button-actuated switches, each of said multiple switches initiating a different force sensation associated with said switch on said user manipulatable object when said user closes said switch.
6. An interface apparatus as recited in any of the preceding claims wherein said microprocessor is powered by said host computer using a power line of said interface bus.
7. An interface apparatus as recited in any of the preceding claims further comprising a power storage device coupled to said actuator, said power storage device storing power from a power source and providing said stored power to said actuator when said actuator applies said force to said user object.
8. An interface apparatus as recited in any of the preceding claims further comprising a safety switch for said user, wherein said actuator is operative to output said force only when said safety switch is closed, wherein said safety switch is a hand-weight safety switch coupled to said joystick, said hand weight safety switch being closed by said user when said user applies weight to said joystick by grasping said joystick.
9. An interface apparatus as recited in claim 3 wherein said joystick includes a safety break-away handle that breaks off from said interface apparatus when a force having a magnitude over a predetermined threshold magnitude is applied to said joystick.
10. An interface apparatus as recited in claim 9 wherein said safety break-away handle is attached to said interface apparatus by a magnet.
11. An interface apparatus as recited in any of the preceding claims wherein said local memory device stores force routines, wherein said microprocessor selects at least one of said force routines in accordance with said at least one of said host commands, said force routine determining said microprocessor force commands, at least in part, from said sensor signals of said sensors.
12. An interface apparatus as recited in any of the preceding claims wherein said actuator is coupled to said user manipulatable object and applies said force along said degree of freedom to said user manipulatable object.
13. A force feedback interface apparatus for use with a host computer displaying a graphical environment, said interface apparatus providing locative signals to said host computer which are used by said host computer to update said graphical environment in response to user manipulation of said interface apparatus, said interface apparatus providing force sensations to the user and button reflex capability wherein a force sensation is generated locally in response to a press of a button of said interface apparatus, said interface apparatus comprising:
a user object being physically contacted and manipulated by a user and having at least one degree of freedom of movement with respect to an origin;
an actuator coupled to said user object for applying a force to said user;
a sensor for detecting motion of said user object along said degree of freedom and outputting a sensor signal, wherein a representation of said sensor signal is received by said host computer via an interface bus coupling said interface apparatus to said host computer wherein said host computer updates said graphical environment in response to said sensor signal;
at least one button coupled to said interface apparatus and manipulable by said user, said button providing a state signal to said host computer via an interface bus, said state signal conveying a state of said button selected by said user, thereby allowing said host computer to execute a process in response to said state of said button; and control electronics coupled to said actuator and to said at least one button, said control electronics locally varying said force over time, thereby generating a force sensation felt by said user in said degree of freedom, said control electronics having button-reflex capability allowing local generation of a force sensation to be initiated in response to a locally detected change in said state of said button and generated locally over a period of time after being so initiated.
14. An interface apparatus as recited in claim 13 wherein said force commands received by said actuator are host data sent by said host computer and which instruct said actuator to output said force in accordance with a software process running on said host computer.
15. An interface apparatus as recited in claim 14 wherein said interface bus transmits said host data serially to said interface apparatus from said host computer, and further comprising at least one shift register for providing said serial host data as control signals to said actuator.
16. An interface apparatus as recited in any of claims 14-15 wherein said interface bus transmits at least a portion of said host data in parallel in conjunction with serially transmitted host data.
17. An interface apparatus as recited in any of claims 13-16 wherein said interface bus includes a plurality of lines used to transmit data to said interface apparatus as parallel information and in which at least one line is used to transmit data to said interface apparatus as serial information.
18. An interface apparatus as recited in any of claims 13-17 wherein said actuator is coupled to said user object and applies said force along said degree of freedom to said user object.
19. A force feedback interface device for use with a host computer displaying a graphical environment, said interface device providing sensor signals to said host computer which are used by said host computer to update said graphical environment in response to user manipulation of said interface device, said interface device providing force sensations to the user and user-selected reflex capability wherein a force sensation is generated locally in response to user manipulation of said interface device, the interface device comprising:
a sensor for determining the position of a user object in a degree of freedom and for providing sensor signals representing said position to said host computer via an interface bus, wherein said host computer updates said graphical environment in response to said sensor signals;
an actuator for applying forces on said user object in said degree of freedom when said actuator receives an activation signal; and a user-selectable control coupled to said interface device, wherein when said user selects said user-selectable control, a reflex process local to said interface device is initiated in which said selection of said user-selectable control is locally detected and in which said activation signal is sent to said actuator and commands said actuator to apply said force on said user object in said degree of freedom by varying a magnitude of said forces over time, thereby initiating force feedback on said interface device independently of said host computer.
20. A force feedback interface device as recited in any of claim 19 wherein said user selectable control includes a button.
21. A force feedback interface device as recited in any of claims 19-20 wherein said user object is a joystick.
22. A force feedback interface device as recited in any of claims 19-20 wherein said actuator applies said force on said user object only when said user selects said user-selectable control.
23. A force feedback interface device as recited in any of claims 19-22 wherein said host computer is coupled to transmit an enable signal to said interface device for enabling said reflex process, wherein when said enable signal is provided by said host computer, said selection of said user-selectable control causes said actuator to output said forces, and wherein when said enable signal is not provided by said host computer, said selection of said user selectable control does not cause said actuator to output said forces.
24. A force feedback interface device as recited in any of claims 19-23 wherein said activation signal is a first activation signal, and wherein said host computer is operative to provide a second activation signal to said actuator to command said actuator to apply said force to said user object regardless of whether said first activation signal from said user selectable control has been provided to said actuator.
25. A force feedback interface device as recited in claim 24 wherein said second activation signal is provided at a desired baud rate to said actuator such that said second activation signal activates and deactivates said actuator at said desired baud rate.
26. A force feedback interface device as recited in any of claims 19-25 further comprising a user enable switch on said interface device which, when selected, enables said reflex process to output force in response to said user-selectable control and, when unselected, disables said reflex process from applying said force in response to said user-selectable control.
27. A force feedback interface device as recited in any of claims 19-26 further comprising a power store circuit coupled to said actuator, said power store circuit storing power from a power source and providing said stored power to said actuator when said actuator applies said force to said user object.
28. A force feedback interface device as recited in any of claims 19-27 further comprising a safety switch for said user, said user able to change a state of said safety switch during operation of said interface device, wherein said actuator is operative to output said force only when said user continually maintains said safety switch in a particular state during operation of said interface device.
29. A force feedback interface device as recited in claim 28 wherein said safety switch is a hand-weight safety switch coupled to said user object, said hand weight safety switch being maintained in said particular state by said user when said user applies weight to said user object by grasping said user object.
30. A force feedback interface device as recited in claim 28 wherein said safety switch includes two touch plates coupled to said force feedback interface device, wherein said safety switch is maintained in said state when said user creates an electrical connection between said two touch plates by touching both of said touch plates.
31. A force feedback interface device as recited in any of claims 19-30 wherein when said user selectable control is continually depressed by said user, said timer/pulse generator of said interface device causes said actuator to repeatedly output forces to said user object.
32. A force feedback interface device as recited in any of claims 19-31 further comprising a plurality of said user selectable controls, wherein said reflex process detects a change in state of each of said user selectable controls to initiate a force sensation associated with that button.
33. A force feedback interface device as recited in claim 32 wherein a signal received by said interface apparatus from said host computer over an interface bus indicates if a particular force sensation is to be associated with a change in state of a particular user selectable control.
34. A force feedback interface device as recited in any of claims 19-33 wherein said initiation of said force sensation in response to said locally detected change in said state of said user selectable control occurs only if an enable signal is received by said interface apparatus from said host computer prior to said change in state of said user selectable control.
35. A force feedback interface device as recited in claim 34 wherein said enable signal is used to coordinate events in said host computer graphical environment with said locally generated force sensations.
36. A force feedback interface device as recited in any of claims 34-35 wherein said enable signal is a high-level host command indicating which of a plurality of said user adjustable buttons should initiate a given force sensation.
37. A force feedback interface device as recited in any of claims 19-36 wherein the initiation of a particular force sensation in response to a locally detected change in said state of a particular user selectable control occurs only if previously enabled by a separate enable signal associated with said particular user selectable control, said enable signal received by said interface apparatus from said host computer.
38. A force feedback interface device as recited in any of claims 19-37 wherein said interface bus connecting said interface apparatus and said host computer includes a PC Game Port.
39. A force feedback interface device as recited in claim 38 wherein said interface bus includes a serial port in parallel with said PC Game Port.
40. A force feedback interface device as recited in any of claims 19-39 wherein said force sensation is one of a recoil force and a vibration force.
41. A force feedback interface device as recited in any of claims 19-40 wherein said control electronics include a local microprocessor wherein a process running on said local microprocessor supports said reflex process by initiating a force sensation in response to a change in said state of said user selectable control as locally detected by said local microprocessor.
42. A force feedback interface device as recited in any of claims 19-41 further comprising a dead-man safety switch that prevents said actuator from producing any forces upon said user object when said user is not properly engaging said user object.
43. A force feedback interface device as recited in claim 42 wherein said dead-man safety switch is a hand weight activated switch.
44. A force feedback interface device as recited in claim 42 wherein said dead-man safety switch is an optical switch, said optical safety switch being closed when said user covers an optical sensor when grasping said user object.
45. A force feedback interface device as recited in claim 42 wherein said safety switch includes two touch plates coupled to said force feedback interface apparatus, wherein said safety switch is closed when said user creates an electrical connection between said two touch plates by touching both of said touch plates.
46. A force feedback interface device as recited in any of claims 19-45 wherein said period of time is derived from a signal sent to said interface apparatus from said host computer over an interface bus.
47. A force feedback interface device as recited in any of claims 19-46 wherein said local generation of said force sensation is re-initiated when said user selectable control is maintained by said user in a particular state for more than a defined period of time after a previous generation of said force sensation.
48. A force feedback interface device as recited in any of claims 19-47 wherein power is drawn over time from a power source and stored in a power storage circuit local to said interface device, said stored power able to be discharged rapidly across said actuator to allow said actuator to produce a transient force sensation of greater magnitude than if powered directly by said power source.
49. A force feedback interface device as recited in claim 48 wherein said power source is a universal serial bus connection between said host computer and said interface apparatus.
50. A force feedback interface device as recited in claim 48 wherein said power storage circuit includes a storage capacitor.
51. A force feedback interface device as recited in any of claims 19-50 wherein said host computer is a video game console and said interface bus includes parallel control port lines.
52. A method for interfacing a force feedback interface device manipulated by a user with a host computer system, the method comprising the steps of:
providing a user manipulable joystick included in said force feedback interface device, said joystick having a degree of freedom;
sensing positions of said joystick along said degree of freedom with a sensor and producing electrical sensor signals therefrom, said sensor signals being sent to said host computer system over an interface bus to said host computer system, said host computer system updating application software implemented by said host computer system in accordance with said sensor signals;
utilizing a microprocessor local to said joystick and separate from said host computer system to communicate with said host computer system to receive host commands from said host computer system;
providing at least one input switch coupled to said microprocessor;
enabling said input switch by at least one of said host commands to initiate a specified force sensation to said user when said input switch is activated by a user as locally detected by said microprocessor, said force sensation being specified by at least one of said host commands from said host computer system; and outputting processor force commands from said microprocessor to an actuator when said input switch is activated by said user, said actuator being operative to apply said specified force sensation to said user in accordance with said processor force commands.
53. A method as recited in claim 52 further comprising providing multiple input switches, wherein each of said multiple switches is enabled with a different command from said host computer system, and wherein appropriate processor force commands to output a different force sensation associated with said switch on said user object are output when said user activates each of said switches.
54. An interface apparatus for interfacing motion of a user with a host computer and enabling said host computer to track motion of said user and to command feedback forces to said user, said interface apparatus comprising:
a user object being physically contacted and manipulable by a user and having at least one degree of freedom of movement;
a device microprocessor provided local to said interface apparatus and separate from said host computer and being controlled by software instructions stored in a memory device separate from said host computer, said microprocessor being coupled to said host computer by a serial interface bus and receiving host commands from said host computer on said first interface bus;
an actuator coupled to said user object for applying a force to said user, wherein said actuator applies said force in response to microprocessor force commands produced by said device microprocessor;
a thermal sensor for detecting a temperature of said actuator, said thermal sensor providing a temperature signal to said microprocessor such that said microprocessor can deactivate said actuator when said temperature of said actuator rises above a predetermined threshold; and a sensor coupled to said user object for detecting a position of said user object along said degree of freedom and for outputting a locative sensor signal which represents said position of said user manipulable object, said locative sensor signal being received by said host computer, and wherein said host computer modifies a displayed process in response to said locative sensor signal.
55. An interface apparatus for interfacing motion of a user with a host computer and enabling said host computer to track motion of said user and to command feedback forces to said user, said interface apparatus comprising:

a joystick being physically contacted and manipulable by a user and having at least one degree of freedom of movement with respect to a ground surface, wherein said joystick includes a safety break-away handle that breaks off from said interface apparatus when a force over a predetermined threshold is applied to said joystick;

a device microprocessor provided local to said interface apparatus and separate from said host computer and being controlled by software instructions stored in a memory device separate from said host computer, said microprocessor being coupled to said host computer by a serial interface bus and receiving host commands from said host computer on said first interface bus;
an actuator coupled to said user object for applying a force along said degree of freedom to said user object, wherein said actuator applies said force in response to microprocessor force commands produced by said device microprocessor; and a sensor coupled to said user object for detecting a position of said user object along said degree of freedom and for outputting a locative sensor signal which represents said position of said user manipulable object, said locative sensor signal being received by said host computer, and wherein said host computer modifies a displayed process in response to said locative sensor signal.
56. An interface apparatus as recited in claim 55 wherein said safety break-away handle is attached to said interface apparatus by a magnet.
57. A force feedback interface device for use with a host computer running a software application, said interface device providing a button-reflex capability wherein a force sensation is generated locally in response to a press of a button on said interface apparatus by a user, said interface device comprising:

a user object for manipulation by a user in at least one degree of freedom with respect to an origin;
a sensor for detecting motion of said user object in said degree of freedom and for producing a locative sensor signal, wherein a representation of said locative sensor signal is conveyed to said host computer, thereby allowing said software application to update a process in response to manipulation of said user object;

a user adjustable button local to said interface apparatus and electrically coupled to said local microprocessor, a state of said button being conveyed to said host computer to allow said software application to update a process in response to said state of said button;

an actuator coupled to said user object, said actuator applying forces to said user; and a local microprocessor separate from said host computer and electronically coupled to said actuator, said local microprocessor executing a local process, said local microprocessor coupled to said host computer by a communication bus and outputting signals to said actuator such that said actuator applies said forces in response to said signals produced by said local microprocessor, wherein said local process locally generates force sensations by modulating a magnitude of said forces produced by said actuator over a period of time, said local process having button-reflex capability wherein said local generation of a force sensation may be initiated in response to a locally detected change in said state of said user adjustable button.
58. An interface device as recited in claim 57 wherein said user adjustable button is one of a plurality of user adjustable buttons included in said interface device, and wherein button-reflex data is stored local to said interface device, said data indicating which of said plurality of user adjustable buttons have been associated with particular ones of a plurality of force sensations.
59. An interface device as recited in claim 58 wherein said button-reflex data is derived from parameters received from said host computer over said communication bus.
60. An interface device as recited in any of claims 58-59 wherein said button-reflex data includes a repeat rate indicating a length of a period of time after a force sensation has been output that said force sensation is to be re-executed if the initiating button is held in a given state.
61. An interface device as recited in any of claims 57-60 wherein said force sensation initiated in response to a locally detected change in state of a user adjustable button is one of a jolt sensation and a damping sensation.
62. An interface device as recited in any of claims 57-61 wherein said force sensation initiated in response to a locally detected change in state of a user adjustable button is a force profile sensation wherein forces applied by said actuator are derived from a list of values in memory local to said interface apparatus.
63. An interface device as recited in any of claims 57-62 wherein said button-reflex capability associated with a particular button on said interface device is enabled in response to a high level host command, wherein said host command includes a parameter representing which button is to trigger a force sensation, said force sensation being specified by a host command.
64. An interface device as recited in any of claims 57-63 wherein said communication bus includes a PC Game Port.
65. An interface device as recited in any of claims 57-64 wherein said communication bus includes a serial port in parallel with said PC Game Port.
66. An interface device as recited in any of claims 57-65 further including a dead-man safety switch that prevents said actuator from producing any forces upon said user object when said user is not properly engaging said user object.
67. An interface device as recited in claim 66 wherein said dead-man safety switch is a hand weight activated switch.
68. An interface device as recited in claim 66 wherein said dead-man safety switch is an optical switch, said optical safety switch being closed when said user covers an optical sensor when grasping said user object.
69. An interface device as recited in claim 66 wherein said safety switch includes a plurality of touch plates coupled to said interface device, wherein said safety switch is closed when said user creates an electrical connection between said plurality of touch plates by touching all of said touch plates.
70. An interface device as recited in any of claims 57-69 wherein said period of time is derived from a host command sent to said interface device from said host computer over said communication bus.
71. An interface device as recited in any of claims 57-70 wherein said local generation of said force sensation is re-initiated when said button is held by said user in a particular state for more than a defined period of time after a previous generation of said force sensation.
72. An interface device as recited in any of claims 57-71 wherein power is drawn over time from a power source and stored in a power storage circuit local to said interface device, said stored power able to be discharged rapidly across said actuator, thereby allowing said actuator to produce a transient force sensation of greater magnitude than if powered directly by said power source.
73. An interface device as recited in claim 72 wherein said power source is included in said communication bus.
74. An interface device as recited in claim 73 wherein said power source is a universal serial bus connection between said host computer and said interface device.
75. An interface device as recited in any of claims 57-74 wherein said actuator is a motor, and further comprising a temperature sensor electrically coupled to said local microprocessor for measuring heat produced by said motor, wherein said local process can deactivate said motor in response to said temperature sensor reporting a value above a threshold.
76. An interface device as recited in claim 75 wherein said local process performs a software estimation of motor heating and deactivates said motor when said estimation exceeds a threshold.
Description  (OCR text may contain errors)

- W O 97/12337 PCT~US96/lS340 SAFE AND LOW COST COMPUTER PERIPHERALS Wll~i FORCE
BACK FOR CONSUMER APPLICATIONS
BACKGROUND OF THE INVENTION
The present invention relates generally to intf rf~re devices between humans and5 col,lpulel~, and more particularly to colllL~ulc~l interface devices that provide force feedback to the user.
Computer systems are used extensively in many different industries to implement cc,lll~uLt;r controlled cim~ fions, games, and other application programs. More particularly, these types of games and simulations are very popular with the mass market of home consumers. A
10 colll~u~er system typically displays a visual envir~ clll to a user on a display screen or other visual output device. Users can interact with the displayed envh olllllellt to play a game, experience a.cim~ tion or"virtual reality" environment, or otherwise influence events or images depicted on the screen. Such user interaction can be implemented through the use of a human-computer interface device, such as a joystick, "joypad" button controller, mouse, trackball, stylus 15 and tablet, foot or hand pedals, or the like, that is connected to the computer system controlling the displayed environment. The computer updates the game or sim~ tion in response to the user's manipulation of a moved object such as a joystick handle or mouse, and provides feedback to the user utili7.inp~ the display screen and, typically, audio speakers.
In some interface devices, haptic (e.g., tactile) feedback is also provided to the user, more 20 generally known as "force fee~h~k" These types of interface devices can provide physical sensations to the user manipulating the physical object of the interface device. Typically, motors or other actuators are coupled to the interface object and are connected to the controlling colll~ul~l system. The COllll~U~:l system receives sensor signals from the interface device and sends ap~lo~liate force feedback control signals to the actuators of the interface device in conjunction 2s with .sim~ tion/game events. The actuators then provide forces on the interface object. The computer system can thus convey physical sensations to the user in conjunction with other visual and auditory feeflh~rk as the user is grasping or contzl-~ting the object of the interface device.
Force feedback interface devices can provide a whole new modality for human-coll~u~er interaction.
Force fee~lh~k input/output (I/O) devices of the prior art have concentrated on providing maximum haptic fidelity, i.e., the realism of the haptic fee-lh~k was desired to be ~ ;".;~d This is because most of the force feerlhafk devices have been targeted at the specific needs of highly industrial or scientific applications, and not a mass consumer market. To attain such realism, design concerns useful the mass market such as low size and weight, low complexity, - W O 97/12337 PCTnUS96/15340 pro~ g compatibility, low cost, and safety have been sacrificed in the prior art. As a result, typical force feeAhz~r~ interface devices include complex robotic mrch~ni.cm~ which require precise, bulky, and e,~ siv~ components that have cignific~ns power requirements and are difficult to program for applications.
In addition, the prior art force fee~lh~rk devices typically use a host co~ ul~l to close a control loop around the system to generate sensations and ...~;..l~i.- safety and stability through direct host control. FIGURE 1 illustrates a block diagram of a control system 2 having a typical host controlled loop. A user manipulated object 3, such as a joystick or similar object, is moved by a user to interface with a host colll~uLel 4 with a display device ~. Sensors 6 detect the position o of the user object in provided degrees of freedom and may also include buttons or other controls that detect user actions such as the press of a button. The sensor data including positional and button data is sent to host colll~u~l 4 over a bi-directional communication bus 7 that is typically connected to an interface card plugged into the host colllL,uLel. To complete the control loop, host computer 4 sends force commands over bus 7 to actuators 8, and the actuators output forces on 15 the object 3 to the user. The functions of reading sensor data and outputting force values to actuators 7 can be a burden on the host processor which detracts from the performance of the host in other host tasks and application execution.
An illlpolL~nt concern for a force fee~lb~ck interface device is communication bandwidth between the controlling colllpuLel and the interface device. To provide realistic force feellh~rk, the 20 complex devices of the prior art typically use high speed co..,...~ ir~fion electronics that allow the controlling computer to quickly send and update force feeclb~rk signals to the intrrf~re device.
The more quickly the controlling cc,lll~uuLt;r can send and receive signals to and from the illL~lr~ce device, the more accurately and ;ealistically the desired forces can be applied on the inttorf~re object. In addition, using a high bandwidth communication hlL~Ir~ce, force fee~lb~rk can be 25 accurately coordinated with other supplied feedback, such as images on the video screen, and with user inputs such as movement of the object, activated buttons, etc.
A problem is evident when prior art force feerlh~ck interface devices are provided to the mass consumer market. Most home cOIll~ulel~ have a built-in standard serial co.. ~.. ication interfaces, such as an RS-232 interface, RS-422 interface, "game port", Universal Serial Bus 30 interface, or Ethernet interface that may conveniently be used to connect peripherals like a force fee-lh~rk interface device to the host c~ uLer. In addition, manufacturers prefer to provide peli~heldl devices that use these serial interfaces, since no additional hardware, such as intrrf~re cards, needs to be provided with such peripherals. The manufacturing cost of the p.,.ipl~
device can thus be signific~ntly reduced. However, these standard serial co. ~ ir~tion 3s interfaces are typically quite slow (i.e. have low bandwidth) compared to other co~ ir~tion interfaces. Realistic and accurate force feerib~rk thus becomes difficult to provide by a controlling _ Co~ ulel system to a prior art interface device conn~cterl through such a serial int~ ce in comparison with other interfaces such as a direct interface card (e.g., ISA or PCI card) cu..l.~o.;li to the data bus of the host coln~u~r.
Another important concern in the mass market industry is the issue of user safety.
s Because a force fee-lhz~k device can impart physical forces upon the user, the potential for injury must be carefully addressed. To provide a safety measure for the user, the force feedback devices of the prior art typically include a safety or "~le~-~m~n" switch which the user must activate to allow forces to be applied to the user manipulable object. If the user does not close the switch, no forces can be output. The safety switches of the prior art are typically a button or a pedal which 10 the user must continually press or hold down to allow power to be received by the :~tll~tc-rs.
However, such safety switches can be cumbersome and/or tiring for the user to close, since the user must constantly m:~int~in a particular grip or position to feel forces. In addition, these types of safety switches are easy to defeat by users; for example, an elastic band can be wrapped around a safety button to keep the button depressed, which defeats the entire safety purpose of the safety ls switch.
Finally, mass market force feeflb~k interface devices must ntoces~rily be low cost devices that are simple to manufacture so that the device is colllpeLiLively priced in the high volume, aggressive home computer and home video game markets.

SUMMARY OF THE INVENTION

The present invention is directed to implementations of a human/co,ll~uL~. interface device for controlling and providing force feeAh~k to a user. Several implementations are provided to 5 decrease the cost in m~nllf~rtllring an i..l~r.f~e device and making the device safe for the high volume consumer market of coln~uLel and video game users.
More particularly, one embodiment of an interf~.-e d~aldLus and method of the present invention for interfacing motion of a user manipulable object with a host co~ uL~l includes a user object, such as a joystick, physically contacted by a user and having at least one degree of freedom o of movement. A device microprocessor local to the interface dLJpa~dLus and separate from the host computer is coupled to the host by a first interface buses. The microprocessor receives host comm~ntlc from the host computer on the first interface bus. An ~tuator applies a force along said degree of freedom to the user object in response to microprocessor force comm~n~,s produced by the device microprocessor. A sensor for A~tecting a position of the user obiect along 15 the degree of freedom and outputs sensor signals. The sensor signals are received by the host Cu~ uLe[ on a second interface bus sep~udLt; from the first interf~e bus. The host ccll~uLe.
updates a host application process, such as a cim~ fion or video game, in response to the sensor signals.
Preferably, the first interface bus is an RS-232 interface bus or similar serial standard. The 20 second interface bus is preferably a standard game port interface bus coupled to a game port of the host computer or the equivalent. Force feeAb~rk commands are sent by the host over the serial interface bus and the sensor signals are received by the host in the traditional way via the game port. The interface device can thus be used as a standard joystick without force feedh~ by lltili7~ing only the game port interface in col,u"unication with the host computer, and allows 25 backward compatibility for non-force-feedback functionality via standard game port drivers.
In some embodiments, the device microprocessor receives the sensor signals to col"~uLe force values to output to the actuators. A second sensor can be used to detect the position of the joystick independently of the host sensor and output sensor signals to the microprocessor. The local microprocessor receives high-level host comm~n~ls and can implement independent force 30 routines that receive sensor signals and compute forces. The force routines can be stored in memory local to the interface a~ us. Preferably, a button device is coupled to the intf~rf~e Lus that provides a button input signal to the microprocessor when the user presses the button. The microprocessor provides the button input signal to the host co",puLel over the game port interface bus. In addition, the microprocessor preferably deactivates the actuator when at least W O 97/12337 PCTnUS96/15340 one of the multiple interface buses is disconn~octec~ from the host co,l,pulel or disconn~ct~l from the interface ~ alu,.
In a different "recoil" embodiment of the interface a~p~Lus, the i."~lr~ce device includes an actuator that applies a force on the user object. A user-selectable control, such as a button 5 provided on the joystick, sends an activation signal to the actuator when the user activates the button and thereby instructs the actuator to apply the force on said user object in a reflex process in~lepen~l~nt of the host cOIllL~u~el. This force, for example, can be a recoil or jolt that is output whenever the user selects the button. In one embodiment, the actuator applies the force on the joystick only when the user activates the button. In a different embodiment, the host coll,~uL~r is 10 coupled to the actuator by a second in~rf~-~e and transmits an enable signal to the joystick. The actuator applies the force only when the user activates the button and when the enable signal is provided. In a yet another embodiment, the host computer may additionally send a simple activation signal to the actuator to command the actuator to apply the force to the user object regardless of whether the button is pressed by the user. The host can control the actuator using 15 only a very small amount of infor nation, and can use a parallel interface or a serial port used as a parallel interface. A user enable switch on said int~ e device can, when selected or ~ o~t~i by the user, enable or disable the recoil reflex process.
In a different, more complex "recoil" embodiment, the host computer can send a greater amount of control signals and/or other information to the actuators than in other recoil 20 embo~liml-nt~ of the interface device by providing the control signals serially. One or more shift ,isL~ , covert the serial data to parallel information that is provided to programmable logic. The logic sends the control signals, such as enable and activation signals, to the actuator and other components as necessary. A sensor outputs sensor signals to the host c~ln~uLel via a second interface bus as described above.
A force feerlh~k interface device of the present invention for safe use by a user includes a sensor for sensing a joystick's position and an actuator for applying a force to the joystick. A
safety switch is coupled to the joystick for disabling the actuator when the user is not using the interface device. One safety switch of the present invention enables the actuator when an amount of weight over a predetermined amount is placed on the joystick, such as the amount of weight created by a user grasping the joystick. The joystick includes a handle portion tr~ncl~t~hly coupled to a base portion. The safety switch includes a contact on the handle portion and a contact on the base portion such that when the predeterrnined amount of weight is applied to the joystick, the contacts engage to allow electrical current to flow. A spring member forces the portions apart from each other when less than the predetermined amount of weight is applied to the joystick. A
different touch plate safety switch feature similarly allows the actuators to be powered only when the user is touching the provided touch plates. A separate break-away joystick safety feature can also be included which comprises a safety break handle that breaks off from the illt-,~r~ce ld~llS when a force over a predetermined threshold is applied to the joystick. The safety break-away handle can be attached to the interf:lre ~pa~ us, for example, by mzlgnPt~.
A circuit of the present invention for storing power in a force feedback interface device that 5 interfaces a user with a host CO~ uL~l system includes a capacitor for storing power provided by a signal input to the circuit. A sensing device coupled to the capacitor senses when the c~p:~ritnr is fully charged by monitoring the input signal to c~t~rmine when the ~p~c itor is fully charged. A
control device provides a control signal to a driver and actuator so that the actuator can apply force to a user object of the interface device. The stored power from the capacitor is supplied to the 10 actuator when applying the force. A current limiter limits the current of the input signal and provides the limited current to the capacitor. The input voltage signal can be received from a game port interface bus coupled to the host colnl~uL~I system or from a power supply included in the interface device.
The interface a~paldLus of the present invention includes several low cost components that 15 are suitable for providing accurate force feerlh~rk for the high volume home consumer market and similar markets. The use of the parallel combination of a serial bus and a game port bus, coupled to two ports of the host computer system, allows one bus to be used to send signals to the host and the other bus to receive force commands from the host, thus providing a very low cost system having realistic force feeAbark. The local device microprocessor processes comm~n-1c 20 independently of the host col~lpuLer, thus saving significant processing time on the host colll~uLel.
Other low cost embodiments require no or minim~l force commands from the host, allowing simple force feedback to be provided to users. The power circuit of the present invention allows smaller power supplies to be used or elimin~tes the need for a power supply.
The safety features of the present invention herein also are illlpolL~n~ when supplying force 25 feeflb~rk devices to the home consumer market. The hand-weighted safety switch allows a user to conveniently operate the interface device and provides necessary safety shut-down features.
The commnniczltion line safety feature allows the actuators to be deactivated in the event of a disconnection between interface device and host culll~uLel. These improvements allow a computer system to provide accurate and realistic force feerlh~rl~ in a safe, low-cost low 30 bandwidth communication interface and is thus ideal for the mass market of computer and game systems.
These and other advantages of the present invention will become apparent to those skilled - in the art upon a reading of the following specifi~tion of the invention and a study of the several figures of the drawing.

-W O 97/12337 PCT~US96/15340 BRIEF DESCRIPTION OF THE DRAWIN~S
Figure 1 is a block diagram of a prior art control system for a force fe-lh~ t..r~re device;
Figure 2 is a block diagram of a control system in accordance with the present invention 5 for controlling a force fee-lh~f~k interface device from a host cu~ uL~;l, Figures 3 and 3a-b are sch~m~tic diagrams of a low-cost embodiment of the force fee-lh:-rk interface device of Figure 2;
Figures 4a-4f are block diagrams of an ~It~rn~tive low-cost "recoil" embodiments of the interface device of Figure 2;
10Figures 5 and 5a-c are schematic diagrams of an alternative low-cost embodiment of the interface device of Figure 2 having no local mi~ ucessor;
Figure 6 is a block diagram of a power circuit of the present invention for use with a force fee-lhz-r~ interface device;
Figure 7 is a flow diagram illustrating an embodiment of a method of the present15 invention for controlling a force fee~lh~ intto7~ace device;
Figure 8 is a schematic diagram of a ~Ive bar linkage mech~ni.cm for providing multiple degrees of freedom to the user object of the interface device;
Figure 9 is a schematic diagram of a circuit for a touch plate safety switch of the present invention;
20Figure 9a is a perspective view of an example of a joystick including the touch plate safety switch of Figure 9;
Figu;e 10 is a diagrammatic illustration of a hand weight safety switch of the present invention;
Figure 11 is a diagr~rnm~tic illustration of a break away joystick safety feature of the 25present invention; and ~ Figures I l a- 1 l d are dia~ ic illllcf~tions of the operation of the joystick of Figure 9.

SUts~ ~ JTE SHEET (RULE 26) CA 02233206 l99X-03-26 DI~TAILED Dh'.~CRIPTION OF PRli',FERlE~,n EMBOD~Ml~ TS

FIGURE 2 is a block diagram illustrating a generic control system 10 of the present invention for a force feedback interface device controlled by a host c~ ,ulel system. Control system 10 ineludes a host co.. ~uL~r system 12 and an h~L~.r~ce device 14 (or "foree feedbaek peripheral").
Host eo.~l,uLer system 12 ("host") is preferably a personal eomputer, sueh as an IBM-eompatible or Macintosh personal co--.~uL~;r, or a workstation, such as a SUN or Silieon ~Tr~phies workstation. For example, the host eomputer system ean a personal eomputer whieh v~Gld~es 0 under the MS-DOS or Windows ~.p~ldLillg systems in conformance with an IBM PC AT
standard. Alternatively, host computer system 12 ean be one of a variety of home video game systems commonly connected to a television set, such as systems available from Nintendo, Sega, or Sony. In other embodiments, home eomputer system 12 can be a more application specifie "set top box" or "internet computer" whieh ean be used, for example, to provide i-~L~,L~:Li~e television or information functions to users.
In the deseribed embodiment, host eo~nluuler system 12 implements a host applieation program with which a user 22 is interacting via peripherals and interface device 14. For example, the host application program can be a video game, m.oAi~l c;m~ ion, scientific analysis program, or even an o~e~dLi-lg system or other application program that utilizes force feerlh~
Typically, the host application provides images to be displayed on a display output device, as described below, and/or other feedback, such as auditory signals.
Host computer system 12 p.er~.dbly includes a host microprocessor 16, random access memory (RAM) 17, read-only memory (ROM) 19, input/output (I/O) electronics 21, a clock 18, a display screen 20, and an audio output device 21. Host microprocessor 16 can include a variety of available microprocessors from Intel, Motorola, Advanced Micro Devices, or other manufacturers. Microprocessor 16 can be single microprocessor chip, or can include multiple primary and/or co-processors. Microprocessor preferably retrieves and stores instruetions and other neeecc~ry data from RAM 17 and ROM 19, as is well known to those skilled in the art. In the deseribed embodiment, host eo~ ul,;r system 12 ean reeeive sensor data or a sensor signal via a bus 24 from sensors of interface device 14 and other information. Host mieroproeessor 16 can receive or LldllSIllit data on bus 24 using I/O electronics 21, and can use I/O eleetronies to eontrol other peripheral deviees. Host co~ uLel system 12 ean also output a "force comm~nA" to interfaee device 14 via bus 24 to eause foree feeAh~k by the interfaee device.

- W O 97/12337 PCTAUS96/15340 - ' Clock 18 is a standard clock crystal or equivalent component used by host colllpu~t;r system 12 to provide timing to elctri~ l signals used by microprocessor 16 and other components of the co~ uL~I system. Clock 18 is ~cf ~eA by host colll~ul~l system 12 in the control process of the present invention, as described subsequently.
Display screen 20 is coupled to host microprocessor 16 by suitable display drivers and can be used to display images generated by host c~ puLe~ system 12 or other computer systems.
Display screen 20 can be a standard display screen or CRT, 3-D goggles, or any other visual interface. In a described embodiment, display screen 20 displays images of a sim~ tion or game environment. In other embodiments, other images can be displayed. For exarnple, images describing a point of view from a first-person pc~ e~;Live can be displayed, as in a virtual reality cimnl~tion or game. Or, images describing a third-person perspective of objects, backgrounds, etc. can be displayed. A user 22 of the host c~ ul~l 12 and interface device 14 can receive visual feedback by viewing display screen 20.
Herein, c~ uler 12 may be referred as displaying computer "objects" or "entities."
These colllL~ulel objects are not physical objects, but are logical software unit collections of data and/or procedures that may be displayed as images by COIll~ul~;l 12 on display screen 20, as is well known to those skilled in the art. For example, a cursor or a third-person view of a car might be considered player-controlled collllJuL~I objects that can be moved across the screen. A
displayed, cimnl~t~ (l cockpit of an aircraft might also be considered an "object", or the ~im~ tf~-aircraft can be considered a C~>Ill~U~l controlled "entity."
Audio output device 21, such as speakers, is preferably coupled to host microprocessor 16 via amplifiers, filters, and other circuitry well known to those skilled in the art. Host processor 16 outputs signals to speakers 21 to provide sound output to user 22 when an "audio event" occurs during the implementation of the host application program. Other types of peripherals can also be coupled to host processor 16, such as storage devices (hard disk drive, CD ROM drive, floppy disk drive, etc.), printers, and other input and output devices.
An interface device 14 is coupled to host co---~ulel system 12 by an interface bus 24. Bus 24 sends signals in one or both directions between host computer system 12 and the i"t. .r~e device. Herein, the term "bus" is int~n(~ to generically refer to any interface, connection, or communication link such as between host colll~uL~I 12 and a peripheral such as interface device 14 which typically includes one or more connecting wires, lines, cables, or other connections and that can be implemented in a variety of ways. In the preferred embodiment, bus 24 is a serial illL~.race bus providing data according to a serial c~llllllullication protocol. An interface port of host colll~uL~I system 12, such as an RS-232 serial interface port, connects bus 24 to host 35 c~-~L uler system 12. Other standard serial c~ llullication protocols can also be used for the WO 97/12337 PCT~US96/15340 serial interface and bus 24, such as RS-422, Universal Serial Bus (USB), MIDI, system-specific ports on a Sega, Sony, etc. game system, or other protocols or standards well known to those skilled in the art.
For example, the USB standard provides a relatively high speed serial interface that can 5 provide force feeAb:~rk signals in the present invention with a high degree of realism. USB can also source more power to drive peripheral devices. Since each device that ~rcesses the USB is ~ign.orl a unique USB address by the host computer, this allows multiple devices to share the same bus. In addition, the USB standard includes timing data that is encoded along with dirrc~cllLia'l data. The USB has several useful features for the present invention, as described 10 throughout this specification.
An advantage of the present invention is that low-bandwidth serial communication signals can be used to interface with interface device 14, thus allowing a standard built-in seria'l intf~.rfzlr~
of many colll~ute,~. to be used directly. Alternatively, a parallel port of host cun.~ulel system 12 can be coupled to a parallel bus 24 and commllnic~t~ with interface device using a parallel 1S protocol, such as SCSI or PC Parallel Printer Bus. In a dirrc.t.,L embodiment, bus 24 can be connected directly to a data bus of host computer system 12 using, for example, a plug-in i~ltelr ce card and slot or other access of colllpuL~l system 12. For example, on an IBM AT
compatible computer, the interface card can be implemented as an ISA, EISA, VESA local bus, PCI, or other well-known standard il~Lc ~ce card which plugs into the motherboard of the 20 colnpuLcl and provides input and output ports for connecting the main data bus of the co"~uLci to bus 24.
In another embodiment, an additional bus 25 can be included to cS~ icate between host computer system 12 and hlL~lrac~ device 14 Since the speed re~h~ G~t for communication signals is relatively high for outputting force feerJhzlrk signals, the single serial 25 interface used with bus 24 may not provide signals to and from the interf~e device at a high enough rate to achieve realistic force fee~lh~ck. In such an embodiment, bus 24 can be coupled to the standard serial port of host computer 12, while an additional bus 25 can be coupled to a second port of the host computer system. For example, many c<~-pult;r systems include a "game port"
in addition to a serial RS-232 port to connect a joystick or similar game controller to the co~ uLel.
30 The two buses 24 and 25 can be used simultaneously to provide an increased data bandwidth. For example, microprocessor 26 can send sensor signals to host computer 12 via a game port bus 25, while host computer 12 can output force feedb~k signals from a serial port to microprocessor 26 via a uni-directional bus 24. Such an embodiment is described in greater detail below with respect to Figure 3. Other combinations of data flow configurations and buses can be implemented in 3s other embodiments. For example, game port bus 25 can be directly conn~ .cted from the sensors CA 02233206 l998-03-26 - W O 97/12337 PCT~US96/15340 28 (shown as bus 25a) or from the sensor interface 36 (shown as bus 25b) to the game port of the host computer 12 in some embodiments (as in Figure 3).
Another illlL,olLallL feature that is desirable in the force fee~h~rk control system 10 is a communication line between the host colll~uL~r 12 and the interface device 14 that incc~ aLt;s s user safety. Since forces are being g~llcildL~d on user object 34 by actuators 30 (as explained below), the interface device can potentially present some danger to a user if the buses 24 and/or 25 become disconnected during operation. Once the control of the force fee~lh~ck from the host cullll~uLer is disabled, the forces generated can become unpredictable. Thus, it is desirable for the actuators 30 to become deactivated if buses 24 and/or 25 are disconn~cte~1 during operation. In the 0 present invention, this feature can be implemented by design:~ting one of the lines of bus 24 and/or one of the lines of bus 25 as a "life line." The microprocessor periodically reads the life line signals to check if the buses are still connected. If the device is unplugged, the microprocessor will not detect the signal and will consider the state to be "disconntoct~-l " If no signal is clet~ct~-l then the microprocessor autom~tic~lly sends a deactivation signal to the actuators. Likewise, in 15 some embodiments, the host cunl~uLe~ can periodically check a life line signal output from the microprocessor on one of the buses 24 or 25. If no such signal is detected, the host colll~uLt;l can output a deactivate actuators comm~n-l on the other bus 24 or 25 (if still connlocte ~l). In embodiments having no microprocessor 26 (see below), the life line can be coupled to a safety switch 41. For an RS-232, RS422, or game port interface, one of the control lines in the interface 20 bus can be used as the life line. When using a USB interface, the "Attach-Detach" feature inherent to the USB standard can conveniently be used for the life line.
It should be noted that bus 24 and bus 25 can be provided as either a uni-directional bus or a bi-directional bus. In the embodiment having both buses 24 and 25, they can both be uni-directional buses, which have several advantages for the described embodiments. This allows the 25 full bandwidth of each bus to be used for one direction of data transfer, causing data communication rates to double compared to normal bi-directional use of each bus. Also, the commnnic~tion protocol for each bus can be simplified in uni-directional operation. In addition, uni-directional driver software on the host co~ uL~l can be simpler and require less processor time than software for bi-directional c~ tion.
In yet another embodiment, signals traveling between the host colll~uLer system 12 and the interface device 14 can be sent and received using wireless transmission. For example, an ~nt.onn,. can be included in both interface device 14 and in host colll~uLer 12 to send and receive electrom~gn~tic signals, such as radio signals, infrared signals, or microwave signals. In such an embodiment, a "bus" 24 or 25 can conce~Lually include a medium or channel of 3s tr~n~rnic~ion/reception, such as the air.

- W O 97/12337 PCT~US96/15340 Interface device 14 is a peripheral for host 12 that includes a local microprocessor 26, sensors 28, actuators 30, a user object 34, optional sensor i~ ,r~e 36, an optional actuator interface 38, and other optional input devices 39. T.~l~, r;lre device 14 may also include additional electronic components for communicating via standard protocols on bus 24. For example, a s separate Universal Asynchronous Receiver/Tr~n.cmitt.-r (UART) or level shifter might be included to receive/convert signals on bus 24; or, such components can be included on microprocessor 26.
The embodiment of Figure 2 provides a control loop between microprocessor 26, ~-L~ It~ 30, user object 34, and sensors 28 (which are connected back to microprocessor 26). Unlike the prior art embodiment shown in Figure 1, the host computer 12 is not inclll~le-1 in the control loop, thus lo freeing the host of many routine tasks and allowing it to allocate host processor time to other tasks. The microprocessor 26 can receive high level comm~n~lc from the host and handle the routine tasks of the control loop in reflex processes, as discussed below.
In the preferred embodiment, multiple interface devices 14 can be coupled to a single host computer system 12 through bus 24 (or multiple buses 24) so that multiple users can 5 cimlllt~neously interface with the host application program (in a multi-player game or simlll~tion~
for example). In addition, multiple players can interact in the host application program with multiple interface devices 14 using networked host COlllpU~ i 12, as is well known to those skilled in the art.
Local microprocessor 26 (or "device microprocessor") is coupled to bus 24 and is20 preferably included within the housing of interface device 14 to allow quick commnnic~tion with other components of the interface device. Processor 26 is considered "local" to interf~e device 14, and is a separate microprocessor from any microprocessors in host colll~uL~r system 12. For example, the local processor 26 does not share a data bus, address bus, and/or memory with the host processor(s) 16. "Local" also preferably refers to processor 26 being ~le~li:~tt--l to force 2s fee~lh~t~k and sensor I/O of interface device 14, and being closely coupled to sensors 28 and actuators 30, such as within the housing for interface device or in a housing coupled closely to interface device 14. Microprocessor 26 is provided with software instructions to instruct the processor to wait for commands or requests from computer host 16, decode and/or parse the commands or requests, manipulate data and select routines, and handle/control input and output 30 signals according to the commands or requests. In addition, processor 26 I!r~r~,lably operates independently of host colll~ul~l 16 by reading sensor signals and r~lclll~ting a~l~.iate forces from those sensor signals, time signals, and a "force routine" selected in accordance with a host commzln~l, as described with reference to Figure 7. Suitable microprocessors for use as local microprocessor 26 include the MC68HC71 lE9 by Motorola and the PIC16C74 by Microchip, 3s for example; other well-known types of microprocessors can also be used. Microprocessor 26 can include one microprocessor chip, or multiple processors and/or co-processor chips. In other embodiments, microprocessor 26 can includes a digital signal processor (DSP) chip. Local -' W O 97/12337 PCT~US96/15340 memory 27, such as RAM and/or ROM (EPROM, EEPROM, etc.), is preferably coupled to microprocessor 26 in interface device 14 to store instructions for microprocessor 26 and store temporary and other data. Microprocessor 26 can receive signals from sensors 28 and provide signals to actuators 30 of the interface device 14 in accordance with instructions provided by host s col"l~uL~;r 12 over bus 24.
In addition, a local clock 29 can be coupled to the microprocessor 26 to provide timing data, similar to system clock 18 of host colll~ul~, 12; the timing data might be required, for example, to compute forces output by actuators 30 (e.g., forces dependent on "lrlll"t~' velocities or other time dependent factors). In ~lt~rn~t~ embodiments using the USB co~ ic~tion 0 interface, timing data for microprocessor 26 can be retrieved from the USB signal. The USB has a clock signal encoded with the data stream which can be used. Alternatively, the Isochronous (stream) mode of USB can be used to derive timing information from the standard data L,~ ,e rate. The USB also has a Sample Clock, Bus Clock, and Service Clock that also may be used.
For example, in the preferred "reflex" embodiment, host computer system 12 provides high level supervisory comm"ntlc to mi~io~lOc~ssor 26 over bus 24, and microprocessor 26 manages low level force control ("reflex") loops to sensors 28 and actuators 30 in accordance with force routines selected by the high level commands. In a different embodiment, host co~ ul~r 12 can provide low-level force comm~nclc over bus 24, which microprocessor 26 directly transfers to actuators 30. These embodiments are described in greater detail with respect 20 to the method of Figure 7.
Microprocessor 26 preferably also has access to an electrically erasable programmable ROM (EEPROM) or other memory storage device 27 for storing calibration parameters. The calibration parameters can compensate for slight manufacturing variations in different physical ~lo~elLies of the components of different intPrf"~e devices made from the same m"nllf~ctllring 2s process, such as physical dimensions. The calibration parameters can be determined and stored by the manufacturer before the interface device 14 is sold, or optionally, the parameters can be determined by a user of the interface device. Ihe calibration parameters are used by processor 26 to modify the input sensor signals and/or output force values to ~ctll~t- rs 30 to provide approximately the same range of forces on obiect 34 in a large number of mzlnllf:~r.tl-redi,.t...r;.--e 30 devices 14. The implementation of calibration parameters is well-known to those skilled in the art.
Microprocessor 26 can also receive commands from any other input devices in- l~lcle-l on intrrf~-e apl?dldlus 14 and provides ~o~ le signals to host computer 12 to indicate that the input information has been received and can send any information included in the input 35 information. For example, buttons, switches, dials, or other input controls on interface device 14 -WO 97/12337 PCT~US96/15340 or user object 34 can provide signals to microprocessor 26. Input information might be directly sent to the host co~ ut~l from the microprocessor, or it may be processed or combined with other data that is sent to the host.
In the L~c;fG~l~d embodiment, sensors 28, actuators 30, and microprocessor 26, and 5 other related electronic components are inr~ l in a housing for int~rf~e device 14, to which user object 34 is directly or indirectly coupled. Alternatively, microprocessor 26 and/or other electronic components of interface device 14 can be provided in a separate housing from user object 34, sensors 287 and actuators 30. Also, additional mechanical structures may be included in interface device 14 to provide object 34 with desired degrees of freedom. An example of such a 10 mlo~h~ni.~m is described with reference to Figure 8.
Sensors 28 sense the position, motion, and/or other characteristics of a user object 34 of the interface device 14 along one or more degrees of freedom and provide signals to microprocessor 26 including information representative of those characteristics. An example of an embodiment of a user object and movement within provided degrees of freedom is described 1S subsequently with respect to Figure 8. Typically, a sensor 28 is provided for each degree of freedom along which object 34 can be moved. Alternatively, a single compound sensor can be used to sense position or movement in multiple degrees of freedom. An example of sensors suitable for several embodiments described herein are digital optical encoders, which sense the change in position of an object about a rotational axis and provide digital signals indicative of the 20 change in position. The encoder, for example, responds to a shaft's rotation by producing two phase-related signals in the rotary degree of freedom. Linear optical encoders similarly sense the change in position of object 34 along a linear degree of freedom, and can produces the two phase-related signals in response to movement of a linear shaft in the linear degree of freedom. Either relative or absolute sensors can be used. For example, relative sensors only provide relative angle 2s information, and thus usually require some form of calibration step which provide a reference position for the relative angle information. The sensors described herein are primarily relative sensors. In consequence, there is an implied c~lihr~tion step after system power-up wherein a sensor's shaft is placed in a known position within int~rf~e device and a calibration signal is provided to the system to provide the reference position mentioned above. All angles provided by 30 the sensors are thereafter relative to that reference position. Alternatively, a known index pulse can be provided in the relative sensor which can provide a reference position. Such ~lihr~tion methods are well known to those skilled in the art and, therefore, will not be discussed in any great detail herein. A suitable optical encoder is the "Softpot" from U.S. Digital of Vancouver, Washington.
35Sensors 28 provide an electrical signal to an optional sensor interface 36, which can be used to convert sensor signals to signals that can be interpreted by the microprocessor 26 and/or host co~ uLel system 12. For example, sensor interface 36 receives the two phase-reiated signals from a sensor 28 and converts the two signals into another pair of clock signals, which drive a bi-directional binary counter. The output of the binary counter is received by microprocessor 26 as a binary number representing the angular position of the encoded shaft. Such circuits, or equivalent 5 circuits, are well known to those skilled in the art; for example, the Quadrature Chip LS7166 from Hewlett Packard, California performs the functions described above. Each sensor 28 can be provided with its own sensor interface, or one sensor interface may handle data from multiple sensors. Alternately, microprocessor 26 can perform these interface functions without the need for a separate sensor interface 36. The position value signals can be used by microprocessor 26 10 and are also sent to host computer system 12 which updates the host application program and sends force control signals as ap~,uL"iate. For example, if the user moves a steering wheel object 34, the colll~u~ system 12 receives position and/or other signals indicating this movement and can move a displayed point of view of the user as if looking out a vehicle and turning the vehicle.
Other interface mech~nicmc can also be used to provide an a~,u~,iate signal to host colllpuLer ls system 12. In alternate embodiments, sensor signals from sensors 28 can be provided directly to host computer system 12, bypassing microprocessor 26. Also, sensor interface 36 can be included within host co~ ulel system 12, such as on an interface board or card.
Alternatively, an analog sensor such as a potentiometer can be used instead of digital sensor for all or some of the sensors 28. For example, a strain gauge can be co.~ le~l to 20 measure forces on object 34 rather than positions of the object. Also, velocity sensors and/or accelerometers can be used to directly measure velocities and accelerations on object 34. Analog sensors can provide an analog signal representative of the position/velocity/acceleration of the user object in a particular degree of freedom. An analog to digital converter (ADC) can convert the analog signal to a digital signal that is received and h~ lcled by microprocessor 26 and/or host 2s computer system 12, as is well known to those skilled in the art. The resolution of the ciet~ct~rl motion of object 34 would be limited by the resolution of the ADC.
Other types of hlL~Irace Cil~Uilly 36 can also be used. The interface allows the position of the mouse or stylus to be tracked and provides force feedback to the stylus using sensors and o,~. Sensor i"~lrac~ 36 can include angle d~;tellllillillg chips to pre-process angle signals 30 reads from sensors 28 before sending them to the microprocessor 26. For example, a data bus plus chip-enable lines allow any of the angle d~L~;IIIIh~ g chips to collllllunicate with the microprocessor. A configuration without angle-determining chips is most applicable in an embodiment having absolute sensors, which have output signals directly in~lic~ting the angles ~ without any further proc.-ccing, thereby requiring less culll~uLaLion for the microprocessor 26 and 3s thus little if any pre-processing. If the sensors 28 are relative sensors, which indicate only the change in an angle and which require further proceccing for complete determination of the angle, then angle-determining chips are more aL,~lupliate.

- WO 97/12337 PCT~US96/15340 Actuators 30 transmit forces to user object 34L of the interf~re device 14 in one or more directions along one or more degrees of freedom in response to signals received from microprocessor 26. Typically, an actuator 30 is provided for each degree of freedom along which forces are desired to be transmitted. Actuators 30 can include two types: active actuators and s passive actuators.
Active actuators include linear current control motors, stepper motors, ic/hydraulic active actuators, voice coils, and other types of actuators that transrnit a force to move an object. For example, active actuators can drive a rotational shaft about an axis in a rotary degree of freedom, or drive a linear shaft along a linear degree of freedom. Active 0 tr~nc~ cers of the present invention are preferably bi-directional, me~nin~ they can selectively transmit force along either direction of a degree of freedom. For example, DC servo motors can receive force control signals to control the direction and torque (force output) that is produced on a shaft. The motors may also include brakes which allow the rotation of the shaft to be halted in a short span of time. Other types of active motors can also be used, such as a stepper motor 15 controlled with pulse width modulation of an applied voltage, pneum~tic/hydraulic ~rbl~tor.c, a torquer (motor with limited angular range), or a voice coil actuator, which are well known to those skilled in the art.
Passive actuators can also be used for actuators 30. Magnetic particle brakes, friction brakes, or pneumatic/hydraulic passive actuators can be used in addition to or instead of a motor 20 to ~cllcldLc a damping rrcict~nre or friction in a degree of motion. An alternate plcrcll~,d embodiment only including passive actuators may not be as realistic as an embodiment inrlu~ling motors; however, the passive ~ ol~ are typically safer for a user since the user does not have to fight generated forces. Passive actuators typically can only provide bi-directional rrCict~nre to a degree of motion. A suitable magnetic particle brake for interface device 14 is available from 25 Force r .imite~l, Inc. of Santa Monica, California.
In alternate embodiments, all or some of sensors 28 and actuators 30 can be included together as a sensor/actuator pair tr~ncrl~lcer~ A suitable transducer for the present invention incln~ling both an optical encoder and current controlled motor is a 20 W basket wound servo motor manufactured by Maxon.
Actuator inferf~re 38 can be optionally connected between actuators 30 and microprocessor 26. Interface 38 converts signals from microprocessor 26 into signals aL,pl.)~l;ate to drive actuators 30. Interface 38 can include power ~mplifiers, switches, digital to analog controllers (DACs), and other components. In alternate embodiments, illt#lr~c~ 38 circuitry can - be provided within microprocessor 26 or in actuators 30.

_ - W O 97/12337 PCT~US96/15340 Other input devices 39 can optionally be included in interface device 14 and send input signals to microprocessor 26. Such input devices can include buttons, dials, switches, or other m~.ch~ni~m.c. For example, in embodiments where user object 34 is a joystick, other input devices can include one or more buttons provided, for example, on the joystick handle or base and 5 used to supplement the input from the user to a game or simnl~tion. The operation of such input devices is well known to those skilled in the art.
Power supply 40 can optionally be coupled to actuator hlte-rac~ 38 and/or actuators 30 to provide electrical power. Active actuators typically require a sepa dl~ power source to be driven.
Power supply 40 can be included within the housing of interface device 14, or can be provided as 0 a separate component, for example, connected by an electrical power cord.
Alternatively, if the USB interface, game port, or similar comm-lnic :~tion interface is used, interface device 14 can draw power from the bus 24 and/or 25 and thus have no need for power supply 40. This embodiment is most applicable to a device 14 having passive actuators 30, since passive actuators require little power to operate. For example, active actuators tend to require 5 more power than can be drawn from USB, but this restriction can be overcome in a number of ways. One way is to configure hlL~lr~c~ 14 to appear as more than one peripheral to host c.)..,puL~l 1'7; for example, each provided degree of freedom of user object 34 can be configured as a dirre.~", peripheral and receive its own allocation of power. This would allow host 12 to allocate more power to interface device 14. Alternatively, power from the bus 24 and/or 25 can be 20 stored and regulated by interface device 14 and thus used when needed to drive actuators 30. For example, power can be stored over time and then imm~ te.ly dissipated to provide a jolt force to the user object 34. A capacitor circuit, for example, can store the energy and ~lic~ip~t(~ the energy when enough power has been stored. Microprocessor may have to regulate the output of forces to assure that time is allowed for power to be stored. This power storage embodiment can also be 25 used in non-USB embodiments of interface device 14 to allow a smaller power supply 40 to be used. A power storage circuit embodiment is described in greater detail with respect to Figure 6.
Safety switch 41 is p.t;r~.dbly included in interface device to provide a mechanism to allow a user to override and deactivate actuators 30, or require a user to activate :~ctll~tc rs 30, for safety reasons. Certain types of actuators, .o~peci~lly active actuators such as motors, can pose a 30 safety issue for the user if the actuators unexpectedly move user object 34 against the user with a strong force. In addition, if a failure in the control system 10 occurs, the user may desire to quickly deactivate the actuators to avoid any injury. To provide this option, safety switch 41 is coupled to actuators 30. In the preferred embodiment, the user must continually ~tivate or close safety switch 41 during operation of int~rf~re device 14 to activate the actuators 30. If, at any 3s time, the safety switch is deactivated (opened), power from power supply 40 is cut to actuators 30 (or the actuators are otherwise deactivated) as long as the safety switch is open.

- W O 97/12337 PCT~US96/15340 For example, a L~lc;ellcd embodiment of safety switch is an optical switch located on user object 34 (such as a joystick) or on a convenient surface of a housing enclosing interface device 14. When the user covers the optical switch with a hand or finger, the sensor of the switch is blocked from sensing light, and the switch is closed. The ~rtll~tnr.C 30 thus will function as long 5 as the user covers the switch. Such an optical switch can comprise an ~llbi~llt light detector, which simply senses when ~Ptrrttod ambient light has been blocked by the user when the user covers the detector with a hand. Alternatively, an emitter/~etrctor pair can be provided in a small recess on the interface device 14. The emitter emits a particular type of ele~ ..Ptic r~ tinn, such as infrared light, out away from the interface device into exterior space. When the user covers the rec~sce~l emitter/detector, the emitted radiation reflects from the user's hand or finger so that the detector detects the radiation and activates the motors. Such optical switches are well known to those skilled in the art. Other types of safety switches 41 can be provided in other embodiments. For example, an electrostatic contact switch can be used to sense contact with the user, a button or trigger can be pressed, or a dir~l~ type of sensor or switch can be used.
s Further embodiments of safety switches of the present invention are described with reference to Figures 9 and 10.
In the preferred embodiment, there is additionally included a "safety ramping routine"
which the microprocessor 26 implements when the safety switch 41 is opened and closed. When the safety switch 41 is opened, the forces output by ~rtll~t~rs 30 are dropped to zero instantly.
However, when the safety-switch is then closed by the user, the output forces jump back up to the same magnitude that these forces were at before the safety switch was opened. This instant increase in the m~gnitudl- of forces creates a hazardous condition for the user. To counter this effect, the microprocessor preferably :~rces~~ a safety ramping routine in memory 27 that instructs the microprocessor to slowly ramp up the magnitude of the forces over a predefined time interval after the safety switch is closed. After the predefined time interval (e.g., 3 seconds), the forces are output at the full m:~gnitud~ provided before the switch was opened.
User object 34 is preferably a device or article that may be grasped or otherwise con~ d or controlled by a user and which is coupled to i,~l~. r~re device 14. By "grasp", it is meant that users may releasably engage a grip portion of the object in some fashion, such as by hand, with - 30 their fingertips, or even orally in the case of h~nrlir~rped persons. The user 22 can m~nipul~tP
and move the object along provided degrees of freedom to interf~re with the host application program the user is viewing on display screen 20. Object 34 can be a joystick, mouse, trackball, stylus, steering wheel, hand/foot pedal, mr~lic~l instrument (laparoscope, catheter, etc.), pool cue, hand grip, knob, button, or other article.
FIGURE 3, as detailed by FIGIJRES 3a and 3b, is a schematic diagram of an example of~
a specific embodiment 50 of the interface device 14. Local microprocessor 26, in this example, is SUBSTITUTE SHEET (RULE 26) =

, - W O 97/12337 PCT~US96/15340 -a PIC16C74 available from Microchip and having 14 address lines and 8 data lines. This microprocessor includes an internal architecture that splits memory into two partitions and allows fast program executions, and is thus well-suited for high speed force feeAh~c~ proce~ing This embodiment plcrel~Lbly includes local memory 27, such as ROM, as well as local clock 29 on s board the microprocessor.
Interface device 50 is intrn(lr~l to co.. iczlt.~ with host Colll~ulel 12, as exrl~inP-l with reference to Figure 2, using both a serial interface such as an RS-232 interf~ce as well as a second interface 25, which, in the described embodiment, a game port int~ re as typically found on an IBM-compatible personal computer (PC).
Sensors 28 are used to sense the position of user object 34 in provided degrees of freedom. In the described embodiment, sensors 28 are potentiometers 52, each potentiometer being coupled to a shaft which rotates in a degree of freedom as the user object 34 is rotated.
Each potentiometer outputs an analog voltage signal ("sensor signal") in proportion to the position of the user object in the measured degree of freedom. The potentiometers 52 are 15 powered by a five-volt signal provided on a power line 53 of the game port i~.l. .ri1~e (with reference to a ground line 53a of the game port interface, and where capacitors C1 and C2 are used for filtering the signal, as is well known to those skilled in the art). The potentiometers output their sensor signals on the game port interface bus 25. Each potentiometer can include a trimmer mrrh~ni.~m to allow reorientation with respect to the user object 34 and allows the user object to 20 be recalibrated when in use, as is well known to those skilled in the art. Analog potentiometers are used in this embodiment since the standard game port in~elr~e requires this type of sensor.
Other types of sensors, such as digital rotary encoders, can be used for sensors 28 in other embodiments using a dirr~ L type of interface bus 25.
In ~ltern~tr embodiments, digital switches or contacts can be used in place of analog 2s potentiol"e~el~ 52. For example, some types of joysticks used by video game systems or culll~uLel~ are "digital joysticks" that provide digital signals corresponding to a position or direction of the joystick. Such digital signals do not typically describe a position of the joystick within a rotary or linear degree of freedom as do "analog joysticks", but instead describe simple directions such as "up", "left", or "diagonal up-left". Contact switches, for example, can be 30 placed at four positions (up, down, left, right) around a joystick to detect eight possible directions (those four directions and the four intermediary diagonal directions). When the joystick is moved in one of these directions, the ap~lu~.iate contact switch(es) are closed and a corresponding signal is output. "Joypads" and like controllers for video games typically use this arrangement. For the described and other embodiments of the present invention, such a digital joystick can be inrhlclecl 3s to send digital representations of the joystick's direction to host COlll~uLel 12, while ~ctll~torc 30 can provide fGrces on the joystick in provided degrees of freedom.

SU~.~ 111 ~JTE SHEET (RULE 26) CA 02233206 l99X-03-26 - WO 97/12337 PCTAUS96/lS340 The game port inferf~t~e bus 25 is used to send sensor data describing the position of the user object 34 in provided degrees of freedom to the host co~ uL~r. For example, the potentiometers 52 can detect the position of a joystick within the leftlright degree of freedom and within the forward/back degree of freedom. This information is presented to the game port S interface and converted to digital signals by RC circuitry typically located in host co~ ul~l system 12 and used with the game port, as is well known to those skilled in the art. The digital signals are serially tr~ncmitterl over bus 25 that is connected to the standard game port of host co~ uLe~l 12.
In this respect, interface device 50 u~tildL~S as a typical prior art joystick in reporting the position of the joystick directly to the host colll~uLel. The host c~ uL~r can then update a process such as lo a game in response to the received position information. The interface device 50 can thus advantageously be used with any available ~.unwal~ and hardware that is colll~aLible with a standard joystick.
In the present embodiment, the sensor data is preferably sent directly to the host c~ uL~I
12 over game port interface bus 25 without being sent to microprocessor 26. This is because the 15 game port interface processes the analog signals into digital signals using the RC circuit, which prevents other components such as microprocessor 26 from also reading the potentiometer data.
In some embodiments, the microprocessor may need sensor reading information to provide force commands to the actuators; in such an embodiment, a second set of sensors can be used, as described below.
The present embodiment also includes a second interface bus 24 coupled between the host collll,uLel 12 and interface device 50 which is preferably implemented as a serial RS-232, RS442, or similar interface. In the described embodiment, this interface bus is used exclusively for providing force feedback commands from the host computer to the interface device 50. An RS-232 level shifter 54 converts signals to the ~pl~pliate voltage levels for tr~n~mi~sion and reception. The host computer 12 sends serial collllll~lds out from its standard serial port on line RxD of the RS-232 interface. Shifter 54 receives and converts these comm~n~ls to the n~ce~s, ry logic level (e.g., S volts) and provides the comm~n~lc to microprocessor 26. Microprocessor controls motors 66 in response to the received comm~nlls The TxD line of the RS-232 i"l~ r;1~e of the level shifter need not be connected to the host.
Alternatively, the TxD line can be cnnnect~-d between interface device 50 and host computer 12 in some embodiments to provide interface device product information and other required information from the interface device to the host. Such product information can include the serial number, version number of the device 50, version number of fillllw~e of the - microprocessor/local memory, release date of the fillli~c and/or device 50, model number, host comm~nrl~ that are compatible with device 50, the number of axes or degrees of freedom of user object 34 that are available and their description, the resolution of sensors or ~ctll~tors, andlor CA 02233206 l998-03-26 - W O 97/12337 PCTAUS96/lr.340 copyright information. This information can be stored in ROM or other memory 27 on the interface device 50. Also, status information and sensor data from sensors 28 can be provided on this TxD line if, for example, game port bus 25 becomes disconnPctr~l or unused.
Since the entire bandwidth of the serial RS-232 intrrf:lre is used for receiving force s feedback comm,.ncls from the host computer, a greater tr,.ncmiscion rate for force signals can be implemented and a greater degree of realism and control can be provided in the forces output on the user object. In addition, the game port is implemented as in standard joysticks that do not provide force feedback. The interface device 50 can thus be conntoct~l to any ColllpuLel with a game port and can function as a non-force-feeclh:~ck joystick with any software that is co"lL,alible 10 with non-force-feedback joysticks. If software is available on host computer 12 to implement force feedback commands, the interface device 50 can also take advantage of that functionality.
This is important in that the interface device is compatible with the presently available software applications and is compatible with new force feedback software as that software is introduced.
This provides a more marketable i,l~e,~e device than a pure force feef'h:~ck joystick until force 15 feeAh~rk software is more widely available.
The present embodiment also preferably includes a co"~ unication line safety feature as described with reference to Figure 2. To allow the microprocessor 26 to easily monitor the status of the connection of the serial bus 24, one of the lines of bus 24 is coupled to the microprocessor.
In the described embodiment, the DTR line 51 of the RS-232 interface is coupled (through level 20 shifter 54) to a digital input (B6) of the microprocessor. The PIC microprocessor of the described embodiment includes a universal asynchronous receiver/transmitter (UART) on the chip itself.
The mic.o~,,uces~.or checks for a logical low state on the DTR line to conri.", that the serial bus 24 is connected. When the DTR line carries a logical high state, the serial bus/cable is ~csllm~l to not be connrctc~l and the microprocessor sends a disable signal to the motors 68 on line 60. The 2s host CClll~uLt:l 12 can also control the state of the signal on the DTR line to disable the motors in like manner when desired. In other similar embodiments, a UART could be provided as a sep~aLe~ component. In other embo-limrntc, the host co""~uLe, can send a signal out to the microprocessor periodically and the microprocessor can check for this signal to ensure the connection of the bus is still intact. The bus 25 is not checked in the described embodiment, but 30 can be monitored in alternate embodiments.
In other embo-limrntc, other types of interfaces can be implemented as serial interfaces to be used as buses 24 and/or 25. For example, video game consoles such as the Sega Saturn or the Sony PlayStation do not have a serial port or a game port as described above, but instead have a control port having a parallel interface. However, a serial interface can be em~ tr-l by using the 3s input and output lines of the parallel port. For example, the "up", ''down", "left" and "right"
control signal lines of the Sega Saturn can be used as lines which encode the sensor data (such as - W O 97/12337 PCT~US96/lS340 from a digital encoder or potentiometer) and button data and send that data to the host, and the output lines TH, TR, and TL from the Sega Saturn can be used to encode the host comm~n-l.c to the microprocessor 26, thus providing two way commllnic~tion between host co~ ulei 12 and interface device. A serial protocol can be used, where one output line (e.g., TH) is used in place of 5 the TxD line described above. Another line (e.g., TR) can be used in place of the DTR line. Note that the potentiometer data would be read by the microprocessor 26, processed, and sent to the host in such an embodiment. In addition, the power and ground lines can be used from a video game console port similarly to power line 53 of an RS-232 interface.
Handle buttons 56 are included as other input devices 39 as shown in Figure 2. The o buttons 56 include switches and a 5-volt input from the game port interface, as is well known to those skilled in the art. Fourteen buttons are indicated as available in embodiment 50, but a different number of buttons or other types of switches, knobs, or controls can be included in other embodiments. The button input signals are input to data ports D0-D7 of microprocessor 26 on bus 57. Microprocessor 26 outputs the digital button signals on lines 55 of game port i..l~ . r~.~e 15 bus 25.
Thermistors 58 are coupled to the microprocessor 26 and sense the te~llpeldLul~ of motors 68. The thermistors convert a sensed Lelll~c.dture into an electr~ signal as is well known to those skilled in the art. For example, thermistors such as RL2006-1600-103-D1 available from Keystone Thermometrics can be used. The microprocessor 26 reads the t~;lllpeldLulc; signals on 20 buses 59 to determine if the motors are overhe~ting The microprocessor can deactivate the motors using the EN signal 60 when an overheating condition is sensed (and can activate overtemp LED 62 to inform the user of the overheated condition). Other types of telll~e.dLu,e-sensing components can be used in other embodiments. For example, a Lclll~cldLulc sensing integrated circuit can be used. In yet other embodiments, the temperature of the motors can be 2s sensed or determined using other components or steps. For example, the voltage drop across the motor windings can be measured by an analog to digital converter (ADC) that, for example, can be included on the microprocessor 26. The voltage drop across the motor windings is typically a reliable indicator of the temperature of the windings material so that the Lell~cldt~ can be determined by the amount of the voltage drop. Alternatively, a software estimation of the motor 30 tclllpe.dL~llt; can be performed by the microprocessor 26. The microprocessor can keep a running average over time of the amount of current sent to the motors 68. The thermal cha,d.;Lc;li~Lics of the motors are provided to the microprocessor from memory or in software, and the software on the microprocessor can thus Pstim~e the temperature of the motors at any desired time. This is a low cost solution for providing overheat protection since no extra ha.-lw~e components are 35 needed, but it may not be reliable in some situations due to variations in ambient air Lt;lllp~,ldLulc and other factors that can change the thermal response of the motors 68 without the knowledge of the microprocessor. 22 - W O 97/12337 PCT~US96/15340 Secondary potentiometers 62 are optional extra sensors included to provide sensor data to microprocessor 26 describing the position of tne user object 34. As explained above, the standard game port interface requires that sensor data be directly sent to host co~ ulel 12 from potentiometers 52 and that microprocessor 26 cannot read the sensor signals. However, the S microprocessor 26 may still need the sensor data to c,.l~nl~t~ force values or otherwise t1~t~rmine the control signals sent to actuators 30. Secondary potentiometers 62 can provide sensor data to the microprocessor independently of potentiometers 52 so that the microprocessor receives the needed data. The secondary potentiometers can be analog potentiometers, rotary encoders, or other types of sensors similar to sensors 28. These potentiometers can be coupled to the same 0 rotational shaft (not shown) as potentiometers 52, for example. Microprocessor 26 receives the sensor signals from secondary potentiometers 62 on buses 63.
The 5 volt signal from line 53 of the game port interface is used to power handle buttons 56, LED's on device 50, potentiometers 52 and 62, and other logic components of the interface device 50. The game port power line 53 is preferably used instead of a power signal from interface 24, since the game port interface is always used when the interface device 14 is connected, while the interface 24 may be disconnected for non-force-feedh~k uses of the intt-rf~e device 50. The other components, such as motors 68, are powered by the power supply partition, as explained below. In alternate embodiments, power lines from other interfaces can be used.
Power supply partition 64 is preferably a sepaldte power section of interface device 50 that drives the actuators 30 of the interface device. Power supply partition 64 includes ~ct~l~t~-rs 30 and power circuit 66. Actuators 30 preferably are two motors 68, such as 24 V motors available from Mabuchi, Japan in the described embodiment, where each motor is used to provide forces along one degree of freedom of the user object 34. A joystick typically has two degrees of freedom, forward/back and left/right. If additional degrees of freedom are included in int~rf:~re device 50, then additional motors can be added as ~,.o~liate. Microprocessor 16 provides two signals to each motor: a direction (DIR) signal 70 and a pulse width modulation (PWM) signal 72. The direction signal instructs the motor 68 to provide force along one of the two directions within its degree of freedom. The PWM signal controls the magnitude of the force by providing a signal having a constant frequency (e.g., 10 KHz) and a varying duty cycle. A high duty cycle provides high m:~gnit~ forces, and vice versa. The DIR and PWM signals from microprocessor 26 are input to driver amplifiers 74 which can be considered as part of actuator ~ interface 38. Amplifiers 74 have 24-volt inputs from a 24-volt power supply 40 and provide the control signals from microprocessor to drive motors 68 at the proper high current level.
Microprocessor outputs an enable signal on line 60 which permits the motors 68 to be 35 activated and to output forces on user object 34. A safety or "~ lm,.n" switch 41 is also in~ln~Pd in embodiment 50 to allow the user to control when the motors can output forces.

= - W O 97112337 PCT~US96/15340 --Switch 41, as described with reference to Figure 2, must be closed by the user in order for the motors 68 to be activated. A S-volt signal from the game port interface is input on line 78 to an NOR gate 70 when the safety switch 41 is open. When the safety switch is closed, the S-volt signal runs to ground, and a low enable signal is provided to NOR gate 70. The output of the 5 NOR gate is provided to driver amplifiers 74 as an enable input. Thus, if either the safety switch 41 is closed, or if an enable signal is sent by microprocessor 26 on line 60, motors 68 are activated and will output forces according to the control signals on lines 70 and 72. The 5-volt signal on line 78 is also preferably input to rnicroprocessor 26 so the microprocessor can monitor the state of the safety switch. Safety switch 41 can be a device as described with reference to 0 Figure 2, or can be a safety switch of the present invention described with Icf~ ce to Figures 9 and 10. Plcrti~dbly, "Active" LED 76 is ilhlmin~te~l when the motors are activated so that the user knows when the motors are exerting force.
Power circuit 66 is also preferably included in power supply partition 60 and is used to convert the 24 volt output from power supply 40 to a 5-volt signal used in various components of power supply partition 64, such as the driver amplifiers 74. The power supply 40 is preferably connected to a standard AC wall socket.
The power supply partition 60 allows the force fee~lh~rk portion of interface device 50 to be separated and used independently from the other components in the device. Thus, if ;,.t~ . r~re device 50 is being used as a standard joystick and is only conn~cte-l to the game port i.,l~ . r~re of 20 host computer 12, then the 5-volt signal from the game port is used while the power supply partition is unused and the 12-volt power supply 40 need not be plugged into an AC wall socket.
Tne 12-volt power supply 40 is plugged into a wall socket if force fee-lh~rk is to be implemented on device 50.
In an alternate embodiment of interface device 50, microprocessor 26 need not be included 2s and can be replaced by hard-wired logic. The motors 68 can be controlled directly by host computer 12 using low or high level comm~n~ls as described below with reference to Figure 7.
As in the embodiment described above, game port interface bus 25 sends only sensor signals to the host computer, and the serial interface bus 24 only sends host commands to the intr~ re device. The host coll~ul~r can c~lrnl~te force values and send the low level comm~n~ls to the 30 in~rf~re device. A level shifter and shift register, for example, can be used to read in the serial comm~n-l~ and provide the commands to logic provided on a field pro~ lllable gate array (FPGA), which can be used to issue force values to the actuators as instructed by the low level cu..~ tls from the host (as described with reference to Figure 7). Since serial port intt~ e bus 24 is used exclusively to send low level host commzln~lc to the actuators, a greater bandwidth and 35 more realistic force feef~b~ck can be provided. In an even simpler embodiment, the logic and shift register need not be used, and the serial interface can be used as simple parallel bit lines to provide - W O 97/12337 PCTAUS96/15340 -_ high and low logic signals to control the actuators 30. This embodiment is described in greater detail with respect to Figures 4a-4f.
In a different embodiment, the interface device 50 (or other interface device embodiments disclosed herein) can be made expandable to be controlled in other ways. For example, the s interface device 50 can be provided with a s~p~dl~ "access port" which is conn-octPtl to both sensors 28 and actuators 30. If the user desires that the host colllpulel 12 directly control the int~rf:~re device, a parallel bus can be connected between the access port and the host colll~!uLel (e.g., an interface card can be plugged into the host) so that the host directly receives sensors signals and so that host comm~n-l~ are directly provided to the actuators 30 or the actuator 10 int~ re 38. Preferably, the user can select a switch on the interface device to switch the communication lines from normal microprocessor control to direct host control through the access port (the microprocessor can be disabled when using direct host control). This would allow the host to provide realistic, direct force fee-lh~rk to the user, but would put a greater proces~ing burden on the host.
FIGURE 4a is a block diagram of an ~It~-rn~t~- "recoil" embodiment 80 of the force feec~b~rk control system 10 of Figure 2. In recoil control system 80, a local device microprocessor 26 is not nececs~ry to provide force fee-lh~rk and the host computer sends no signals, or only minim~l signals, to the i..l~.ri~re device 14. The recoil embodiment is thus a "reflex" interface device, in that forces are output on user object 34 independently of host 20 c~ uLel 12, and these forces depend only on local control events (e.g. a press of a button by the user). The reflex process includes ~uL~uUillg a force when a button is pressed with no collllllunication from the host.
The position of user object 34 is sensed by sensors 28, and the sensors send position or other related signals to the host computer 12. The control loop includes buttons or other input 25 devices 39, which sense actions of the user such as when the user pushes one of the buttons. The buttons 39 provide input signals to a recoil reflex control block 82, which is "hard wired" logic or other components instead of a microprocessor. The control block 82 sends activation signals to motor (or other type of actuator) 30, which outputs forces on user object 34 to complete the loop.
In alternate embodiments as disclosed with respect to Figures 4c-4f, the host c~llpuL~;r 12 can 30 additionally provide simple enable signals on line 81 to the control block 82 or activation signals on line 83 to actuator 30 to provide more realistic force feedback. Since the host computer is not included in the main control loop, the host can devote minim~l processing time to the control of force feedback and can process other tasks more efficiently, such as displaying images on display device 20 and other processes. In addition, the lack of a microprocessor 26 simp1ifies and reduces 35 the cost of the interface device 14, as discussed below.

-~ W O 97/12337 PCTAUS96/1~340 --FIGURI~ 4b is a schematic diagram of a first "recoil" embodiment 80 of Figure 4a.
lnt.orf,~f~e device 80 includes a joystick 84 or sirnilar user object 34 that is coupled to (or otherwise sensed by) sensors 28. Sensors 28 provide signals inrii~ting the position of the joystick in the provided degrees of freedom. For example, the sensors 28 pl~ft;ldbly are analog potentiometers s 86 similar to those described with reference to Figure 3. Joystick 84 also preferably includes one or more buttons 88 positioned thereon similar to buttons 56 d~scnhefl with reference to Figure 3.
Buttons or other controls can also be provided on a housing or base of the inttorf~f e device 14 in addition to or in place of buttons on the joystick.
The sensor data from sensors 28 is preferably output on game port interface bus 25 to host 0 co~ u~el 12. For example, analog potentiometers are preferably used, and the sensor data is converted to digital forrn in conformance with the game port interface standard.
In the described embodiment, force feedback is provided when the user activates input devices such as buttons 88. For example, when button #1 on interface device 80 is pressed by the user, the signal from button #l is sent over game port interface 25 with the other button data to ls host computer 12. The button #I data is also sent to a timer/pulse generator 90 included in int~rf;~re device 80. When timer/pulse generator 90 receives the button #1 signal, it outputs a motor control signal on line 92.
Line 92 is coupled to actuator interface 38, which in the present embodiment includes a transistor 94 used for amplifying the motor control signal. Actuator in~rf~e 38 is coupled to 20 motor 96 to provide an apL)Iopliate signal to drive the motor. Motor 96 provides a force in a particular degree of freedom to user object 34. A set of motor 96 and actuator interface 38 can be provided for each degree of freedom in which the user object is capable of moving. Alternatively, fewer motors 96 c~n be included if force is desired to be provided in only selected degrees of freedom.
2s Power supply 92 powers motor 96 and can be connected to a standard AC wall outlet, for example. Two switches 41 and 98 either activate or deactivate the motor 96 by conn~cfing or disconn.octing the power to the motor. Safety switch 41 is similar to the safety switch described with respect to Figure 3, and is closed when the user is pressing or otherwise closing a switch on the interface device 80. Switch 98 is a "recoil active" switch that is positioned on the exterior of the interface device and can be closed or opened by the user. When closed, the force feedback provided by motor 96 is operational, and when open, the force feedback is turned off. This allows the user to turn on force feedback when the user deems is a~luL~Iiate to output forces to the joystick in response to a button press. The user can turn off the force feer~h~ck when desired and/or when it is in~ ~uliate to cause forces to be output when a button is pressed.

CA 02233206 l998-03-26 - W O 97/12337 PCT~US96/15340 The present embodiment is intended for use as a low-cost "recoil" force fee~lb~ interface device which does not require a local microprocessor 26 and does not require the host c~ ulel 12 to send force feedback signals to provide forces on user object 34. Rather, the force feerlbark is initi~tP-I whenever the user activates an applvL,li~le control, such as a fire button 88 on a s joystick. Thus, the "recoil" force feedback is an independent "reflex process." Although the host COI1IPULGI does not send any signals or commands to initiate force fee~lh~ the forces in this embodiment can still realistically portray force events. For example, the host computer can run a simul~tion or video game in which the user controls a gun. The force output by motor 96 can be initi~tP~l when the user presses a button to fire the gun, and can provide a jolt or similar force to lo simulate the recoil of the shooting gun. In many such games, a button press will always fire the controlled gun in the game. The forces thus accurately simulate a recoil force when firing a gun during a game, a centrifugal force when activating thrusters on a .sim~ tPr1 plane or spacecraft, a vibration force for a certain action, or other force when performing some other action during a simnl:~tion or game. The forces can be provided in a predetermined or random direction(s).
This embodiment allows force feedback to be provided to a user in all software that is compatible with a standard joystick or other peripheral connected to a standard game port. No special force-control software is required for the host colnL~uLel, since the host issues no force commands to the interface device in this embodiment. Button #1, for example, is wired directly to timer/pulse generator 90, which activates the motor 96 when the button #1 is pressed. In one 20 embodiment, the timer/pulse generator can produce a single force jolt while a button is pressed.
Alternatively, the pulse generator 90 can cause motor 96 to output a series of force jolts at a dGL~,.,llhled frequency for the length of time that the user continuously presses the button.
When the user runs out of ammnnition during a game or is otherwise unable to perform a force feedback related action, then the user can open the recoil switch 98 to deactivate the motor.
25 This allows the force fee~lb~rk to be conveniently disabled when it is not ~ lu~liate to the game or ~imlll~tion. In addition, the user can open recoil switch 98 when the user does not desire to feel forces in response to button presses. The user also can open the safety switch 41 to disable force feedback (unless the hand-weight safety switch of Figure 9 is being used, in which it would not be possible for the user to operate the joystick without closing the safety switch). Other buttons on 30 the interface device 80 can also be connectP~i to individual motors and timer/generators in a similar fashion, or multiple buttons can be connPctP~i to one motor and timer/generator. Different motors can be set up to provide different force sensations depending on the particular button that the user presses, e.g., one motor can provide a gun recoil force on the user object, a different motor can - provide a vibration force of a vehicle, etc. Many combinations of button or other control 3s activations and dirrGlc,lt motor forces can be provided.

- WO 97/12337 PCTAUS96/15340 .~

FIGURE 4c is a schematic diagram of a second embodiment 100 of the "recoii" i~ r~fe device of Figure 4a. Interface device 100 is more functional than i~ r~ce device 80, since simple logic states can be sent by the host c~JIll~uLt;l 12 as a control signal to enable or disable the force feeAh~ck on the interface device 100 to help correlate force feeAb~k with game or .sim~ tion events implemented by the host. Potentiometers 86, buttons 88, motor 96, motor illt~"race 94, and switches 41 and 98 are similar to the equivalent components described with Ic;r~lt;nce to Figure 4b.
As referred to herein, the terms "activate" and "deactivate", as applied to zl~tll~t~n~ or reflex processes, refers to directly causing the actuators to output or remove a force. For example, 0 an activation signal will cause the actuator to output force when the actuator receives the activation signal, and a deactivation signal will turn the actuator off and/or remove output forces (assuming that no other disabling signals are in force). In contrast, the terms "enable" and "disable" refer to either allowing or not allowing the motors to be controlled by other activation or deactivation signals. For example, if a disable signal has been sent to the actuator interface, or if the a;LuaL~
are disabled by opening recoil switch 98 and cutting power, the a~;Lua~ul will not output forces when an activation signal is received (or at any other time). If an enable signal is sent, the actuators are able to output forces when an activation signal is received and will remove all forces when a deactivation signal is received. An actuator can output forces when all enable signals are set to "enable" and when an activation signal is received. In addition, reflex processes are also referred to herein as being "enabled" or "disabled", where it is meant that the process of OuLL~uLtillg forces in response to local events is either operation (enabled) or not operational (disabled). For example, a recoil reflex process that is disabled means that the process of o~ lg forces in response to the user pressing a button is not functional.
Interface device 100 includes a selection block 102 which is coupled to a control signal line 104 from a button on the interface device. In addition, a host line 106 (or multiple host lines in ~lt~orn~ive embodilllel~t:j) is coupled to the selection block 102 from a parallel bus 105 CO.~ lr~l to host computer 12. Host line 106 is used by the host colll~uL~I to enable or disable motor 96.
In the described embodiment, line 106 is connected to a serial port of host colll~uLeL 12 that is used as a parallel port in the present embodiment. For example, an RS-232 port of the host co~llL)uler can be coupled to parallel bus 105. The DTR line of t'ne RS-232 interface can be used as a parallel line carrying a low or a high signal. This DTR line would be host line 106 that is used to enable or disable the actuators. Other lines of the RS-232 interface could also be used.
The present embodiment thus treats the serial RS-232 interface as a parallel interface and does not require a UART or other serial support chips, thus reducing the cost of the device 100 significantly. In ~ltPnl~t~ embodiments, other interfaces can be used. For example, parallel bus 105 can be coupled to a standard parallel port of host co~ JuL~- 12.

-- W O 97/12337 PCT~US96/15340 --Selection block 102 outputs a pulse signal on control line 108 to activate motor 96 when the button sends an activation signal on line 104 and when the host C~ uLt~ sends an enable signal on line 106. If either of these signals is not in a high state (or equivalent), the motor cannot be activated. The selection block 102 can be implemented in a number of possible ways. For example, FIGURE 4d illustrates a functional schematic in which button line 104, host line 106, and a line from timing/pulse generator 90 are inputs to an AND gate 110, and the output of AND
gate 110 is provided as a control signal on line 108 to motor interface 94. FIGURE 4e illustrates an alternate schematic in which button line 104 is input to triggered pulse generator 90 that outputs a pulse (or pulses) when a signal is received indicating that a button has been pressed by the user.
The output of the triggered pulse generator 90 and the enable line 106 from host ColllL)uL~I 12 are input to AND gate 110 which outputs the control signal on line 108 to the motor 94 when both inputs are high.
The enable line 106 from the host c~JIn~uLt;l can be implemented as a direct line from a serial or other port of the host or as a multi-line bus 105 with more information. For example, bus 105 can include separate lines for a clock, data, and clear signal that are input to a latch from the host computer 12, and the output of the latch can be coupled to the selection block as line 106.
The latch would provide the enable signal when the clock signal changes to a high state, thus allowing the host to control when the enable signal is sent using synchronous communication.
The interface device 100 is similar to the recoil interface device of Figure 4b in that when a user presses a ri~cign~tP-l button, force feec1h~ is applied to the user object 34 by motor 96.
However, device 100 also includes enable line 106 from the host colll~uL~I, which allows the host c. ~I~puLe~ to determine when the motor can be activated. The enable line 106 does not allow the host computer to command desired forces, but only allows the host to select when the user will be able to activate the force by pressing a button (thus enabling/disabling the reflex process).
2s The enable line 106 allows the software process running on the host computer to be better coordinated with the force feedback. For example, when the user's player in a video game runs out of ~mmunition for a controlled gun, the host ~;olll~u~ can send a disable signal to selection block 102, which will imm.o~i~tPly deactivate the motor 96 regardless of the state of button 88.
Likewise, when the user's player is in a situation in which force feerlh~ can be applied, e.g., if the user picks up more ~mmunition in a game, the host culll~uler can send an enable signal on Iine 106, which will allow the motor to output a force when the user selects the button 88. This is an improvement in coor lin~ting forces with a host application over the embodiment of Figure 4b, since, in that embodiment, a user had to m~nll~lly disable the actuators with recoil switch 98. This configuration is almost as low-cost and simple as the embodiment of Figure 4b while allowing a greater degree of realism and coordination of force feedback with other visual and auditory feedback on the host computer 12. Only a single line 106 is required for the host computer to be - W O 97/12337 PCT~US96/15340 -able to deactivate force feedback in accordance with game or ~imnl~tion events. The user can also open or close recoil active switch 94 similarly to the embodiment of Figure 4b to enable or disable the motor.
FIGURE 4f is a third embodiment 114 of the recoil interface device of Figure 4a in which either a button press or a control signal from the host co~ uLel can cause force feedback to be output on the user object 34. The int~rface device 114 includes joystick 84, potentiol,lGlt;l~ 86, buttons 88, motor 96, motor interface 94, and switches 41 and 98 which are similar to the equivalent components described with reference to Figure 4b. Device 114 also includes a selection block 102 to which lines 104 and 106 are input and which is ~ y similar to the 0 selection block 102 described in Figure 4c.
The interface device 114 additionally includes an OR gate 116 or the functional equivalent.
The OR gate 116 has two input lines, one line 118 from selection block 102 and a separate activation line 120 from the parallel bus 105 coupled to the host co~ uLel. The output of the OR
gate 1 16 is coupled to motor interface 94. The OR gate allows the host computer to activate the motor 96 using an activation signal on activation line 120 regardless of whether a user is pressing any buttons. This activation of motor 96 is simply turning the motor on or off using pulse generator 90, i.e., the pulse generator will send out a predetermined PWM signal or other command to the actuator to implement a predetermined force sensation, such as a vibration, jolt, etc. The host preferably does not send actual force values or directly control the forces of motor 96, and thus cannot alter the m~gnihl~ of output forces. Bus 105 can be a standard parallel port interface from the host coll.~u~er, or the bus can be a serial port that is used to carry serial signals, as explained above.
The host sends the activation signal to coordinate force fee-lb~rk with events that occur within a computer-implemented process or application program. For example, if an explosion 2s rocks a vehicle the user is controlling in a video game or cimnl~1ion, the host c~3lll~,uLel can signal interface device 114 to output force fee-lh~ck to the user object 34 without regard to the buttons the user is pressing. This adds further functionality over embodiment 100 of Figure 4c, in which the host could only enable or disable force feedback, and could not activate it; in that embodiment, forces triggered from explosions or other events that happen to the user could not be provided.
The interface device 114 thus provides yet greater realism in force fee~h~k than the embodilllel1L~
of Figures 4b and 4c and coordination with the process implemented on host COI~ U~l 12 since the host can control the actuators in two ways: either enabling or disabling the actuators using control line 104, but letting the user initiate force fee~lb~qck with a button; or by indepenrl~ ntly initi:~ing the force feeAb~ k regardless of the state of the button. Despite the added fi~nrtion~lity, 3s interface device 110 remains low cost and simple, with only a small number of lines from the host needed to control the force feedback and no local microprocessor 26 required. The - W O 97112337 PCT~US96/lS340 -disadvantage of embodiments 100 and 114 is that specific software is required for host CO~ u~
12 to issue enabling and activation comm~n-lc to the interface device 14.
In ~It~rn~tt- embodiments, additional lines of bus 105 can be used for additional functionality. For example, another line, such as the CTS line of an RS-232 inter.~ace (normally s used for h:~ntlch~king signals in a serial interface, but used herein as a line in a parallel i.,t~ . r~ce), - can be used as the "axis select line" to select particular axes or degrees of freedom in which the force is to be applied. A high signal on the axis select line might in~ t~ that forces are to be applied in both forward/baclc and left/right axes of a joystick (i.e. two motors), while a low signal might indicate only activate one motor for the left/right axis. Similarly, an additional line (or lines) lo in the bus 105 can be used to allow the host colll~utel to command a direction of the forces in a particular degree of freedom. Additional lines can also be used to select other motor output configurations. Also, the device 114 can include an additional line in parallel bus 105 to be used as the enable line 104 of Figure 4c. For example, in the RS-232 interface, the DTR line can be used as the enable line 104, and the TxD line of the RS-232 interface can be used as activation line 15 120. The RxD line can be used as the "life line" to allow the microprocessor or host to monitor whether the bus has been disconnected, as described above. It should be noted that the RS-232 interface has three lines that are output from the host computer and thus a maximum of three lines can be used as parallel signal lines in bus 105 to interface device 114. If additional control signal lines are needed, the embodiment of Figure 5, below, can be implemented.
A TxD line can also be used to send more complex host signals that provide a desired force sensation to the user. For example, in the RS-232 interface, a baud rate can be set by a UART on the host colllL,uL~;l 12 to establish a rate of tr~ncmiccion of data. Data can be sent as high or low bits on the TxD line at the specified baud rate to turn motors 96 on and off at the desired rate. For example, a byte specified as 01010101 can be provided on line TxD at a baud 2s rate of 9600 bps, so that each bit lasts for 1/9600 = 10 ms. Since each "I" bit activates the actuator and each "0" bit deactivates the a.;Lu~Lol, a force sensation of vibration results. The frequency of vibration can be adjusted by ch~nging the values or pattern of bits sent and/or by ch~nging the baud rate. In other embo~limentc, a pulse width modulation (PWM) signal can be sent on the TxD line to control the actuators 30 similarly as described above.
Other interfaces, such as the standard parallel port of host Co~ uL~I 12, can ~lt~rn~tively be used to provide several parallel control signals from the host to the interface device.
Alternatively, if a video game console were used as host computer 12, the parallel lines of the control port of the game console can be used, such as the TL, TR, and TL lines of the Sega Saturn control port.

W O 97/12337 PCTrUS96/1~340 -It should be noted that these parallel lines require very little pl~C~ lg by the host cc .l.~uL~r and require very little col-lu-u--ication bandwidth, yet add considerable functionality in correlating force fee~lh~cl~ of int~orFar~ device 14 to application events i...L~ w..L~d by the host col~.~uL~.. In addition, all of the embo~ of Figures 4b4f can be used as standard non-s force-feedback joysticks or other ~lipll~,dls that use a standard game port on colllL)uL~ls or equivalent ports on other computers or video game consoles.
FIGURE 5, as flefail~A by FIGURES 5a, Sb, and 5c, is a schern~tic ~ grarn of an ~lt~ornz~tt- embodiment 130 of interface device 14 in which microprocessor 26 is not used in the int~rfare device and where the host colllL~uL~,I 12 can more effectively control forces output by 10 actuators 30. This embodiment does not use high level host collllll~ lc that can be used with the embodiment 80 of Figure 3, yet this embodiment provides more control signals to the ;"l. . r~re device 14 than the embodiments of Figures 4a4f.
Interface device 130 includes a serial int~ re bus 24 and a game port int~ re bus 25 (not shown). The game port interface bus (or equivalent) is similar to bus 25 of Figure 3 and is 15 coupled to potentiometers or similar sensors as described above to provide position data in provided degrees of freedom of user object 34 to the host computer via a game port. In the described embodiment, the interface bus 24 is coupled to a serial port on host cul--L~uL~,I 12, such as an RS-232 port or similar interface. Alternatively, other interfaces, such as the control port interface of a video game console, can be used.
The interface bus 24 is preferably used to serially transmit host control signals and/or host comm~n~s to the interface device 130. However, the standard RS-232 signal lines used for serial tr~n~mi~sion are preferably changed in functionality. Signal line TxD is typically used in the RS-232 interface to transmit data in serial fashion, and lines DTR, DSR, and RTS are typically used to send and receive h~n~lch~king signals to and from a p.,li~h~ldl. In the present embodiment, line DTR is instead used to serially transmit data, and lines TxD and RTS are used as parallel output control lines having high and low states to allow the host colll~uL~. to enable and disable functions of the interface device and control forces. The DSR line is used to provide inforrnation back to the host. Thus, serial interface bus 24 is used both as a serial bus when transmitting comm~n(l~ over line DTR, and as a parallel bus when ~ltili7ing control lines TxD, RTS, and DSR.
DTR line 132 tr~nsmit~ low level host comm~n~ls serially from the host COlll~u~t;l to the interface device 130. DTR line 132 is input to level shifter 134 which converts the RS-232 signal voltage to app.up.iate logic voltage and outputs the serial data to a first shift register 136. Shift register 136 receives the serial signal at a DSA port and co~ ~ the serial information to parallel bits on 8-bit parallel bus 138. The parallel bus 138 is coupled to input ports P0-P7 of an address col.l~dldtor 140. Also, a bus 139 is coupled to the six bit lines of parallel bus 138 between the SIL..,S ~ JTE SHEET (RULE 26 - W O 97/12337 PCT~US96/15340 most and least signiflcant bit lines. Bus 139 is coupled to input ports of a pro ,-a--ll.-able array logic (PAL) chip 142. In addition, the most significant bit (MSB) line 141 of the parallel bus 138 is coupled to the input DSA port of a second shift register 144. The second shift register 144 converts the input information on line 141 to parallel bits which are output on 8-bit parallel bus 146. Bus 146 is coupled to logic co~ dlol 140 at input ports Q0-Q7.
The shift registers 136 and 144 and co~ alaLol 140 provide a circuit for ~l~lr~ g when a new byte (actually six bits) of data has been received and is ready to be processed by PAL
142. The shift registers 136 and 144 are c~sc~Ato~l such that shift register 144 receives the bits shifted out of shift register 136. The output bytes on parallel buses 138 and 146 are compared by 10 comparator 140. When the two bytes are i~lcntir~l a new byte has been fully shifted in and is ready to be processed by PAL 142.
To deter~nine when a full new byte has been input, the most sigTlifi~nt bit and the least significant bit of an input byte are provided as "matching bits." The ~ h;~g bits a;e used to check when the new byte has been shifted into shift registers 136 and 144, and can be either a 1 ls (high) value or a 0 (low) value. The host co~ uler 12 preferably inserts a pair ~ r~ g bits around each 6 bits of data that it transmits serially on DTR line 132. The process of shifting serial data in the two shift registers is described with respect to Table 1, below.

First Shift Re~Fister Second Shift Register 2000 Ql 02 03 04 0506 07 00 01 02 03 04 05 Q~ 07 (a) I X0 X 1 X2 X3 X4 X51 I X0 X 1 X2 X3 X4 X51 (b) 0 I X0 X 1 X2 X3 X4 X5 1 I X0 X 1 X2 X3 X4 X5 (c)Y3 Y4 Y50 1 X0 Xl X2 X3 X4 X51 1 X0 Xl X2 (d)Y0 Y 1 Y2 Y3 Y4 Y50 1 X0 X 1 X2 X3 X4 X511 (e) 0 Y0 Yl Y2Y3 Y4 Y50 1 X0 Xl X2X3 X4 X51 (f)Y2 Y4 Y5 0 0 Y0 Yl Y2 Y3 Y4 Y50 1 X0 Xl X2 (g)Y0 Yl Y2 Y3 Y4 Y50 0Y0 Y1 Y2 Y3 Y4 Y501 (h)0 Y0 Y 1 Y2 Y3 Y4 Y500 Y0 Y 1 Y2 Y3 Y4 Y50 Table 1 shows the outputs Q0-Q7 of the shift registers 136 and 144 at various stages (a)-(h) when bits of data are being input from the serial data stream on the DTR line 132. The system begins at initial stage (a), in which the outputs Q0-Q7 of register 136 exactly match the outputs Q0-Q7 of register 144. When such an exact match occurs and is read by CC~ dldtOl 140 on SUt~ 1 1 1 UTE SHEET (RULE 26) - W O 97/12337 PCT~US96/15340 '-buses 138 and 146, the co~ aldtol outputs a low signal on line 148 to PAL 142 that in~ t.o~ a valid, full new byte has been shifted in.
The next bit from the serial data stream is shifted into Q0 of register 136 at stage (b). This is a matching bit since it is the beginning of a new byte of data. This m~tching bit is intentionally S set to zero, the opposite of the m~tching bits of stage (a), so that a match will not be found with the previous bytes. The other values in the shift registers have all been shifted one output to the right, and the MSB ( I ) that was at Q7 of the second shift register in stage (a) is discarded.
At stage (c), three more bits Y5, Y4, and Y3 have been shifted in from the serial data stream and the previous bits have been shifted three pl~es to the right. Each of these bits can o have either a low or a high value depending on which commands the host computer has sent and how the bits are interpreted. At stage (d) three more bits Y2, Y1 and Y0 have been shifted into the first shift register and the other bits have been correspondingly shifted. At stage (e), the final matching bit of the new byte of data is shifted in. This match bit is intentionally made to be "0" so that no match will occur with the matching bits of the byte in the second shift register.
Although a full new byte has been shifted into the first register at stage (e), there is no match of bits between the first and second registers. Therefore, to recreate a match condition, the host computer 12 shifts the same data byte Y5-Y0 and m~trhing bits (0) into the first register in stages (f) - (h). Until stage (h), the bits of the two registers will not ex~tly correspond. At stage (h), the bits exactly correspond to in~ tf a match condition, and co...~a~dLor 140 outputs a signal on line 148 to in~ t~ to PAL 142 that a new byte has been fully shifted in and v~ t.o~l PAL
142 then processes the current bits on bus 139 (i.e., bits Y5-Y0) as the new input "byte." Note that PAL 142 continually receives bits on bus 139 throughout the shifting process but only ~tually processes the incoming data that is present when the v~ ting signal on line 148 is received. New bytes in the data stream are similarly compared and processed by PAL 142 when they have been verified. Note that the host computer should ~lt~rn~t~ the matching bit of the next byte after stage (h) to a value of " I " so that no match will occur with the present m~tching bits of "O."
The PAL 142 can process the six bits of information in a variety of ways. Preferably, logic is provided in PAL 142 to process each incoming bit as a control signal or "control bit", so - 30 that, effectively, six control signals are received over the serial bus. The six control lines are an improvement over the embodiment of Figure 4f, which allows only three parallel control signals to be sent over an RS-232 line as explained above. The host can thus control a greater variety of - parameters and characteristics of forces using the greater number of control lines. For example, e~h control bit can control a separate parameter such as an enable signal for actuators 30, a 3s selection bit d~;t~ h~g which degrees of freedom are to be provided with forces, or an enable CA 02233206 l99X-03-26 - W O 97/12337 PCT~US96/15340 --signal to allow buttons 39 to ~tivate forces. Buttons 39 preferably input a signal on line 145 to PAL 142 so that the PAL can directly deterrnine when any of the buttons have been pressed by the user. For example, if a button has been pressed, a v~ ting signal has been received on line 148, and all of the ~ opliate enable signals from the host have been provided, then the PAL can cause the actuators to output forces on user object 34. If any of these conditions are false, preferably no forces are output.
The PAL includes the ap~lv~liate logic to send the control bits to the a~lvL,liaL~
components in the interface device 130 using output lines 143, such as actuators 30 and illt - ri-f~e 36 or other logic. For example, an enable signal can be sent directly from PAL 142 to actuator interface 36.
Alternatively, low level host commands, such as actual force values, can be sent by the host on serial DTR line 132 to converted to forces output by the actuators. The PAL can include logic to convert the low-level comm~nds to force values and send the force values to the vL~liate components in the interface device 130 using output lines 143, such as ~c~l~tors 30 and interface 36 or other logic. Some of the lines of parallel bus 139 can be utilized as control bits, while other lines can be used to provide a force value or other low level comm~n~l Such logic for PAL 142 can be implemented using techniques well-known to those skilled in the art.
In other embodiments, additional lines can be in~hlA~d in bus 139 to provide additional control bits to PAL 142. Also, additional shift registers can be added in alternate embodill,ellL~., such as shift register 150. Register 150 is c~cc~A~d with second shift register 144 and receives the most significant bit from the second shift register. Using shift register 150 and/or ~AAition~l shift registers, more incoming data bits can be sent to the PAL at one time, thus providing more control lines to the interface device 130 and/or increasing the speed of processing the input host com m:~nAc Additional shift registers such as register 150 can output bits directly to PAL 142; for example, shift register 150 outputs bits to PAL 142 on bus 151 similarly to the bits on parallel bus 139. Since the first and second shift registers 136 and 144 can check when new bytes have shifted in, the additional shift registers do not need to compare their bytes to the bytes of the other shift registers.
In an alterna~Le embodiment, latching shift registers can be used. The latches on the outputs of such shift registers can hold the values until all the values have shifted in, and then send out the parallel data. Only one such shift register need be provided to send the six control bits to PAL
142. However, latching shift registers also require an additional latch clock signal to latch the data.
One of the lines of the RS 232 interface can be used as a latch clock signal, such as the TxD
signal. However, since the TxD signal is preferably used for other functionality in the present embodiment (as described below), there is not a convenient line available to use as a latch clock line in an RS-232 interface. The matching shift register embodiment described above is therefore more apL~.uL,liate to the described embodiment and is less expensive than a l~t~lling shift register embodiment as well. In other emborliment.c using a different, non-RS-232 il~t~r~ce bus 24, latching shift registers may be more a~lupliate.
Host computer 12 also sends signals on TxD line 155 to the interface device 130. Level shifter 154 receives the TxD line 155 from the RS-232 hlLelr~ce bus 24. The TxD line 155 is input to PAL 142 and is used to enable or activate the motors similarly to the embodiment of Figure 4c and 3c. The TxD line 155 can also be used to send more complex host signals that provide a desired force sensation to the user. For example, a baud rate can be set by a UART on lo the host computer 12 to establish a rate of tr~n~micsion of data. Data can be sent as high or low bits on the TxD line at the specified baud rate to turn actuators 30 on and off at the desired rate, as described above with reference to Figure 4f. Or, a pulse width modulation (PWM) signal can be sent on TxD line 155 to control the actuators 30 as described above.
The RTS line 152 is input to level shifter 134 and is provided as a clock signal for the shift s registers 136 and 144 (and 150, if present) to set the rate of shifting the input bits and providing them to the PAL 142. The clock signal on the RTS line is provided by the host colll~u~r at a predetermined frequency. Thus, the RS-232 interface in the current embodiment is used for synchronous serial communication instead of the asynchronous serial c~,llllllul,ication for which it is normally used.
DSR line 156 is used in the described embodiment as a parallel commnniczltion line to provide information to host computer 12. Preferably, the host conl~uLer can use DSR line 156 to verify that the interface device 130 exists and is connected to the serial interface bus 24, for safety and other reasons as described above. DSR line 156 is coupled to output Q0 of first shift register 136 and is connectPA to level shifter 154 to convert the logic level signal to an RS-232 voltage level. The data on DSR line 156 is output from level shifter 154 to host computer 12. The bit on line 156 changes as serial data is clocked into the shift registers on DTR line 132 as described above. The state of the DSR line can thus be clocked back to the host over the hltel~ce bus 24.
To check whether the interface device 130 is conn~cte-l, the host can read the DSR line 156 and set the data DTR line to a bit of the opposite state. At this point, the DSR line should still be in its original state. The host would then provide a clock pulse on the RTS line and check to see that the DSR line changes to the same state as the DTR line. If so, the connection between the host and interface device has been verified. If the DTR line does not change states, the interface device may be disconnected. This test can be provided for both states of the DTR data to verify a con~icttsnt response.

- W O 97/12337 PCT~US96/15340 Control "loop back" lines of a serial or parallel port can be used by the host ~ ULcl to verify the identity of the interface device 130, especially when non microprocessor 26 is present to provide an identification signal for the interface device. Preferably, non-standard output and input lines of the interface bus are used so that the interface device will not be confused with other types 5 of devices that can be conn.octed to the host co~ uLel. For example, when the host wishes to determine what type of peripheral is connected to its serial port, the host can send out a signal on an output line and check the non-standard input line; if the sent signal is ~l~ t~ct~--l then the host knows that the interface device 14 or 130 is conn~ct~cl This feature can also be used in the embodiments of Figures 4a-4f and in other embodiments that do not include a microprocessor 26.
o It should be noted that different and equivalent signals to the RS-232 signals described above can be used in alternate embodiments of interface device 130. For example, equivalent signals on RS-422 or video game interfaces can be used similarly.
The embodiment 130 of the interface device has several advantages. Since no local n~icfo~locessor 26 or UART are needed in interface device 130, the cost of the interface device is reduced greatly. The implementation of a serial data stream allows the host to send a greater number of control signals and have much greater control than in the embodiments of Figures 4a-4f. Many more types of comm~n~l~ can be sent by the host using the serial interface than the three maximum commands allowed in the parallel bus implementation of an RS-232 interface in the above "recoil" embodiments. Also, force values or other commands can be sent by the host to better control the actuators. In addition, the logic components of interface device 130 shown in Figure 5 can be readily provided on a single chip implemented as an ASIC or FPGA. This allows the cil~;uilly for interface device 130 to be manufactured in high volume at a very low cost.
FIGURE 6 is a schematic diagram illustrating a low-cost and compact power circuit 158 of the present invention used for implementing force fee~lb~rk in interface device 14. Power circuit 158 includes a current limiter 160, a capacitor 162, and an optional analog-to-digital converter 164. Motor 96 (or other type of active actuator) and motor interface 94 are substzlnti~lly similar to the equivalent components described in the embodiments of Figures 2-5.
A voltage V is provided on a line 159. Line 159 can be a line connected to a power supply such as power supply 41, or to the power signal of a game port interface 25. Line 159 can also be conn~ct~d to a peripheral interface port of video game consoles such as the Sega Saturn or the Sony PlayStation. Line 159 is input to current limiter 160, which can be implemented with several components well known to those skilled in the art. Current limiter 160 limits the current of the input voltage signal on line 159 to a maximum current of IL~M This current has been previously determined to be the desired current to charge the capacitor 162, as shown in Table 2 3s below.

- WO 97/12337 PCT~US96/15340 Capacitor 162 is coupled between an output of current limiter 160 and ground. The capacitor has a capacitance C that has been selected to provide the desired charging ch~r~t~ri.~tif~s For example, in the described embodiment, C can be 2,000 to 10,000 microfarads. The factors determining C and other component values are described in greater detail below. ~p~ oi 162 stores energy from the current-limited signal on line 161 until it is fully charged. The line 161 also is coupled to a voltage bias input of an amp1ifier 166 included in an actuator interface 94. The ~p~itQr 162 and amplifier ("driver") circuit 166 are configured in such a way so as to allow capacitor C to supply power to the amplifier to amplify a control signal input to the amplifier.
Resistors R1 and R2 are coupled between the output of current limiter 160 and ground.
Optional A/D converter 164 has an input coupled to the node between resistors R1 and R2 and has an output coupled to microprocessor 26. Microprocessor 26 receives the digital signal from the A/D converter at an analog input pin. Microprocessor 26 also sends out a motor control signal on line 163 to activate motor 96, similarly to the above-described embodimnt~
The power circuit 158 operates as follows. The voltage V from power supply is li~mited as described above by current limiter 160. The limited voltage signal is output on line 161 and charges capacitor C. The current-limited voltage signal is also provided to the A/D converter 144 which provides a digital representation of the signal to the microprocessor 26. The microprocessor monitors this signal to determine the current charging state of the i.l.;~.'.;l~.l 162;
the voltage m~gnit~ is indicative of the amount of charge stored in the capacitor. When enough power has been charged in the capacitor to drive motor 96, and if the microprocessor has determined that it is an ~ .u~,iate time to output forces on user object 3~, then the microprocessor signals the motor to be activated on line 163. The ~tivation signal from t'ne microprocessor 26 can be, for example, an analog signal from a D/A conve~rter on the microprocessor, or could be a pulse width modulation (PWM) signal. The power in the ~ iL~"
is provided to amplifier 166 and is used to amplify the signal from the microprocessor and drive the motor 96.
The present power circuit configuration offers several advantages over standard prior art power supplies used for force feedback. It has been found that human p~.~;~lion of force sensations is highly focused on transient forces rather than constant forces. For example, a human will easily perceive a change in force but will not as easily sense a steady-state, continuous fo~rce. In terms of a force feedback interface device, if an intense force is desired to be output to the user oL,~l~hlg the device, then only a short jolt or pulse of force (i.e., change in force) is actually necessary for the user to detect that force; m~int:~ining a continuous m~gnit~l-le of fo~rce over time is not as critical, since the user will not as readily detect that constant force after the change in force has occurred.

- W O 97/12337 PCT~US96/15340 This human ~clccl~tual condition is highly relevant to the present power circuit. Using the energy stored in capacitor 162 to power amplifier 166, a change in force can be created for a short period of time as the c~p~rit~ r discharges its energy. Using the added power from the ~p~ritor~
the motor 96 can output a stronger force than when using the power supply 41 or other source 5 alone. Thus, strong jolts or other force sensations can be provided above the power supply's maximum force level of the interface device. These sensations do not have to be Ill~ lP.ri for very long, since the user will more readily sense the change in force rather than any continuous stronger force output, so that the user can be fooled into thinking a stronger force has been and continues to be output.
o This operation can be advantageous in that a smaller power supply can be used to power the motors. The capacitor power can be provided to achieve, for a short period of time, levels of force as great as a larger power supply would provide. A smaller power supply would allow the interface device to be much smaller, less expensive, and lightweight, which are ideal characteristics for force feeclb~ck devices inten~l~fi for the mass market. In addition, since such a smaller power supply would only output the larger m~gnitlld~ forces for short periods of time instead of continuously, the force feedback device would be safer for the user to operate.
In an ideal embodiment, a power supply 41 would not be required at all when using the power circuit 158. Power can be drawn directly from the host co~ u~cl 12 over the game port int~ re 25 or other interface that supplies power from the host colllpuLer, such as a USB
intt-rf~e. This power can be supplemented by using the cal)a~ilol 162 when high-m~gnit~
forces are required to be output by motor 96. The elimination of a separate power supply 41 allows the interface device to a great deal smaller and less expensive to manufacture, as well as being more convenient for a typical user to operate.
Since the capacitor 162 discharges its energy when the motor is activated, it must be charged again before it is again operative to power the motor 96. The charging time is significant to the design since the microprocessor is limited in the frequency and control of forces according to when the capacitor is ready to provide power. Several different capacitances C of c~aeiLol- 162 and other parameters in the circuit have been varied to determine efficient configurations of the circuit.
Table 2 shows sample pulse durations and recharge times for various configurations of supply voltages, currents, and storage capacitances (C).

- W O 97/12337 PCT~US96/15340 .

Confi~urations Input Supply Voltage V 12 5 12 24 ~inimllm DriverVcc 5 3 5 5 Input Current Limit ILIM (mA)300 300 500 200 Storage Capacitance C (,uF) 4700 10000 4700 2000 Steady-State Current Iss (mA) 200 200 250 100 Pulse Current (mA) 2000 2000 2000 2000 MaxPulse Time (ms) 19 12 22 21 lo Recharge Time ~ms) 329 200 132 380 TABT F.2 Table 3 shows sample storage c~ tz~ncrs and recharge times for various supply voltages, currents, and a pulse duration.

Configurations Input P. Supply Voltage (V) 12 5 12 24 Minim~m Driver Vcc 5 3 5 5 Input Current Limit ILIM (mA)300 300 500 200 Storage Capacitance C (uF) 2429 8500 2143 947 Steady-State Current ISS (mA) 200 200 250 100 Pulse Current (mA) 2000 2000 2000 2000 Max Pulse Time (ms) 10 10 10 10 Recharge Time ~ms) 170 170 60 180 2s TABLE 3 - As shown from Tables 2 and 3, a storage capacitor can supply enough power to provide a .$ignifir~nt increase in output force m~nitud~. For example, as shown in Configuration 4 of Table l, a 2000 uF capacitor 162 can provide 2000 rnA of pulse current to create a jolt force with motor 96 for 21 milli.ceconds when using a 24 V, 200 mA (Iss) power supply. This allows a jolt force of 10 times the m~gnihl(1e the power supply alone could output. A charge time of 380 milli~econds does not delay the force jolts ~ignific~ntly for many applications. Note that many different configurations and/or values of the parameters shown in Tables 2 and 3 can be used, and other parameters not shown in the tables can be varied in other embodiments.
Using additional and/or different capacitors 162, as well as additional andlor dirr~;~G"l power supplies 41, a variety of durations and magnitudes of forces can be created using a combination of capacitor storage abilities and power supply outputs. In addition, multiple motors of interface device 14 can each be provided with its own capacitor circuit to provide power for a iC~tt~.~ motor.
In an alternative embodiment, microprocessor 26 can be elimin~t~-~ from the il~t~.ri1~'e device 14. For example, the "recoil" interface devices of Figures 4a-4f provide force fe~rk without the use of microprocessor 26. In such an embodiment. A/D converter 164 does not need to be used. The recharge time can be ~stim~t~ ~1 and the motor can be deactivated using a timing circuit, for example, until the c~r~it- r is fully charged. In yet other embodiments, the microprocessor 26 can be omitted and the A/D converter 164 can send the converted digital signals to the host Co~ ulGI 12, which determines when the l;~a.;i~l is fully charged and sends an output activation or enable signal to motor 96 when a~ liate.
FIGURE 7 is a flow diagram illu~.LI~Lhlg a method 200 for controlling a force feedback interface device of the present invention using microprocessor 26, such as in the interface devices as described with respect to Figure 2 and Figure 3. In addition, this method can be ~ ptec~ for some embodiments not including microprocessor 26, such as the recoil embodiments of Figures 4a-4f or embodiment 130 of Figure 5. In such an embodiment, the microprocessor steps of the process can be implemented by logic or other components, such as in PAL 142 or control block 102.
The process of Figure 7 is suitable for low speed communication interfaces, such as a standard RS-232 serial interface. However, the embodiment of Figure 7 is also suitable for high speed co"""u"ication interfaces such as USB, since the local microprocessor relieves cc,~ uL~lional burden from host processor 16. In this reflex embodiment, for example, the slower "interrupt data transfers" mode of USB can be used.
The process of Figure 7 begins at 202. In step 204, host co~ ulel system 12 and interface device 14 are powered up, for example, by a user activating power switches. After step - 204, the process 200 branches into two parallel (simultaneous) processes. One process is implemented on host c~ ulGI system 12, and the other process is implemented on local microprocessor 26. These two processes branch out of step 204 in dirrGlGII~ directions to indicate this siml-lt~n(~ity.

WO 97/12337 PCT~US96/15340 -In the host CO~ uL~l system process, step 206 is first implem~nt~l in which an application program is processed or updated. This application can be a ~im~ tion, video game, scientific program, O~ld~illg system, or other software program. Images can be displayed for a user on output display screen 20 and other fee-lh~ can be pr~en~e~l, such as audio feerlh~
Two branches exit step 206 to indicate that there are two processes running simnlt~n~ously (e.g., multi-t~cking, etc.) on host computer system 12. In one of the processes, step 208 is implem~nt~-A, where sensor data describing the user object is received by the host co"l~uL~;r from local microprocessor 26. The local processor 26 continually receives raw data from sensors 28, processes the raw data, and sends processed sensor data to host culll~uL~. 12. Alternatively, local o processor 26 sends raw data directly to host computer system 12. "Sensor data," as referred to herein, can include position values, velocity values, and/or acceleration values derived from the sensors 28 which describe motion of object 34 in one or more degrees of freedom. In addition, any other data received from other input devices 39 can also be considered "sensor data" in step 208, such as signals incli~ting a button on interface device 14 has been pressed by the user.
ls Finally, the term "sensor data" also can include a history of values, such as position values recorded previously and stored in order to calculate a velocity.
Host Colll~uL~I system 12 receives either raw data (e.g., position data and no velocity or acceleration data) or processed sensor data (position, velocity and/or acceleration data) from microprocessor 26 in step 208. In addition, any other sensor data received from other input devices 39 can also be received by host computer system 12 from microprocessor 26 in step 208, such as signals indicating a button on interface device 14 has been pressed by the user. The host computer does not need to c~ t.- force values from the received sensor data in step 208.
Rather, host COIII~Ul~l 12 monitors the sensor data to determine when a change in the type of force is required. This is described in greater detail below. Of course, host computer 12 also uses the sensor data as input for the host application to update the host application accordingly.
After sensor data is received in step 208, the process returns to step 206, where the host computer system 12 can update the application program in response to the user's manipulations of object 34 and any other user input received as sensor data in step 208 as well as determine if one or more force commands need to be output to object 34 in the parallel process (step 210). Step 208 is implemented in a continual loop of receiving sets of sensor data from local processor 26.
Since the host cOlllpuLt;;l does not need to directly control actuators based on sensor data, the sensor data can be provided to the host at a low speed. For example, since the host colll~uLer updates the host application and images on display screen 20 in response to sensor data, the sensor data need only be read at 60-80 Hz (the refresh cycle of a typical display screen) colllp~.,d to the much higher rate of about 500-1000 Hz (or greater) that would be rec~uired to re~ t~ y control force feedback si~nals directly from the host.

- W O 97/12337 PCTrUS96/15340 The second branch from step 206 is concerned with the process of the host Co~ uL~l dt;Lt;llllilling high-level or supervisory force comm~n~l~ ("host commands") to provide force feedb~k to the user manipulated object 34.
The second branch starts with step 210, in which the host co~ ute~ system checks if a s change in the type of force applied to user object 34 is required. The "type" of force is inte~tl to g~n~ric~lly refer to different force sensations, durations, directions, or other highlevel characteristics of forces, or changes in these characteristics, which are controlled by the host cvlllL)uL~l. For example, a force sensation or profile are types of forces produced by a particular force routine which the local microprocessor 26 can implement independently of the host 10 computer.
The host colllL~uLer 12 determines whether a change in the type of force is required according to several criteria, the most important of which are the sensor data read by the host coll,~uL~l 12 in step 208, timing data, and the implementation or "events" of the application program updated in step 206. The sensor data read in step 208 informs the host colllpu~el how 15 the user is interacting with the application program and when new types of forces should be applied to the object based on the object's current position, velocity, and/or acceleration. The user's manipulations of object 34 may have caused a new type of force to required. For example, if the user is moving a virtual race car within a virtual pool of mud in a video game, a damping type of force should be applied to the object 34 as long as the race car moves within the mud. Thus, 20 damping forces need to be continually applied to the object, but no change in the type of force is required. When the race car moves out of the pool of mud, a new type of force (i.e. a removal of the damping force in this case) is required. The velocity and/or acceleration of the user object can also influence whether a change in force on the object is required. If the user is controlling a tennis racket in a game, the velocity of a user object joystick may determine if a tennis ball is hit 25 and thus if an a~lv~,liate force should be applied to the joystick.
Other criteria for determining if a change in the type of force is required includes events in the application program. For example, a game application program may (perhaps randomly) determine that another object in the game is going to collide with a co~ uLel object controlled by the user, regardless of the position of the user object 34. Forces should thus be applied to the user 30 object in accordance with this collision event to cim~ t~ an impact. A type of force can be required on the user object depending on a combination of such events and the sensor data read in step 208. Other parameters and inputs to the application program can deterrnine if a change in force to the user object is necessary, such as other input devices or user i"~.r~re devices conn~ct~-l to host cu,ll~uLer system 12 which input data to the application program (other ;"l~ r~ e 35 devices can be directly connected, connl~ct~-l remotely through a network, etc.).

- W O 97/12337 PCT~US96/15340 -If no change in the type of force is currently required in step 210, then the process returns to step 206 to update the host application and return to step 210 to again check until such a change the type of force is required. VVhen such a change is required, step 212 is implemented, in which host co~ uL~;r 12 deft~rmin~s an d~ fiate high-level host command to send to microprocessor 5 26. The available host comm~nclc for host colll~u~el 12 may each correspond to an ~c~oci~
force routine implemented by microprocessor 26. For example, different host comm~n(1~ to provide a damping force, a spring force, a gravitational pull, a bumpy surface force, a virtual obstruction force, and other forces can be available to host C~ uL~l 12. These host comm~n(~
can also include a rle~ign~tion of the particular actuators 30 and/or degrees of freedom which are 10 to apply this desired force on object 34. The host commands can also include other comm~ncl parameter information which might vary the force produced by a particular force routine. For example, a damping constant can be included in a host command to designate a desired amount of damping force, or a direction of force can be provided. The host command may also preferably override the reflex operation of the processor 26 and include "low-level" force comm~nc~7 such 15 as direct force values. that can be sent directly to the actuators 30 (described below with respect to step 226).
Preferably, the commands include direct host comm:~n-ls, "reflex" comm~nrls, andcustom effects. Some desirable direct host comm~n~ls include JOLT (a short force pulse), WOBBLE (random force), SPRING (a virtual spring), DAMPER (a damping force), and so on.
20 Each command preferably includes L)~d~ tl~ which help the host specify the ch~d~;L~ ics of the desired output force. These comm~n-ls would cause the microprocessor to instantly output the comm~n~crl force according to the a~ liately-selected force routine. "Reflex" comm~n(ls, in contrast, provide conditions to the microprocessor so that the desired force is output when the conditions are met. For example, a reflex command of Jolt_Button_Reflex can instruct the 25 microprocessor to select a force routine that outputs a JOLT force only when a speci~led button is pressed by the user (or, when the user object is moved in a particular direction). Finally, custom effects can be provided to the microprocessor by the host and then comm~n~ d to be output. For example, the host collllJuLel can download to the microprocessor a set of force values (a force profile) as a "force profile file" or other collection of data using a host comm~nfl 30 LOAD_PROFILE, and which can be stored in local memory 27. A separate host comm~n~l PLAY_PROF~LE could then be sent to instruct the microprocessor to output the downloaded force profile as forces on user object 34. Reflex commands can also be used to cause the downloaded profile to be output only when a condition, such as a button press, occurs.
Preferably, a force profile file includes an array of force values, size information about the size of 35 the data, and timing information for when to output the various force values (preferably, the force values have "+" or "-" signs to indicate the direction of forces; alternatively, directions can be separately indicated). Numerous force profile files can be downloaded to the microprocessor, and -WO 97/12337 PCTAUS96/1~340 the microprocessor can send back an index or other information to inform the host how to select a particular force profile file. Custom effects can also be downloaded over a cu~ uk;r network, such as the World Wide Web, as described below.
In next step 214, the host coll~u~el sends the host command to the microprocessor 26 s over bus 24 (or bus 25, if a~ .iate). The process then returns to step 206 to update the host application and to return to step 210 to check if another change in force is required.
In addition, the host computer 12 preferably synchronizes any a~lo~.iate visual fee~lh~rk auditory fee~lh~rk, or other feerlh~c'l~ related to the host application with the icsu~nce of host comm~n(ls and the application of forces on user object 34. For example, in a video game 10 application, the onset or start of visual events, such as an object colliding with the user on display screen 20, should be synchronized with the onset or start of forces felt by the user which correspond to or complement those visual events. The onsets visual events and force events are preferably occur within about 30 milliceconds (ms) of each other. This span of time is the typical limit of human ~ce~lual ability to perceive the events as simultaneous. If the visual and force events occur outside this range, then a time lag between the events can usually be perceived.
Similarly, the output of auditory signals, corresponding to the onset of auditory events in the host application, are preferably output synchronized with the onset of output forces that correspond to/complement those auditory events. Again, the onsets of these events occur preferably within about 30 ms of each other. For example, host computer system 12 can output sounds of an 20 explosion from speakers 21 as close in time as possible to the forces felt by the user from that explosion in a.simnl~tion. Preferably, the m~gnit~l(le of the sound is in direct (as opposed to inverse) ~rol,o~ion to the magnitude of the forces applied to user object 34. For example, during a cimlll~tion, a low sound of an explosion in the far (virtual) distance can cause a small force on user object 34, while a large, "nearby" explosion might cause a loud sound to be output by the 25 speakers and a correspondingly large force to be output on object 34.
The second process branching from step 204 is implemented by the local microprocessor 26. This process starts with step 216 and is implemented in parallel with the host colll,uulel process of steps 206-214 described above. In step 216, the interface device 14 is activated. For example, signals can be sent between host conl,uule- 12 and interface device 14 to acknowledge 30 that the interface device is now active and can be commanded by host cul--,L,uLe- 12. From step 216, two processes branch to indicate that there are two processes running ~imnlt~neously (e.g., multi-tasking) on local microprocessor 26.
In the first process branch, step 218 is implem.-ntr~l in which the processor 26 reads raw data (sensor readings) from sensors 28. Such raw data preferably includes position values 35 describing the position of the user obiect along provided degrees of freedom. In the preferred - WO 97/12337 PCT~US96/15340 embodiment, sensors 28 are relative sensors that provide position values describing the change in position since the last position read. Processor 26 can determine the absolute position by measuring the relative position from a rle~ignzited ~cr~;lt;nce position. Alternatively, absolute sensors can be used. In other emborlimt-nt~, sensors 28 can include velocity sensors and 5 accelerometers for providing raw velocity and acceleration values of object 34. The raw data read in step 218 can also include other input, such as from an activated button or other control 39 of interface device 14.
In other embodiments such as the interface device 50 of Figure 3 and the embodimellt~ of Figures 4a-f and 5, either raw data or processed sensor data from sensors 28 can be sent directly 10 to host c~ ulel 12 without being received by microprocessor 26. The host can perform any processing that is necessary to interpret the sensor data in these embodilll~llLs, such that any or all of steps 218-221 may not be necessary .
In next step 220, microprocessor 26 processes the received raw data into sensor data, if applicable. In the ~-~r~ d embodiment, this processing includes two steps: colll~uLillg velocity 15 and~or acceleration values from raw position data (if velocity and/or acceleration are needed to compute forces), and filtering the computed velocity and acceleration data. The velocity and accel~ Lion values are computed from raw position data received in step 218 and a history of stored position and time values (and other types of values, if ap~ liate). Preferably, processor 26 stores a number of position values and time values corresponding to when the position values 20 were received. Processor 26 can use, for example, local clock 21 to determine the timing data.
The velocity and acceleration can be computed using the stored position data and timing data, as is well known to those skilled in the art. The ~lc~ t~(l velocity and/or acceleration values can then be filtered to remove noise from the data, such as large spikes that may result in velocity c~ tions from quick changes in position of object 34. Thus, the sensor data in the described 25 emborlim-~nt includes position, velocity, acceleration, and other input data. In an ~hem~t~.
embodiment, circuitry that is electrically coupled to but se~d-dt~ from processor 26 can receive the raw data and determine velocity and acceleration. For example, an application-specific i..L~ dLt;d circuit (ASIC) or discrete logic circuitry can use coul~tel~ or the like to determine velocity and acceleration to save procec~ing time on microprocessor 26. In embodiments where velocity 30 and/or acceleration sensors are used, the calculation of velocity and/or acceleration is omitted.
In next step 221, the processor 26 sends the processed sensor data to host colll~uL~;l 12 and also stores histories of the sensor data in storage devices such as memory 27 for colll~!uling forces. The process then returns to step 218 to read raw data. Steps 218, 220 and 221 are thus continuously implemented to provide current sensor data to processor 26 and host colll~uL~r 12.

- W O 97/12337 PCTAUS96/lS340 The second branch from step 216 is concerned with a "reflex process" or "reflex" in which microprocessor 26 controls the actuators 30 to provide forces to object 34. As mentioned above, a "reflex process" is a force process that outputs forces on user object 34 and is implemented locally to interface device 14, is independent of host c(~ JuL~l 12, and depends only s on local control events, such as buttons being pressed or user object 34 being moved by the user.
The most simple form of reflex is used in the "recoil" embodiments of Figures 4a-4f, in which a simple control event, such as the push of a button by the user, causes a force to be output on the user object by actuators 30. The more complex form of reflex process, described in the current method, can :~lcul:~fl- and output forces depending on a variety of local control events, such as 10 button presses and the position, velocity, and/or acceleration of user object 34 in provided degrees of freedom.
The second branch starts with step 222, in which processor 26 checks if a host command has been received from host co",~ulel 12 over bus 24. Host commands are high-level commands that command changes in forces to the user object, as described with reference to step 214. If a host comm~n~l has been received, the process continues to step 224, where a "force routine" indicated by or associated with the host command is selected if a~p,u~,iate. A "force routine", as referred to herein, is a set of steps or instructions for microprocessor 26 to provide low-level force commands to actuators 30. These "low-level" force comm~n~ic (or "processor force commands") are to be distinguished from the "high-level" host commands issued from the 20 host co,l.~uler 12. A low level force command instructs an actuator to output a force of a particular magnitude. For example, the low level command typically includes a "force value" or m:~gnitl~ e.g., equivalent signal(s) to inst~uct the actuator to apply a force of a desired m~gnihlcle value. Low level force comm~n~lc may also ~ .cign~t~ a direction of force if an actuator can apply force in a selected direction, and/or other low-level inforrnation as required by an actuator.
2s Force routines determine low level force commands from other parameters, such as sensor data read in step 218 (button press data, position data, etc.) and timing data from clock 18.
The force routines can be stored local to microprocessor 26 in, for example, memory 27 such as RAM or ROM (or EPROM, EEPROM, etc.). Thus, the microprocessor might select a particular damping force routine if the host command in-ii:~t~fi that the damping force from that particular damping process should be applied to object 34. Other damping force routines might also be available. The available force routines are described in greater detail below and may include ~ algo,ill""s, stored force profiles or values, conditions, etc. Also, the host command received from the host in step 222 may in some in.ct~n-~eS simply be a low-level force comm~n~i, or even a single force value, that is to be sent to an actuator 30, in which case a force routine need not be 3s selected.

After a force routine has been seleeted in step 224, or if a new host eol""l~d has not been reeeived in step 222, then step 226 is implem~on~eA in which processor 26 A~t~rmin~c a proeessor low-level force commz-nA The low-level force comm~ncl is derived from either a s~lecte-l force routine, a resident force routine, any other data required by the force routine, and/or comm~n~
s parameters and/or values included in relevant host comm~nAc. As explained above, the required data can include sensor data and/or timing data from loeal clock 29. If no new high level command was received in step 222, then the microprocessor 26 can determine a force command according to one or more "resident" force routines, i.e., the same force routines that it selected and used in previous iterations of step 226. This is the "reflex" process operation of the illlr.
10 device that does not require any new input from host computer 12.
In the described embodiment, force routines can include several different types of steps and/or instructions which are followed to determine a low-level force commzln-l One type of instruction in a force routine is a force algorithm, which includes an equation that host COlll~Utt;l 12 can use to calculate or model a force value based on sensor and timing data. Several types of s algorithms can be used. For example, algorithms in which force varies linearly (or nonlinearly) with the position of object 34 can be used to provide a sim~ t~rl force like a spring. Algc,li~lnlls in which force varies linearly (or nonlinearly) with the velocity of object 34 can be also used to provide a simulated damping force or other forces on user object 34. Algorithms in which foree varies linearly (or nonlinearly) with the acceleration of object 34 can also be used to provide, for 20 example, a simnl~t~c~ inertial force on a mass (for linear variation) or a simlllz3t~1 gravitational pull (for nonlinear variation). Several types of simnl~tt~A forces and the al~,o,i l"~ls used to zllr such forces are described in "Perceptual Design of a Virtual Rigid Surface Contact," by Louis B.
Rosenberg, Center for Design Research, Stanford University, Report number AL/CF-TR-l995-0029, April 1993, which is incorporated by reference herein.
2s For example, a KinematiC equation which calculates a force value based on the veloeity of the user object multiplied by a damping constant can be used to deterrnine a damping force on the user object. This type of equation can cim~ t~- motion of objeet 34 along one degree of freedom through a fluid or similar material. For example, a damping constant can first be selected which in-iir~ts the degree of resistance that object 34 experiences when moving through a cimlll~t~A
material, such as a liquid, where a greater number indicates greater resistance. Water would have a lower damping constant than oil or syrup. The microprocessor 26 recalls the previous position of user object 34 (along a particular degree of freedom) from memory 27, examines the current position of the user object, and calculates the difference in position. From the sign (negative or positive) of the difference, the direction of the movement of objeet 34 can also be AeterminA
3s The force value is then set equal to the damping constant multiplied by the change in position.
Low-level comm~nAc that control an actuator based on this algorithm produce a foree proportional to the user object's motion to simulate movement through a fluid. Movement in other mediums, such as on a bumpy surface, on an inclined plane, etc., can be cim~ t~-1 in a similar fashion using different methods of calculating the low-level force comm~n~ls The determination of low-level commands from force routines can also be inflllerl~e~ by timing data accessed from system clock 18. For example, in the damping force example S described above, the velocity of the user object 34 is determined by c~lrl-l~ting the dirr~ t of - positions of the user object and multiplying by the damping constant. This ~l~nl:~tion ~csllm~s a fixed time interval between data points, i.e., it is ~csllm~ ~1 that the position data of the object 34 is received by host computer 12 in regular, predetermined time intervals. However, this may not actually occur due to dirrelen~ processing speeds of different computer platforms or due to lo processing variations on a single host microprocessor 16, such as due to mn1tit~cl~ing Therefore, in the present invention, the host co~ u~el preferably 7~cecces clock 12 to determine how much time has actually elapsed since the last position data was received. In the damping force example, the host computer could talce the difference in position and divide it by a ~ime measure to account for differences in timing. The host c~ u~el can thus use the clock's timing data in the 15 modulation of forces and force sensations to the user. Timing data can be used in other algorithms and force sensation processes of the present invention to provide repeatable and consistent force feedback regardless of type of platform or available processing time on host co~ uL~r 12.
The velocity and acceleration required for particular force routines can be provided in a 20 number of different ways. The sensor data provided by steps 218-221 can include position data, velocity data, and/or acceleration data. For example, the microprocessor can use the velocity and acceleration data directly in an algorithm to c~lrlll~t~ a low-level force comm:~n~l In an ~It~rn~t~
embodiment, only position data might be received from sensors 28, and the microprocessor can r~ t~ the velocity and/or acceleration values using stored histories of values. The 2s microprocessor only calculates the velocity and/or acceleration values when the values are needed by a force routine. Alternatively, the processor can always c~lul~tt- the velocity and acceleration values regardless of whether the values are used in a force routine.
Other instructions can also be included in a force routine. For example, conditional steps can be included to provide forces under specified circumct~n~es For example, a force routine 30 might instruct the processor 26 to output a low-level force command only when the user object is moved to a particular position in provided degrees of freedom. Or, to simulate a virtual obstruction such as a wall, forces should be applied in only one direction (uni-directional). For many passive actuators, only bi-directional recict~n~e forces can be applied. To cimlll~t.- uni-directional resistance using a passive actuator, conditional instructions can be included in a virtual 3~ obstruction force routine to output a low-level force command only when the user object is moved in a particular direction at a particular position. Also, a "null" force routine can be available that instructs microprocessor 26 to issue low-level commands to provide zero force (i.e. remove all forces) on user object 34.
Another type of force routine does not use algorithms to model a force, but instead uses force values that have been previously r~lcul~t~od or sampled and stored as a ~igiti7f'(1 "force s profile" in memory or other storage device. These force values may have been previously generated using an equation or algorithm as described above, or provided by sampling and digitizing forces. For example, to provide a particular force sensation to the user, host co~ uL~, 12 can be instructed by the steps of a force routine to retrieve s-lccessive force values of a force profile from a certain storage device, such as memory 27, RAM, hard disk, etc. These force 10 values can be included in low-level comm~n~l~ sent directly to an actuator to provide particular forces without requiring host computer 12 to c~lrlll~f~ the force values. In addition, previously-stored force values can be output with respect to other parameters to provide different types of forces and force sensations from one set of stored force values. For example, using system clock 18, one set of stored force values can be output in sequence according to different time intervals 15 that can vary depending on the desired force, thus producing different types of forces on the user.
Or, different retrieved force values can be output depending on the current position, velocity, etc.
of user object 34.
The low level force command determined in step 226 can also depend on instructions that check for other parameters. These instructions can be included within or external to the above-20 described force routines. One such parameter can includes values provided by the implementedhost application program. The application program may deterrnine that a particular low-level force command should be output or force routine selected based on events occurring within the application program or other instructions. Host commands can be provided by the host application program to output forces independently of sensor data. Also, in a host comm~n(l the 2s host can provide its own particular position, velocity, and/or acceleration data to a tl~sign:~t~d force routine to c~ t~ or provide a force that is not based on the manipulation of user object 34, but is provided to sim~ t~ an event in the application program. Such events may include collision events, such as occur when a user-controlled c~ uler image impacts a virtual surface or structure. Also, other input devices connected to host corll~uL~l 12 can inflllence events and, 30 therefore, the forces applied to user object 34. For example, the sensor data from multiple interface devices 14 conn~ct~-l to a single host colll~u~el can influence the forces felt on other connl ctt-~ interface devices by influencing events and colllLJu~l-controlled images/objects of the host application program.
Also, the low-level force commands determined in step 226 can be based on other inputs 35 to host computer 12, such as activations of buttons or other input devices in (or external to) interface device 14. For example, a particular force routine might instruct the microprocessor to - W O 97/12337 PCTnUS96/15340 output a force to a joystick whenever a user presses a button on the joystick. In some embodiments, steps 218, 220, and 221 for reading sensor data can be incorporated in one or more force routines for the microprocessor, so that sensor data is only read once a force routine has been selected and executed. In addition, the host command can include other command pa~ ,r 5 information needed to determine a low-level force command. For example, the host command can indicate the direction of a force along a de~ree of freedom.
Microprocessor 26 can determine a low-level force command in step 226 according to a newly-selected force routine, or to a previously selected force routine. For example, if this is a second or later iteration of step 226, the same force routine as in the previous iteration can be again 10 implemented if a new host command has not been received. This is, in fact, the advantage of an independent reflex process: the microprocessor 26 can continually output forces on user object 34 using sensor data and timing data according to force routines, independently of any commands from the host. Thus, a "virtual wall" force routine would allow the microprocessor to comm~n~i forces .simnl~ting the wall whenever the user's joystick was moved in the ~ lu~liate position or 1S direction. The host computer need only command that the virtual wall exists and provide the location of the wall, and the mi-;lu~locessor 26 will independently implement the wall and the required forces when necessary.
The above-described force routines and other parameters can be used to provide a variety of haptic sensations to the user through the user object 34 to sim~ tr many different types of 20 tactile events. For example, typical haptic sensations may include a virtual damping (described above), a virtual obstruction, and a virtual texture. Virtual obstructions are provided to ciml~ tf-walls, obstructions, and other uni-directional forces in a simlll~tion, game, etc. When a user moves a computer image into a virtual obstruction with a joystick, the user then feels a physical rrSist~nre as he or she continues to move the joystick in that direction. If the user moves the 2s object away from the obstruction, the uni-directional force is removed. Thus the user is given a convincing sensation that the virtual obstruction displayed on the screen has physical ~lu~lLies.
Similarly, virtual textures can be used to simnl~t~ a surface condition or similar texture. For example, as the user moves a joystick or other user object along an axis, the host co~ uLel sends a rapid sequence of commands to repetitively 1) apply resist~nce along that axis, and 2) to then 30 imm~ trly apply no rci~t~nce along that axis, e.g., as according to a force routine. This frequency is based upon the travel of the joystick handle and is thus correlated with spatial position. Thus, the user feels a physical sensation of texture, which can be described as the feeling of dragging a stick over a grating.
In step 228, processor 26 outputs the determined processor force command to ~rtn~tor~s 3s 30 to set the output force to the desired level. Before sending out the low-level force command, processor 26 can optionally convert the low-level force command to an a~l.,pliate form usable - WO 97/12337 PCT~US96/15340 by actuator 30, and/or ~tll~tor interface 38 can pelro,lll such conversion. The process then returns to step 222 to check if another host comm~ntl has been received from the host CU111~UlG1 12.
The reflex process of microprocessor 26 (steps 218, 220, 222, 224, 226, and 228) thus operates to provide forces on object 34 independently of host CO11l~ULGI 12 ~cording to a selected force routine and other l~al~lllGLGl~. The force routine instructs how the processor force command is to be determined based on the most recent sensor data read by microprocessor 26. Since a reflex process independently outputs forces depending on the local control events of interface device 14, the host colllL,uLGr is freed to process the host application and determine only when a new type of force needs to be output. This greatly improves communication rates between host co~ ulel 12 and interface device 14.
In addition, the host computer 12 preferably has the ability to override the reflex operation of microprocessor 26 and directly provide force values or low level commands. For example, the host command can simply indicate a force value to be sent to an actuator 30. This override mode S can also be implemented as a force routine. For example, the microprocessor 26 can select a force routine from memory that instructs it to relay low-level force commands received from host colll~uL~,I 12 to an actuator 30.
Another advantage of the reflex embodiment of Figure 7, as well as the h~dw~G
embodiments of Figures 2, 3, 4a-f, and S, is that the low collllllullication needs between the host colllpulel and the interface device allows force fee-lh~ to be easily implemented over colll~uLt;r networks. For example. host co~ uLel 12 can be connt-ct~-l to the Internet and the World Wide Web networks as is well known to those skilled in the art. A "web page" or other network site or node can store force feedback information for a user to download and implement using i,~ r;-~
device 14. For example, a web page might store a se~uence of force values so that the user can 2s interact with a game or .sim~ tion implemented on the web page. The host CO111~ULGI 12 can receive the force commands or other force information over the network using, for example, a web browser or software utility such as Netscape from Netscape Communications. As the force information is received by the host, the host can transmit the force information to the microprocessor 25 to control the actuators as described above. Since only high level force comm~n~ls are needed in the reflex embodiment, the web page need store only a small amount of information to be downloaded to the host colll~ul~l rather than all the actual force values nPcl~ss~ry to control actuators. A high level comm~ncl protocol allows more realistic force feedback interaction over a global network.
In other embodiments, a "host-controlled" method can be used, in which host computer system 12 provides direct, low-level force commands to microprocessor 26, and the - W O 97/12337 PCT~US96/15340 --microprocessor directly provides these force commands to actuators 30 to control forces output by the ~rhl~tors. However, this type of embodiment is not a reflex embodiment since forces output on user object 34 are dependent on active and continuous control from the host CO~ U~G1, which increases the colllpuL~ional burden on the host.
The control process for a host controlled embodiment would be similar to the process of Figure 7, except the host computer 12 would determine all forces to be output on user object 34.
Sensor data is received by the host COIII~U~G1- from local microprocessor 26. Processor 26 continually receives signals from sensors 28, processes the raw data, and sends processed sensor data to host coll,~ul~ 12. Alternatively, the processor 26 can provide raw position data and other lo input data to host c~npuLel 12, and the host cc"l~uLt;r 12 filters and computes velocity and acceleration from the raw position data. In other embodiments, the filtering can be performed on host computer 12 while the other processing can be performed on the processor 26.
In the host-controlled embodiment, the host colll~uLer determines the low-level force commands to provide force fee~ r~ to the user manipulating object 34. Preferably, force routines are used by the host which are provided local to the host and which are similar to the force routines used by microprocessor 26 as described above. The host co~nl~uLGr checks the sensor data to determine if a change in low-level force applied to user object 34 is required. For example, if the user is controlling a simulzltrd race car in a video game, the position of a joystick determines if the race car is moving into a wall and thus if a collision force should be ~,ellGldLed on the joystick.
When a change in force is required, host computer 12 outputs a~l~liate low-level force commands to microprocessor 26 over bus 24. These low-level force cornm~n-l~s may include one or more force values and/or directions that were determined in accordance with the parameters described above. The force comm~nd can be output as an actual force signal that is merely relayed to an actuator 30 by microprocessor 26; or, the force comm~ncl can be converted to an ,lo~liate form by microprocessor 26 before being sent to actuator 30. In addition, the low-level force command preferably includes information inrlir~ting to microprocessor 26 which Zlrt~tors are to receive this force value. The host application program is then processed/llp~ tr-l If no change of force is required, host coll~uLel 12 need not issue another comm,.n~l since microprocessor 26 can continue to output the previous low-level force command to a~;Lu~Lc,l~ 30.
Alternatively, host cull~puLer 12 can continuously output low-level comm~n(is, even if no change of force is required.
FIGUR~ 8 is a schematic diagram of an example of a user object 34 that is coupled to a gimbal mechanism 240 for providing two or more rotary degrees of freedom to object 34.

- W O 97/12337 PCTnJS96/15340 --Gimbal mPch~nicm 240 can be coupled to intPrf~re device 14 or be provided with sensors 28 and actuators 30 separately from the other components of interface device 14.
Gimbal mechanism 38, in the described embodiment, provides support for a~ dlus 25 on a grounded surface 56 (schematically shown as part of member 46). Gimbal m~ch~nicm 38 is preferably a five-member linkage that includes a ground member 46, extension members 48a and 48b, and central members 50a and 50b. Ground member 46 is ~ rt;ldbly coupled to a base or surface which provides stability for a~dLus 25.
Gimbal m~rh~nicm 240 can be supported by a grounded surface 242, which can be, for example, a surface of the housing of interface device 14 (schem~ti~lly shown as part of member lo 244), a base, tabletop, or other surface that is fixed in position with reference to the user. Gimbal mechanism 240 is preferably a five-member linkage that includes a ground member 244, extension members 246a and 246b, and central members 248a and 248b. Ground member 244 is coupled to ground surface 242 which provides stability for mech~nicm 240. Ground member 244 is shown in Figure 8 as two separate members coupled together through grounded surface 242, but is considered one "member" of the five member linkage.
The members of gimbal mechanism 240 are rotatably coupled to one another through the use of bearings or pivots, wherein extension member 246a is rotatably coupled to ground member 244 by bearing 243a and can rotate about an axis A, central member 248a is rotatably courl~-l to extension member 246a by bearing 245a and can rotate about a floating axis D, extension ~ ber 246b is rotatably coupled to ground member 244 by bearing 243b and can rotate about axis B, central member 248b is rotatably coupled to extension member 246b by bearing 245b and can rotate about floating axis E, and central member 248a is rotatably coupled to central member 248b by bearing 247 at a center point P at the intersection of axes D and E. Preferably, central member 248a is coupled to one rotatable portion 247a of bearing 47, and central member 248b is coupled 2s to the other rotatable portion 247b of bearing 247. The axes D and E are "floating" in the sense that they are not fixed in one position as are axes A and B. Axes A and B are snhst~nti~lly mutually perpendicular. As used herein, "substantially perpendicular" will mean that two objects or axis are exactly or almost perpendicular, i.e. at least within five degrees or ten degrees of perpendicular, or more preferably within less than one degree of perpendicular.
Gimbal mechanism 240 is formed as a five member closed chain or loop, such that a first member of the chain is coupled to the last member in the chain. Each end of one member is coupled to the end of another member. The five-member linkage is arranged such that extension member 246a, central member 248a, and central member 248b can be rotated about axis A in a first degrce of freedom. The linkage is also arranged such that extension member 246b, central member 248b, and central member 248a can be rotated about axis B in a second degree of =

- W O 97/12337 PCTAUS96/1'.340 -freedom. When object 34 is positioned at the "origin" as shown in Figure 3, an angle ~ b~Lween the central members 248a and 248b is about 90 degrees. When object 34 is rotated about one or both axes A and B, central members move in two fashions: rotation about axis D or E by bearing 245b andlor 245a, and rotation about axis C by bearing 247 such that angle ~3 changes. For example, if the object 34 is moved into the page of Figure 3 away from the viewer, or out of the plane of the page toward the viewer, then the angle ~ will decrease. If the object is moved to the left or right as shown in Figure 3, the angle ~ will increase.
Linear axis member 250 is preferably an elongated rod-like member which is coupled to central member 248a and central member 248b at the point of intersection P of axes A and B.
o Linear axis member 250 can be used as a shaft of user object 34, or, in other embodiments, linear axis member 250 can be coupled to a different object. Linear axis member 250 is coupled to gimbal mechanism 240 such that it extends out of the plane defined by axis D and axis E. Linear axis member 250 can be rotated about axis A (and E) by rotating extension member 246a, central member 248a, and central member 248b in a first revolute degree of freedom, shown as arrow line 251. Member 250 can also be rotated about axis B (and D) by rotating extension member 250b and the two central members about axis B in a second revolute degree of freedom, shown by arrow line 252. Linear axis member can also be tr~n~l~t~hly coupled to the ends of central members 248a and 248b, and thus can be linearly moved, independently with respect to the gimbal m.orh~ni.~m 240, along floating axis C, providing a third degree of freedom as shown by arrows 253. Axis C can, of course, be rotated about one or both axes A and B as member 250 is rotated about these axes. In addition, linear axis member 250 in some embodiments can rotated about axis C, as in~ tt~(l by arrow 255, to provide an additional degree of freedom. These additional degrees of freedom can also be associated with additional sensors and actuators to allow processor 26/host c~ Illp.lL~r 12 to read the position/motion of object 34 and apply forces in those 2s degrees of freedom.
Also preferably coupled to gimbal mechanism 240 andlor linear axis member 250 are tr~n~ cers, such as the sensors 28 and actuators 30 of Figure 2. Such tr:~nc~ c~rs are preferably coupled at the link or bearing points between members of the apparatus and provide input to and output from microprocessor 26 and/or host computer systeml2. For example, a sensors/actuator trzln~c1ucer 256 can be coupled to extension member 246b by a gear drive 258. Gear drive 258 can include a drive wheel 255 and a rotatable cam 257 that interlock using gear teeth 253. Cam ~ 257 is rigidly coupled to extension member 246b and is rotatable with the member 246b with respect to ground 242. Drive wheel is rigidly coupled to a rotating shaft of tr~n~rlncer 256 such - that transducer 256 can rotate drive wheel 255, cam 257, and member 246b to output forces on user object 34 about axis B/D. Likewise, tran~-lllcer 256 can sense rotation about axis B/D when member 246b, cam 257, and drive wheel 255 rotate. A similar gear drive system can be provided at bearing 243a to sense and actuate movement about axis A/E. In alternate embodiments, - W O 97/12337 PCT~US96/15340 different drive systems and tr~ncflucrc, sensors, and ~ t~ rs can be used, as described above with reference to Figure 2. For example, a capstan drive or friction drive can be provided, and actuators and sensors can be provided for rotary or linear degrees of freedom of user object 34.
User object 34 is coupled to mech~nicm 240 and is ~.crt;l~bly an interface object for a user S to grasp or otherwise manipulate in three ~limPnsjonal (3D) space. User object 34 may be moved in both (or all three or four) degrees of freedom provided by gimbal mPGh~nism 240 and linear axis member 250. As object 34 is moved about axis A, floating axis D varies its position, and as object 34 is moved about axis B, floating axis E varies its position.
The ~l~re~ d embodiment for gimbal mPch~nism 240 is for a joystick user object that can 0 be moved in two rotary degrees of freedom about axes A/E and B/D. For example, linear axis member 250 can be replaced by a joystick handle that is rigidly coupled to central member 248b.
Another preferred embodiment includes a third degree of freedom in which the joystick handle can rotate or "spin" about axis C. These embo~ Ls, are most ~ ,iate for video games and certain virtual reality type applications such as controlling a vehicle, first person point of view, etc.
15 Other embodiments include medical simulation and operation, for which the four degrees of freedom described above are more aL3pl0~liate.
FIGURE 9 is a schematic diagram of circuit 260 for a touch plate safety switch 262 of the present invention. Like the optical and contact safety switches described with reference to Figure 2, the touch plate safety switch is flPci~ne~l to be contacted by a user while the interface device is in 20 use. When the user does not contact the safety switch, the actuators 30 of the interface device are deactivated and pose no hazard to the user.
Touch plate safety switch 262 is A~PSjgne~l SO that the user does not have to press a button or otherwise actively control a switch, which can be awkward and tiresome during operation of the joystick or other user object 34. Two touch plates 264 are provided on the exterior of the 25 interface device 14, preferably in a position which is naturally underneath the grip of a user who is grasping the user object 34. For example, the two plates can be provided on a joystick handle, as shown in FIGURE 9a, near the midsection of the handle where users typically contact it. Or, the contacts might be additionally or alternately provided on the top portion of the joystick 34.
Touch plates 264 are preferably made of a metal or other conductive material. When the 30 user touches both plates with skin, a circuit is closed through the user, providing a ~P~-Imz~n signal to the microprocessor, host c~ uLer, and/or actuators 30 that the safety switch is closed and that the actuators can be enabled. Then the user does not contact both plates 264, no current can flow and the safety switch is open, disabling the actuators 30 from functioning.

- W O 97/12337 PCT~US96/15340 -Touch plate 264a is coupled to a circuit 266 which outputs a "c~e~(lm~n" signal 270 as a high (5 V) signal when the user contacts both plates. Circuit 266 includes two c~p~ritors, three resistors, 4 inverters, and a diode. Touch plate 26b is coupled to a circuit 268 which allows the current to flow to ground. Circuit 268 includes three resistors, two capacitors, and two inverters.
The function and impl~l,.e~ ion of these components are well known to those skilled in the art.
Other equivalent circuits can also be used to perform substantially the same functions, and are well known to those skilled in the art.
FIGURE 10 is a diagr~mm~tic illustration of a joystick 280 including a hand-weight safety switch of the present invention. The safety switch 41, as described in Figures 2 and 9, is lo included in joystick 260 so that the user must activate the switch before ~ct~l~torc 30 are able to output forces. This is a safety feature that prevents the user object from unexpectedly moving and imp~rting the user when the user is not controlling the user object. Safety switches such as contact switches, light detectors, and other types of switches were described above which the user contacts or covers during operation of the joystick and are located on the user object or housing of the interface device 14. This can be awkward during operation of the stick since the user must constantly contact or cover a specific area of the user object or device housing.
Joystick 260 includes a hand-weight safety switch 262 which can be used to replace or supplement safety switch 41 and is more convenient for the user. Joystick 260 includes a tr~ncl~t~hle handle 264, a base 266, a spring 268, and switch contacts 270. Handle 264 is a standard joystick handle, but can also be replaced with other user objects 34 as described above.
Handle 264 can be moved along axis C within a range distance d of the base 266 preferably on an extension member 272 or other similar guide. Distance d is preferably relatively small, such as 1 millimeter, and is exaggerated in Figure 8 for clarity. Pre-loaded spring 268 preferably forces the handle 264 up away from base 266 in a direction in~iir~t~-l by arrow 274 to an '~open" position when no weight is placed on handle 264. Preferably, a stop (not shown) coupled to the top of member 272 or to the bottom of handle 264 prevents the handle from being ~l~t~rh~c~ from the base 266. A similar limit to movement of handle 264 in the direction of base 266 is provided by the physical engagement of the handle and base.
Switch contacts 270 are provided between the base 266 and handle 264 of joystick 260.
Contacts 270 are connected by lines 276 to microprocessor 26, which can monitor when the contacts are touching. When the handle 264 is in the open position, contacts 270 are separated and no electrical current can flow between them, and thus no electrical current or power can flow to the motors from the power supply. Alternatively, contacts 270 can be connectP~l to microprocessor 26 or another selecting component which can detect the open state of the contacts and can deactivate actuators 30 with a safety disable signal when the open state is ~1t tectr-l The actuators - W O 97/12337 PCTrUS96/15340 -=

30 are thus prevented from outputting forces when the user does not have control of the joystick handle 264 and the interface device 14.
When a user grasps handle 264, the weight of the user's hand forces the handle 264 down to engage the base 266. Switch contacts 270 connect from this engagement and allow curren~ to flow between them. Since the conL~;L:i 270 complete the circuit from the actuators to the power supply, power is thus allowed to flow from the power supply to the actuators. Alternatively, microprocessor 26 detects the closed contact condition and discontinues sending a safety disable signal to actuators 30. This allows the actuators 30 to be controlled and activated by host computer 12 and microprocessor 26 normally. When the user releases the handle 264 from his or o her grasp, the spring 268 forces the handle 264 away from base 266, which sepa,al~s contacts 270 and deactivates the actuators 30.
The hand-weight safety switch has several advantages over other types of safety switches.
The user can simply grasp or hold the handle in a normal, comfortable fashion and still activate the safety switch due to the weight of the user's hand. Thus, the user need not cover or press an awkwardly-located switch in a particular location of the handle or housing. Another advantage is concerned with the transportability of the il~lt;.ace device 14. The use of smaller power supplies, especially with respect to the features of the power circuit of Figure 6 of the present invention and the use of interface device 14 for home applications, results in a more lightweight interface device.
Thus, users can pick up the interface device easily and move it to desired locations. A natural way for a user to pick up a joystick is to hold and pull on the handle 264. A standard force fee~lb~rk joystick may present some danger to a user when picked up by the handle, since the actuators 30 will cause the base of the joystick to move and flail about. When using the hand-weight safety switch 262 of the present invention, this danger does not exist: the actuators are activated only if the user provides weight on the handle, and the pulling and carrying of the handle will not provide this weight and will not activate the actuators.
FIGURE 11 is a diagramm~tic illustration of a break-away joystick 280 of the present invention. Since forces are exerted on the user object 34 and the user from actuators 30, there is a potential for too strong a force to be output and to injure a user. As a safety measure, a break-away joystick 280 or other break-away user object 34 can be implement.--1 Break-away joystick 280 includes a handle 282, a base 284, and a securing device 286. In normal operation, handle 282 is secured to base 284 through securing device 286. Securing device 286 can be, for example, m~gn~tc that hold the base and handle together by m,.,~netic fields. Oppositely-polarized magnets can be provided in the contacting portions of the base and handle. The magnets can be particularly chosen to provide a predetermined ,.tt~hm~nt strength. A user applies force to handle 282 during operation of the interface device, and the ,.~tl~:~t--r~ 30 apply forces to base 284 to provide force feedback to the user. A total force on the handle and base is thus equal to the sum CA 02233206 l998-03-26 of the force on the handle from the user and the force in the opposite direction on the base from the actuators. When a total force greater than a predetermined m~gnit~ is applied to the break-away joystick, then the handle clet~rh~s from the base. In other embodiments, other secl-ring devices or materials can be used, such as velcro, m~h~nical or electro-mPrh~nif~l s devices, etc.
FIGURES lla-llc show the break-away joystick in operation. In Figure lla, a usergrasps handle 282 and forces the handle in direction of arrow 290. At the same time, an actuator 30 provides force in a direction of arrow 292 to base 284. Combined, these forces add up to a total force greater than the predeterrnined force which the sccuring device can with~t~n-l As o shown in Figures l lb and l lc, the handle breaks away from the base in the direction the user was forcing the handle while the base moves in the direction forced by the actuators 30.
In addition, stops may be provided in the degrees of freedom of the joystick to provide limits to the movement of the joyseick. The handle may detach if the force from the user on the handle is over the predetermined limit when the base is positioned against a stop such that the stop provides a force in the opposite direction to the user's force.
Figure l ld shows an alternate embodiment 280' of the break-away joystick 280. Joystick 280' includes one or more controls 294 on the handle 282 that are available for the user to manipulate to provide other input 39, such as buttons, switches, or other input devices. Since input signals from control 294 are provided to the microprocessor and/or host co~ ult;l 12, the signals are routed from the control 294 on the handle through a wire bundle 296. Wire bundle 296 is provided with extra length so that when handle 282 breaks from base 284, the wire bundle will not break. The wire bundle is routed through base 284 through an a~e.Lu.c 298 and is coupled to the microprocessor or is directly routed to host computer 12 as explained in the above described embodiments.
In an alternative embodiment to the embodiment 280' of Figure I ld, wire bundle 296 need not be used. Tn~tt-~l, handle 282 and base 284 can be provided with mating conductive pads that are in contact when the handle 282 is mated with the base 284 and allow button signals to be tr~n~mitt~d to base 284 only when the handle and base are engaged. The handle conductive pad is coupled to the button 294 and the base conductive pad is coupled to a wire that runs to the microprocessor or other control components of the interface device. Signals from button 294 can thus be tr~n~mitt~-l through joystick 280 when the handle and base are engaged and the conductive pads are in contact. When the joystick handle 282 breaks away from base 284, the conductive pads are no longer in contact and no signals from button 294 are transmitted to base 284.
While this invention has been described in terms of several plcrc~lcd embo(lim~nt~, it is 3s contemplated that alterations, modifications and permutations thereof will become ~ cllL to - W O 97/12337 PCT~US96/15340 --those skilled in the art upon a reading of the specification and study of the drawings. For ex~mple7 many different types and standards of comml-nir~tion i..l~ r~-~es can be used with the intr~ re device closed herein. Various signal lines can be used to provide co.. ic~tion between host computer and interface device depending on the desired control that the host 5 co~ uLel has over output forces. In addition, many different types of gimbal mech~ni~m~ or other mech~ni~m~ can be provided to allow movement of the user object in desired degrees of freedom. A variety of different types of actuators, sensors, and other devices, as well as the necessary power supplies, can also be used to sense the position of an object and apply forces to the object along degrees of freedom. The different low-cost and safety embodilllellts disclosed o herein can be combined in multiple configurations for various applications.
Furtherrnore, certain terminology has been used for the purposes of descriptive clarity, and not to limit the present invention. It is therefore intf~n~ that the following appended claims include all such alterations, modifications and l~c~ uL~Lions as fall within the true spirit and scope of the present invention.

Classifications
International ClassificationH04L29/06, G06F3/01, G06F1/26, G06F3/038, G06F3/00, A63F13/06, G05G9/047
Cooperative ClassificationA63F13/23, A63F13/285, G06F3/016, H04L67/38, A63F2300/1031, G06F2203/014, H01H2003/008, G06F1/266, G06F3/0383, G05G2009/04766, G06F3/011, G06F2203/015, G05G9/047, A63F2300/1037, G05G2009/04777, A63F2300/1025, A63F13/06
European ClassificationG06F1/26P, G06F3/01B, G06F3/01F, A63F13/06, G05G9/047, G06F3/038E
Legal Events
DateCodeEventDescription
23 Sep 1998EEERExamination request
28 Nov 2016MKEXExpiry
Effective date: 20160926