Force feedback system including multi-tasking graphical host environment and interface device
First Claim
1. A method for interfacing a multi-tasking graphical environment implemented on a host computer with a force feedback interface device coupled to said host computer, wherein multiple application programs are simultaneously running in said multi-tasking environment, wherein one of said multiple application programs is active and the other application programs are inactive, the method comprising:
- receiving force effects from each of at least two of said multiple application programs simultaneously running in said multi-tasking graphical environment, each of said force effects describing a force sensation that is output by said force feedback interface device;
storing said force effects into contexts allocated in memory of said host computer, wherein each of said contexts is associated with only one of said at least two application programs running on said host computer, and wherein each of said force effects is stored in said context associated with said application program that sent each of said force effects;
of said force effects in said contexts of said at least two application programs, providing only said force effects in said context of said active application program to be stored in said force feedback interface device such that only said force effects received from said active application program are output to a user of said force feedback interface device;
receiving instructions from each of said at least two application programs, said instructions instructing said force feedback interface device to start an output of at least one of said force effects sent from each of said application programs; and
of said instructions from said at least two application programs, sending only said instructions from said active application program to said force feedback interface device such that only said force effects from said context of said active application program are output to said user of said force feedback interface device.
5 Assignments
0 Petitions
Accused Products
Abstract
A force feedback system provides components for use in a force feedback system including a host computer and a force feedback interface device. An architecture for a host computer allows multi-tasking application programs to interface with the force feedback device without conflicts, where a single active application may output forces. A background application also provides force effects to be output and allows a user to assign force effects to graphical objects in a graphical user interface. Force feedback effects and structures are further described, such as events and enclosures.
421 Citations
81 Claims
-
1. A method for interfacing a multi-tasking graphical environment implemented on a host computer with a force feedback interface device coupled to said host computer, wherein multiple application programs are simultaneously running in said multi-tasking environment, wherein one of said multiple application programs is active and the other application programs are inactive, the method comprising:
-
receiving force effects from each of at least two of said multiple application programs simultaneously running in said multi-tasking graphical environment, each of said force effects describing a force sensation that is output by said force feedback interface device;
storing said force effects into contexts allocated in memory of said host computer, wherein each of said contexts is associated with only one of said at least two application programs running on said host computer, and wherein each of said force effects is stored in said context associated with said application program that sent each of said force effects;
of said force effects in said contexts of said at least two application programs, providing only said force effects in said context of said active application program to be stored in said force feedback interface device such that only said force effects received from said active application program are output to a user of said force feedback interface device;
receiving instructions from each of said at least two application programs, said instructions instructing said force feedback interface device to start an output of at least one of said force effects sent from each of said application programs; and
of said instructions from said at least two application programs, sending only said instructions from said active application program to said force feedback interface device such that only said force effects from said context of said active application program are output to said user of said force feedback interface device. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
sending force effects in a context associated with a background application program to said force feedback interface device regardless of whether said background application program is active or inactive in said multi-tasking environment; and
sending instructions from said background application program to said force feedback interface device such that said force effects from said background application program are output to said user of said force feedback interface device, such that said force feedback interface device may output forces based on said force effects from said active application program and from said background application program.
-
-
5. A method as recited in claim 1 wherein said contexts further include at least one event that can be triggered by said force feedback device, wherein said event includes conditions based on interactions of a cursor in said graphical environment such that when said conditions are met, an event notification is sent to an application program associated with said event.
-
6. A method as recited in claim 1 wherein said force effects include a spring, a damper, and a vibration.
-
7. A method as recited in claim 1 wherein said multi-tasking graphical environment includes a Windows™
- operating system environment.
-
8. A method as recited in claim 7 wherein said force effects are created as effect objects in an application programming interface in said Windo™
- operating system environment, and wherein said effect objects are sent to said force feedback interface device when created by said active application program.
-
9. A method as recited in claim 1 wherein said force effects sent to said force feedback interface device are stored in memory of said force feedback interface device and output as force sensations when commanded to be output by said active application program.
-
10. A method as recited in claim 1 wherein at least one of said force effects describes a force sensation that provides an enclosure, said enclosure including at least one wall having an inner wall portion and an outer wall portion, each of said wall portions associated with different forces felt by said user from said device.
-
11. A method as recited in claim 10 wherein said enclosure is an ellipse.
-
12. A method as recited in claim 10 wherein said enclosure is a rectangular object including four sides, each of said sides providing said inner wall and said outer wall.
-
13. A method as recited in claim 12 wherein a magnitude of force sensations associated with top and bottom sides of said enclosure is greater than a magnitude of force sensations associated with left and right sides of said enclosure so that a user can perceive all of said sides as having equal magnitude when using said force feedback interface device.
-
14. A method as recited in claim 10 wherein at least one of said force sensations associated with said enclosure is adjusted after a user-controlled cursor is moved into said enclosure, wherein a particular one of said application programs is informed of said movement into said enclosure by using an event stored in said context associated with said particular application program and sent to said force feedback interface device.
-
15. A method as recited in claim 10 wherein said enclosure is used to control force sensations associated with other enclosures defined within the interior space of said enclosure.
-
16. A computer readable medium including program instructions executable by a host computer, said program instructions interfacing a multi-tasking graphical environment implemented on said host computer with a force feedback interface device coupled to said host computer, wherein multiple application programs are simultaneously running in said multi-tasking environment, wherein one of said plurality of application programs is active and the other application programs are inactive, the program instructions performing:
-
receiving force effects from each of at least two of said multiple application programs simultaneously running in said multi-tasking graphical environment, each of said force effects describing a force sensation that is output by said force feedback interface device;
storing said force effects into contexts allocated in memory of said host computer, wherein each of said contexts is associated with only one of said at least two application programs running on said host computer, and wherein each of said force effects is stored in said context associated with said application program that sent each of said force effects;
of said force effects in said contexts of said at least two application programs, providing only said force effects in said context of said active application program to be stored in said force feedback interface device;
receiving instructions from each of said at least two application programs, said instructions instructing said force feedback interface device to start an output of at least one of said force effects sent from said at least two application programs; and
of said instructions from said at least two application programs, sending only said instructions from said active application program to said force feedback interface device, said instructions causing only said force effects from said context of said active application program to be output to said user. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24, 25)
-
-
26. A method for interfacing a multi-tasking graphical environment implemented on a host computer with a force feedback interface device coupled to said host computer, wherein a plurality of application programs having force feedback functionality are simultaneously running in said multi-tasking environment, wherein only one of said application programs is active, the method comprising:
-
enabling a reception of force commands from at least two of said application programs having force feedback functionality, said force commands characterizing force effects to be output by said force feedback interface device;
enabling a storage of each of said force effects in one of a plurality of contexts, each of said contexts being allocated in memory of said host computer, and each of said contexts being associated with only one of said at least two application programs running on said host computer, and wherein each of said force effects is stored in said context associated with said application program that sent said force effect;
enabling a determination of which one of said at least two application programs sending said force commands is currently active in said multi-tasking environment; and
of said force effects in said contexts of said at least two application programs, enabling a sending of only said force effects in said context of said active application program to said force feedback interface device, said sent force effects being available to be output to said user by said force feedback interface device. - View Dependent Claims (27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38)
enabling a reception of instructions from said at least two application programs that sent said force commands to start an output of at least one of said force effects sent from said application programs; - and
enabling a sending of only said instructions from said active application program to said force feedback interface device, said instructions causing only said force effects from said context of said active application program to be output to said user of said force feedback interface device.
-
-
28. A method as recited in claim 27 wherein if said application program providing said instructions is inactive, said instructions to cause said force effects to be output are ignored.
-
29. A method as recited in claim 27 wherein said sent force effects include force effect characterization data that are stored in memory of said force feedback interface device.
-
30. A method as recited in claim 29 wherein said instructions include a start command to start the output of a force effect stored in a context, wherein said force effect is commanded to be output on said force feedback interface device only if said application program providing said start command is active.
-
31. A method as recited in claim 26 further comprising receiving a stop command from one of said at least two application programs to stop the output of a force effect, wherein said interface device is commanded to stop said output of said force effect only if said application program providing said start command is active.
-
32. A method as recited in claim 26 further comprising enabling a background force feedback master application to run in said graphical user interface simultaneously with said plurality of application programs, said background master application providing force feedback to graphical objects in said graphical environment.
-
33. A method as recited in claim 32 wherein commands and force effects from said background master application are always sent to said force feedback interface device, regardless of whether said background application is active, such that said force feedback interface device outputs forces based on said force effects from said active application program and from said background application program.
-
34. A method as recited in claim 26 wherein said force commands include a command to set a device state structure.
-
35. A method as recited in claim 34 wherein said device state structure includes a force gain level for all forces output by said force feedback interface device.
-
36. A method as recited in claim 26 wherein said active application program is a first application program, and further comprising receiving an indication that said first application program has become inactive and that a second one of said running application programs has become active, wherein further force commands from said first application program are not sent to said interface device and force commands from said second application program are sent to said interface device while said second application program is active.
-
37. A method as recited in claim 26 wherein any commands from an inactive running application program to start, stop, or pause said output of force effects by said interface device are ignored and are not sent to said interface device.
-
38. A method as recited in claim 26 wherein said contexts further include data characterizing at least one event that can be triggered by said force feedback device, wherein said event includes conditions based on interactions of a cursor in said graphical environment such that when said conditions are met, an event notification is sent to an application program associated with said event.
-
39. A method for controlling a force feedback interface device coupled to a host computer displaying a graphical environment and a cursor within said graphical environment on a display screen, the method comprising:
-
reading sensor data and determining a position of a user manipulandum in a device frame of said force feedback interface device from said sensor data, said manipulandum being physically contacted and moveable by a user;
determining a device delta position of said manipulandum that includes the change in position of said manipulandum from a previous position, and reporting said device delta position to said host computer when said host computer is not enabled to receive an absolute position of said cursor from said force feedback interface device; and
when said host computer is enabled to receive said absolute position of said cursor from said force feedback interface device, determining said absolute position from said device delta position, said absolute position provided in a screen frame of said display screen, reporting said absolute position to said host computer to allow said host computer to display said cursor in said screen frame at a position derived from said absolute position, and using a scaled position of said manipulandum related to said absolute position in determining a force to be output by actuators of said force feedback interface device. - View Dependent Claims (40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51)
-
-
52. A force feedback interface device coupled to a host computer displaying a graphical environment and a user-controlled graphical object within said graphical environment on a display device, the interface device comprising:
-
a user manipulandum physically contacted by a user and movable in a planar workspace in two degrees of freedom;
a sensor that provides raw data describing a device position of said manipulandum in said workspace;
a plurality of actuators coupled to said manipulandum that provide a force on said manipulandum in said planar workspace; and
a local microprocessor, separate from said host computer and coupled to said sensor and to said actuators, said local microprocessor;
determining a delta position of said manipulandum that includes the change in position of said manipulandum from a previous position, said microprocessor reporting said delta position to said host computer when said host computer is not enabled to receive an absolute position of said user-controlled graphical object to allow said host computer to determine a position at which to display said user-controlled graphical object; and
when said host computer is enabled to receive said absolute position of said user-controlled graphical object, determining said absolute position of said user-controlled graphical object from said delta position, reporting said absolute position to said host computer to allow said host computer to display said user-controlled graphical object at a position derived from said absolute position, and using said absolute position in determination of said force output by said actuators if said force is based at least partially on an interaction of said user-controlled graphical object with another graphical object in said graphical environment. - View Dependent Claims (53, 54, 55, 56, 57, 58)
-
-
59. A method for controlling a force feedback interface device coupled to a host computer displaying a graphical environment and a cursor within said graphical environment on a display screen, the method comprising:
-
reading sensor data and determining a position of a user manipulandum in a workspace of said force feedback interface device from said sensor data, said manipulandum being physically contacted and moveable by a user;
determining and reporting a position of said manipulandum to said host computer, said position used by said host computer to display said cursor in said graphical environment; and
receiving information from said host computer describing a current screen size of said display screen of said host computer, wherein said current screen size is included in said determination of said position reported to said host computer. - View Dependent Claims (60, 61, 62, 63, 64, 65, 66)
-
-
67. A method of interfacing a tactile feedback mouse with a software application running on a host computer, said method comprising:
-
providing a physical object contacted by a user and moveable by said user on a planar surface;
providing a sensor that tracks motion of said physical object with respect to said planar surface, wherein motion data provided by said sensor is transmitted to said host computer for updating a status of a graphical object on a graphical display device, said motion data transmitted over a communication bus;
providing an actuator that delivers a tactile sensation to said user when said user is in contact with said physical object, said actuator delivering said tactile sensation in response to tactile signals received from said host computer over said communication bus; and
enabling two modes of operation, said two modes being a relative mode wherein said motion data is reported to said host computer as relative data, and an absolute mode wherein said motion is reported to said host computer as absolute data. - View Dependent Claims (68, 69, 70, 71, 72, 73, 74)
-
-
75. A method of interfacing a tactile feedback mouse with a software application running on a host computer, said method comprising:
-
providing a physical object contacted by a user and moveable in a planar workspace on a planar surface;
providing a sensor that tracks motion of said physical object with respect to said planar surface, wherein motion data provided by said sensor is transmitted to said host computer for updating a location of a graphical object on a graphical display device, said motion data transmitted over a communication bus;
providing an actuator that delivers a tactile sensation to a palm of said user when said palm is in contact with said physical object, said actuator delivering said tactile sensation in response to tactile signals received from said host computer over said communication bus; and
providing said tactile feedback mouse with capability of reporting said motion data to said host computer as relative data and reporting said motion data to said host computer as absolute data, said relative data representing an incremental change in position of said physical object in said planar workspace, and said absolute data indicating an absolute position of said physical object in said planar workspace. - View Dependent Claims (76)
-
-
77. A tactile feedback mouse device interfacing with a software application running on a host computer, said mouse device comprising:
-
a physical object contacted by a user and moveable by said user on a planar surface;
at least one sensor that tracks motion of said physical object with respect to said planar surface, wherein motion data provided by said sensor is transmitted to said host computer for updating a status of a graphical object on a graphical display device, said motion data transmitted over a communication bus;
an actuator operative to output a tactile sensation received by said user when said user is in contact with said physical object, said actuator outputting said tactile sensation in response to tactile signals received by said mouse device from said host computer over said communication bus; and
a local processor electrically coupled to said at least one sensor and to said actuator, said processor providing a reporting mode on said mouse device, wherein said reporting mode can be either of two modes, said two modes including a relative mode wherein said motion data is reported to said software application as relative data, and an absolute mode wherein said motion is reported to said software application as absolute data. - View Dependent Claims (78, 79, 80, 81)
-
Specification