Claims
- 1. A method for providing force effects with a force feedback device having local control of the output of force sensations, said force feedback device coupled to a host computer, the method comprising:
creating a representation of device memory, said device memory being provided on said force feedback device, said representation being allocated in memory of said host computer, wherein an application program is running on said host computer; receiving a force effect load command from said application program, said force effect load command instructing that data for a force effect be stored in said device memory; determining whether said device memory can store said force effect by examining said representation of device memory; and if said device memory can store said force effect, sending said data for said force effect to said force feedback device to be stored in said device memory, wherein said force feedback device uses said data to control a force output to a user of said force feedback device.
- 2. A method as recited in claim 1 wherein if said device memory can store said force effect, further comprising storing said data for said force effect in a location of said representation of device memory.
- 3. A method as recited in claim 1 wherein if said device memory is full and cannot store said force effect, further comprising delaying the sending of said force effect to said force feedback device.
- 4. A method as recited in claim 1 wherein said data for said force effect includes at least one parameter characterizing said force effect.
- 5. A method as recited in claim 1 further comprising:
receiving a force effect play command from said application program, said force effect play command instructing that said loaded force effect be output to said user by said device; and sending said force effect play command to said force feedback device, wherein said force feedback device outputs said force based on said loaded force effect.
- 6. A method as recited in claim 5 further comprising:
receiving a force effect stop command from said application program, said force effect stop command instructing that said force effect stop being output by said device to said user; sending said force effect stop command to said force feedback device, wherein said force feedback device stops output of said force corresponding to said stopped force effect.
- 7. A method as recited in claim 5 wherein a plurality of force effects are stored in said representation and in said device memory, wherein each of said force effects commanded to be output by said application program is summed to provide a total output force.
- 8. A method as recited in claim 1 wherein a greater number of said force effects can be stored in said representation than in said device memory.
- 9. A method as recited in claim 8 wherein when a particular one of said force effects that is stored in said representation and not stored in said device memory is commanded to be played by said application program, said particular force effect is sent to said device memory to replace a force effect stored in said device memory.
- 10. A method for managing the storage of force effects in a force feedback system, the force feedback system including a force feedback device connected to a host computer, the method comprising:
receiving a force effect create command by a driver running on said host computer, said command sent from an application program running on said host computer, said force effect create command instructing that particular force effect data for a particular force effect be stored in memory local to said force feedback device; determining whether said local memory has sufficient space to store said particular force effect data; if said local memory does have said sufficient space, sending said particular force effect data to said force feedback device to be stored in said local memory; and if said local memory does not have said sufficient space, storing said particular force effect data in a cache implemented in memory of said host computer instead of said local memory.
- 11. A method as recited in claim 10 further comprising receiving a command by said driver from said application program to output said particular force effect to a user of said force feedback device, wherein if said particular force effect data is stored in said cache, said driver swaps said particular force effect data with loaded force effect data in said local memory and instructs said force feedback device to output said particular force effect.
- 12. A method as recited in claim 11 wherein said driver creates a representation of said local memory in said memory of said host computer.
- 13. A method as recited in claim 12 wherein said representation and said device memory each include an effect block and a parameter block, wherein an identifier of said particular force effect is stored in said effect block and at least one parameter for said particular force effect is stored in said parameter block.
- 14. A method as recited in claim 12 wherein said determining whether said local memory has sufficient space includes examining said representation for sufficient space.
- 15. A method as recited in claim 11 wherein said determining whether said local memory has sufficient space includes querying said force feedback device and receiving a response indicating whether sufficient space is available.
- 16. A method as recited in claim 12 wherein said determining whether said local memory has sufficient space includes comparing a priority of said particular force effect with a priority of said loaded force effect.
- 17. A method as recited in claim 16 wherein said priority of said of said particular force effect is compared to each priority of a plurality of force effects loaded in said device memory.
- 18. A method as recited in claim 16 wherein said priority of said loaded force effect is determined based at least partially on whether said loaded force effect is currently being output by said device.
- 19. A method as recited in claim 18 wherein said priority of said loaded force effect is determined based at least partially on the time period since said loaded force effect was last output by said device.
- 20. A method as recited in claim 16 wherein said priorities of said particular force effect and said loaded force effect are determined at least partially based on whether said loaded force effect is likely to be output based on a direction of movement of a manipularidum of said force feedback device in a workspace of said manipulandum.
- 21. A method as recited in claim 20 wherein said likelihood of output of said particular and loaded force effects is also based on a velocity of said manipulandum of said force feedback device in said workspace.
- 22. A method as recited in claim 20 wherein said manipulandum controls a path of a cursor in a graphical user interface displayed by said host computer.
- 23. A method as recited in claim 16 wherein said priority of said loaded force effect is determined based at least partially on a predefined priority assigned to said loaded force effect.
- 24. A method as recited in claim 22 wherein said predefined priority was assigned based on a type of said force effect.
- 25. A method as recited in claim 22 wherein said predefined priority was assigned by said application program.
- 26. A method as recited in claim 10 wherein said force effect create command designates that at least one of a plurality of force effects be grouped in a category, and wherein said create command instructs that force effect data for said category of force effects be stored in memory local to said force feedback device in place of an existing category of loaded force effects.
- 27. A method as recited in claim 11 wherein when said local memory does not have sufficient space, said particular force effect is given a waiting status such that said force effect data for said particular force effect is sent to said device memory at a later time.
- 28. An apparatus for managing the storage of force effects in a force feedback system, the force feedback system including a force feedback device connected to a host computer, the method comprising:
means for receiving a force effect create command by a driver running on said host computer, said command sent from an application program running on said host computer, said force effect create command instructing that particular force effect data for a particular force effect be stored in memory local to said force feedback device; means for determining whether said local memory has sufficient space to store said particular force effect data, wherein if said local memory does have said sufficient space, said particular force effect data is sent to said force feedback device to be stored in said local memory, and wherein if said local memory does not have said sufficient space, said particular force effect data is stored in a cache implemented in memory of said host computer instead of said local memory; and means for receiving a command by said driver from said application program to output said particular force effect to a user of said force feedback device, wherein if said particular force effect data is stored in said cache, said driver swaps said particular force effect data with loaded force effect data in said local memory and instructs said force feedback device to output said particular force effect.
- 29. An apparatus as recited in claim 28 wherein said driver creates a representation of said local memory in said memory of said host computer, wherein said means for determining whether said local memory has sufficient space includes means for examining said representation for sufficient space.
- 30. An apparatus as recited in claim 29 wherein said means for determining whether said local memory has sufficient space includes means for comparing a priority of said particular force effect with a priority of said loaded force effect.
- 31. A method as recited in claim 28 wherein said force effect create command designates that at least one of a plurality of force effects be grouped in a category, and wherein said command instructs that force effect data for said category of force effects be stored in memory local to said force feedback device in place of an existing category of loaded force effects.
- 32. A method for outputting force effects from a force feedback device coupled to a host computer, the method comprising:
receiving a force effect play command from said host computer, said play command instructing that a particular force effect be output by said force feedback device, said particular force effect being stored as data in a memory local to said force feedback device, said local memory also storing data for at least one other force effect; designating in a playlist in said local memory an identification of said particular force effect; examining said playlist to determine which of a plurality of stored force effects are designated to be output; determining a force based on said force effects designated in said playlist and outputting said force to a user of said force feedback device.
- 33. A method as recited in claim 32 wherein said force determined based on said force effects designated in said playlist is a sum of said designated force effects.
- 34. A method as recited in claim 32 further comprising storing a number in said local memory indicating how many of said force effects stored in said local memory are currently designated to be output.
- 35. A method as recited in claim 34 wherein said examining said playlist includes examining said number to determine how many force effects are in said playlist.
- 36. A method as recited in claim 35 wherein said force effects in said playlist are provided in successive slots in said playlist.
- 37. A method as recited in claim 32 further comprising:
receiving a force effect create command from said host computer before receiving said force effect play command, said create command including force effect data characterizing a force effect; and storing said force effect data in said memory local to said force feedback device at a location indicated by said create command.
- 38. A method for providing force output to a user of a force feedback device, said force feedback device being coupled to a host computer, the method comprising:
determining a first force to be output by actuators of said force feedback device; outputting said first force at a first point in time occurring when a predetermined time interval has passed; determining a second force to be output by said actuators; if said predetermined time interval has not passed when said second force has been determined, waiting for a second point in time occurring when said predetermined time interval has passed after said first point in time, and outputting said second force at said second point in time; and if said predetermined time interval has passed when said second force has been determined, waiting for a successive point in time occurring when an integer number of said predetermined time intervals has passed after said first point in time, and outputting a third force at said successive point in time, said third force being appropriate to said successive point in time.
- 39. A method as recited in claim 38 wherein said predetermined time interval has passed when said second force has been determined due to a plurality of force effects contributing to said second force.
- 40. A method as recited in claim 38 wherein said first force and said second force are at least partially based on a periodic function that varies with time, and wherein said third force is made appropriate to said successive point in time by basing said third force at least partially on an appropriate time point of said periodic function.
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation-in-part of co-pending parent patent application Ser. No. 08/970,953, filed Nov. 14, 1997 on behalf of Braun et al., assigned to the assignee of this present application, and which is incorporated herein by reference in its entirety.
Divisions (1)
|
Number |
Date |
Country |
Parent |
10060472 |
Jan 2002 |
US |
Child |
10713595 |
Nov 2003 |
US |
Continuations (2)
|
Number |
Date |
Country |
Parent |
09401564 |
Sep 1999 |
US |
Child |
10060472 |
Jan 2002 |
US |
Parent |
09305872 |
May 1999 |
US |
Child |
09401564 |
Sep 1999 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
08970953 |
Nov 1997 |
US |
Child |
09305872 |
May 1999 |
US |