Claims
- 1. A haptic feedback interface device in communication with a host computer, said host computer running and displaying a graphical environment, said haptic feedback interface device comprising:
a user manipulatable object physically contacted by a user and moveable in at least one degree of freedom; at least one actuator outputting forces, said forces felt by said user; at least one sensor detecting motion of said user manipulatable object in said at least one degree of freedom and outputting a sensor signal indicative of said motion; and a device microcontroller coupled to said at least one actuator and to said at least one sensor and local to said haptic feedback interface device, said microcontroller outputting force values to said actuator to control said forces and receiving said sensor signal from said at least one sensor, wherein said microcontroller determines a closed loop force value based at least in part on said sensor signal and outputs said closed loop force value to said at least one actuator, and wherein said microcontroller does not compute open loop force values but instead receives open loop force values from said host computer and directs said open loop force values to said at least one actuator, wherein said forces output by said actuator are based on said closed loop and open loop force values.
- 2. A haptic feedback interface device as recited in claim 1 wherein said open loop force values are computed on said host computer.
- 3. A haptic feedback interface device as recited in claim 1 wherein said open loop force values include periodic forces.
- 4. A haptic feedback interface device as recited in claim 1 wherein said open loop force values are received from said host computer over a streaming serial communication channel coupling said haptic feedback interface device to said host computer.
- 5. A haptic feedback interface device as recited in claim 1 wherein said closed loop forces include spring forces, damping forces, and texture forces.
- 6. A haptic feedback interface device as recited in claim 4 wherein said streaming channel is an isochronous channel.
- 7. A haptic feedback interface device as recited in claim 4 wherein said microcontroller extrapolates a force value if a force value received from said host computer is corrupted or missing.
- 8. A haptic feedback interface device as recited in claim 4 wherein said microcontroller outputs a previously-received force value if a force value received from said host computer is corrupted or missing.
- 9. A haptic feedback interface device as recited in claim 4 wherein said microcontroller accesses a timer, said timer running for a time period starting when a force value is received from said host computer, wherein if said time period reaches a length greater than a predetermined length, a current force output is terminated, said predetermined length being a known length of time at least as long as a time required to receive a successive force value over said streaming channel.
- 10. A haptic feedback interface device as recited in claim 1 wherein said microcontroller computes kinematics which convert said sensor signal to coordinates in a coordinate system.
- 11. A method for providing haptic feedback functionality on a host computer in a hybrid system including said host computer and a haptic feedback interface device, the method comprising:
receiving on a driver of said host computer a command to provide a force effect, said command provided by an application program running on said host computer; determining whether said commanded force effect is an open loop effect or a closed loop effect; if said commanded force effect is a closed loop effect, directing force information based on said command to said haptic feedback device to allow said haptic feedback device to compute force values for said closed loop effect; and if said commanded force effect is an open loop effect,
storing information included with said command in memory of said host computer; computing a force value of said open loop force effect by said driver using said information included with said command; and providing said force value to said haptic feedback device to allow said haptic feedback device to output said force value as a force to a user of said haptic feedback device.
- 12. A method as recited in claim 11 wherein said driver is a low level emulation driver, functioning below an operating system and above a communication driver on said host computer.
- 13. A method as recited in claim 11 wherein said open loop effects are based primarily on time, and wherein said closed loop effects are based at least in part on a current position of a user manipulandum on said haptic feedback device.
- 14. A method as recited in claim 11 wherein a plurality of said force values for said open loop effect are provided to said haptic feedback device using a streaming channel.
- 15. A method as recited in claim 14 wherein said streaming channel is an isochronous channel.
- 16. A method as recited in claim 14 wherein said streaming channel is a Universal Serial Bus channel.
- 17. A method as recited in claim 14 wherein said streaming channel is a FireWire channel.
- 18. A method as recited in claim 11 wherein said command is a card to create said force effect in memory, and wherein said computing is performed when said force effect is to be output, wherein said computed force value is output to said device when a command to output said effect is received.
- 19. A method as recited in claim 11 wherein said command is a command to create said force effect in memory, wherein said computing is performed when said create command is received, wherein said computed force value is output to said device when a command to output said effect is received.
- 20. A method as recited in claim 11 wherein said driver emulates a haptic feedback device so that said application program sends said command as if it were sending said command to a haptic feedback device.
- 21. A method as recited in claim 11 wherein said force value is provided to said haptic feedback device over a streaming channel, and wherein said channel is kept continuously fill of streaming data by providing a transfer request to a communication driver on said host computer while said communication driver is outputting data from a previous transfer request to said haptic feedback device.
- 22. A method as recited in claim 11 wherein said driver manages a memory model for said haptic feedback device and can determine when memory of said haptic feedback device is full or available.
- 23. A method as recited in claim 22 wherein said driver caches closed loop effects in host memory which cannot fit in device memory and provides a particular one of said cached closed loop effects to said device when said particular cached effect is commanded to be output by said device.
- 24. A method as recited in claim 11 wherein when said open loop effect is a repeating force effect, said driver computes a force value for an initial period of said effect, stores said force value, and retrieves said stored force value when outputting said value in successive periods of said effect.
- 25. A method as recited in claim 24 further comprising adjusting said stored force value based on an envelope that modifies a magnitude of said repeating force effect.
- 26. A method as recited in claim 11 wherein said driver stores created effects for said device in memory of said host computer in said memory model using effect caching, said memory model able to store a greater number of said effects than memory of said device
- 27. A method as recited in claim 11 wherein said streaming force value is repeated in a successive packet sent to said haptic feedback device to allow error correction at said haptic feedback device.
- 28. A method for providing haptic feedback functionality on a host computer in a hybrid system including said host computer and a haptic feedback interface device in communication with said host computer, the method comprising:
receiving on a driver of said host computer a command to provide a force effect, said command provided by an application program running on said host computer, said force effect having a type; and based on said type of force effect, either directing information derived from said command to said haptic feedback device to allow said haptic feedback device to compute a force value from said information, or storing information derived from said command in memory of said host computer and computing a force value using said driver, wherein said driver provides said computed force value to said haptic feedback device, wherein said force value is output as a force by said haptic feedback device to a user of said haptic feedback device.
- 29. A method as recited in claim 28 wherein said force value is computed using at least one parameter included with said command.
- 30. A method as recited in claim 28 wherein sad type is either an open loop or closed loop, wherein said force value from said closed loop effect is computed by said haptic feedback device and wherein said force value from said open loop effect is computed by said driver.
- 31. A method as recited in claim 28 wherein said driver emulates a haptic feedback device so that said application program is ignorant of any division in computation of forces.
- 32. A method as recited in claim 28 wherein said driver provides said computed force value to said haptic feedback device using a streaming channel.
- 33. A method as recited in claim 32 wherein said streaming channel is isochronous.
- 34. A method as recited in claim 32 wherein said driver selects a particular period for said streaming force values from a plurality of available periods.
- 35. A method as recited in claim 34 wherein said driver selects said particular period based on a processing burden on said host computer.
- 36. A method as recited in claim 34 wherein said driver selects said particular period based on the type or model of said device or a bandwidth of a communication channel between said host computer and said device.
- 37. A method as recited in claim 34 wherein said computed force value is one of a plurality of force values streamed from said driver to said haptic feedback device, and wherein a frequency of sending said streamed force values is adjusted by said driver to achieve a desired processing load on said haptic feedback device.
- 38. A method as recited in claim 28 wherein said computed force value is one of a plurality of force values streamed from said driver to said haptic feedback device, and wherein a computation rate of said streamed force values is adjusted by said driver to achieve a desired processing load on said host.
- 39. A method as recited in claim 38 wherein said computation rate of said streamed force values is based on a frequency of force effect to be output by said haptic feedback device.
- 40. A method as recited in claim 28 wherein said computed force value is one of a plurality of force values streamed from said driver to said haptic feedback device, and wherein said driver computes one of said force values for an initial period of said effect, stores said computed force value, and retrieves said stored force value when outputting said value in successive periods of said effect.
- 41. A method as recited in claim 28 wherein said computed force value is one of a plurality of force values streamed from said driver to said haptic feedback device, and wherein said driver precomputes and stores an entire period of force values for a force effect to be output and retrieves said stored period of force values when outputting said force values in successive periods of said force effect.
- 42. A force feedback interface device, said device coupled to a host computer, said host computer running and displaying a graphical environment, said force feedback interface device comprising:
a user manipulatable object physically contacted by a user and moveable in at least one degree of freedom; at least one actuator for outputting forces felt by said user; at least one sensor for detecting motion of said user manipulatable object in said at least one degree of freedom and outputting a sensor signal indicative of said motion; and a device microcontroller coupled to said at least one actuator and to said at least one sensor and local to said force feedback interface device, said microcontroller outputting signals to said actuator to control said forces and receiving said sensor signal from said at least one sensor, wherein said microcontroller determines a force value for a high frequency open loop effect based at least in part on a command received from said host computer, and wherein said microcontroller does not determine force values for low frequency open loop effects and receives force values for low frequency open loop effects from said host computer, said microcontroller directing said force values for said high frequency open loop effects and low frequency open loop effects to said at least one actuator.
- 43. A force feedback interface device as recited in claim 42 wherein said force values for said high frequency open loop effects and low frequency open loop effects define a vibration force effect.
- 44. A force feedback interface device as recited in claim 43 wherein said vibration force effect is a periodic force effect.
- 45. A force feedback interface device as recited in claim 42 wherein said microcontroller outputs force values from said high frequency open loop effects simultaneously with outputting force values for low frequency open loop effects received from said host computer.
- 46. A force feedback interface device as recited in claim 45 wherein said microcontroller sums force values from said high frequency open loop effect and from said low frequency open loop effect and outputs a total force value.
- 47. A force feedback interface device as recited in claim 42 wherein said device microcontroller also determines closed loop force values based at least in part on a position of said user manipulatable object in said degree of freedom.
- 48. A force feedback interface device, said device coupled to a host computer, said host computer running and displaying a graphical environment, said force feedback interface device comprising:
a user manipulatable object physically contacted by a user and moveable in at least one degree of freedom; at least one actuator for outputting forces, said forces felt by said user; at least one sensor for detecting motion of said user manipulatable object in said at least one degree of freedom and outputting a sensor signal indicative of said motion; and a device microcontroller coupled to said at least one actuator and to said at least one sensor and local to said force feedback interface device, said microcontroller outputting signals to said actuator to control said forces and receiving said sensor signal from said at least one sensor, wherein said microcontroller determines a closed loop force value based at least in part on said sensor signal and outputs said closed loop force value, and wherein said microcontroller does not compute any low frequency open loop force values and receives low frequency open loop force values from said host computer and directs said open loop force values to said at least one actuator.
- 49. A force feedback interface device as recited in claim 48 wherein said low frequency open loop force values describe a vibration having a frequency under a threshold frequency, and wherein said microcontroller determines high frequency open loop values which describe a vibration having a frequency over said threshold frequency.
- 50. A force feedback interface device as recited in claim 48 wherein said open loop forces are computed on said host computer.
- 51. A force feedback interface device as recited in claim 48 wherein said open loop forces include periodic forces.
- 52. A force feedback interface device as recited in claim 48 wherein said open loop force values are received from said host computer over a streaming serial communication channel coupling said force feedback interface device to said host computer.
- 53. A force feedback interface device as recited in claim 51 wherein said closed loop forces include spring forces and damping forces.
- 54. A method for providing force feedback functionality on a host computer in a hybrid system including said host computer and a force feedback interface device, the method comprising:
receiving on a driver program of said host computer a command to provide a force effect, said command provided by an application program running on said host computer; determining whether said commanded force effect is a high frequency open loop effect or a low frequency open loop effect; if said commanded force effect is a high frequency open loop effect, directing force information based on said command to said force feedback device to allow said force feedback device to compute force values for said high frequency open-loop effect and output said force values as forces to said user; and if said commanded force effect is a low frequency open loop effect,
storing information included with said command in memory of said host computer; computing a force value of said low frequency open loop force effect by said driver using said information included with said command; and providing said force value to said force feedback device to allow said force feedback device to output said force value as a force to a user of said force feedback device.
- 55. A method as recited in claim 54 wherein said low frequency open loop effect is a vibration having a frequency under a threshold frequency, and wherein said high frequency open loop effect is a vibration having a frequency over said threshold frequency.
- 56. A method for providing force feedback functionality on a host computer in a hybrid system including said host computer and a force feedback interface device, the method comprising:
receiving on a driver program of said host computer a command to provide a force effect, said command provided by an application program running on said host computer; determining whether said commanded force effect is an open loop effect or a closed loop effect; if said commanded force effect is a closed loop effect or a high frequency open-loop effect, directing force information based on said command to said force feedback device to allow said force feedback device to compute force values for said closed loop effect or said high frequency open-loop effect; and if said commanded force effect is a low frequency open loop effect,
storing information included with said command in memory of said host computer; computing a force value of said low frequency open loop force effect by said driver using said information included with said command; and providing said force value to said force feedback device to allow said force feedback device to output said force value as a force to a user of said force feedback device.
- 57. A method as recited in claim 56 wherein said low frequency open loop effect is a vibration having a frequency under a threshold frequency, and wherein said high frequency open loop effect is a vibration having a frequency over said threshold frequency.
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation-in-part of co-pending U.S. patent application Ser. No. 09/322,245 filed May 28, 1999, entitled, “Shaping Force Signals Output by a Force Feedback Device,” which is a continuation of U.S. patent application Ser. No. 08/747,841, now U.S. Pat. No. 5,959,613, filed Nov. 13, 1996;
[0002] and this application claims the benefit of U.S. Provisional Applications No. 60/160,401, filed Oct. 19, 1999, entitled, “Hybrid Control of Force Feedback for a Host Computer and Interface Device,” and No. ______ filed Jul. 27, 2000, entitled, “Hybrid Control of Vibrations in Haptic Feedback Devices,”
[0003] all of which are incorporated herein by reference in their entirety.
Government Interests
[0004] Certain inventions provided herein were made with government support under Contract Number M67004-97-C-0026, awarded by the Department of Defense. The government has certain rights in these inventions.
Provisional Applications (2)
|
Number |
Date |
Country |
|
60160401 |
Oct 1999 |
US |
|
60221496 |
Jul 2000 |
US |
Continuations (2)
|
Number |
Date |
Country |
Parent |
09687744 |
Oct 2000 |
US |
Child |
10184041 |
Jun 2002 |
US |
Parent |
08747841 |
Nov 1996 |
US |
Child |
09322245 |
May 1999 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
09322245 |
May 1999 |
US |
Child |
09687744 |
Oct 2000 |
US |