Claims
- 1. A system for controlling an electromechanical interface apparatus manipulated by a user, the system comprising:
a host computer system for receiving an input control signal and for providing a host command having at least one command parameter to control forces on a user manipulable object of said interface apparatus, wherein said host computer system updates a process in response to said input control signal; a processor positioned local to said interface apparatus and separate from said host computer system for receiving said host command from said host computer system and providing a processor output control signal in accordance with said at least one command parameter; an actuator for receiving said processor output control signal and providing a force along a degree of freedom to said user manipulable object in accordance with said processor output control signal, said object being coupled to said actuator and being graspable and movable by said user; and a sensor for detecting motion of said manipulable object along said degree of freedom and outputting said input control signal including information representative of the position and motion of said object.
- 2. A system as recited in claim 1 wherein said sensor outputs said input control signal to said processor, and wherein said processor provides said input control signal to said host computer system.
- 3. A system as recited in claim 2 wherein said processor implements one of a plurality of reflex processes selected in accordance with said host command and said command parameters to provide said processor output control signal to said actuator in response to said position and motion of said object independently of said host command.
- 4. A system as recited in claim 3 wherein a magnitude of said force output by said actuator is determined by a force value output in said processor output control signal, said force value being determined by said selected reflex process based on said at least one command parameter included in said host command.
- 5. A system as recited in claim 4 wherein a direction along said degree of freedom of said force output by said actuator is determined by an indication of a direction in said processor output control signal, said direction being determined by said selected reflex process according to said at least one command parameter included in said host command.
- 6. A system as recited in claim 5 wherein said at least one command parameter includes a magnitude parameter determining a magnitude of said force to be output by said actuator.
- 7. A system as recited in claim 5 wherein said at least one command parameter includes a duration parameter determining how long said force output by said actuator is in effect.
- 8. A system as recited in claim 5 wherein said at least one command parameter includes a direction parameter determining the direction and degrees of freedom of said force output by said actuator.
- 9. A system as recited in claim 5 wherein said at least one command parameter includes button parameters which designate a button coupled to said processor and determine a magnitude, direction, and duration of a force output by said actuators when said button is pressed by said user.
- 10. A system as recited in claim 4 wherein said host computer system displays images on a visual output device and manipulates said images in accordance with a position and a motion of said object.
- 11. A system as recited in claim 10 wherein said displayed images include a computer object in a computer environment directly mapped to a position of said user object, and wherein said host command is a position control command operative to cause forces to be output directly in accordance with the location of said computer object and said user object.
- 12. A system as recited in claim 10 wherein said displayed images include a computer object in a computer environment, wherein a motion of said computer object is directly mapped to a position of said user object, and wherein said host command is a rate control command operative to cause forces to be output directly in accordance with a position of said user object in said degree of freedom and in accordance with a computer environment of said computer object.
- 13. A system as recited in claim 10 wherein said displayed images include a computer object in a computer environment under control of said user, and wherein said displayed images include a computer object under control of said user, and wherein said host command provides local position control to cause output forces to be output in accordance with a location of said computer object and said user object, and provides global rate control to cause output forces to be output in accordance with said computer environment and said user object.
- 14. A system as recited in claim 1 wherein said host computer and said processor are coupled together by a serial interface.
- 15. A system as recited in claim 14 wherein said serial interface includes a Universal Serial Bus interface.
- 16. A system as recited in claim 3 wherein said microprocessor and said actuator are including in a single housing and are coupled to said host computer by a communication interface.
- 17. 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 object included in said force feedback interface device, said object having a degree of freedom; sensing positions of said object along said degree of freedom with a sensor and producing electrical sensor signals therefrom; utilizing a microprocessor local to said object to communicate with said host computer system to provide said electrical sensor signals to said host computer system and to receive a host command from said host computer system, said host command including a command parameter; and creating a force on said object along said degree of freedom independently utilizing said microprocessor and said host command to control an actuator coupled to said object.
- 18. A method as recited in claim 17 wherein said step of creating a force on said user manipulable object includes the steps of:
selecting a reflex process by said microprocessor in accordance with said host command; outputting processor force commands from said microprocessor to said actuator utilizing said reflex process and said electrical sensor signals.
- 19. A method as recited in claim 18 wherein said command parameter is a magnitude parameter for controlling a magnitude of said force output by said actuator.
- 20. A method as recited in claim 19 wherein said command parameter is a duration parameter for controlling the time duration of said force applied to said user manipulable object.
- 21. A method as recited in claim 19 wherein said command parameter is a direction parameter for controlling the direction of said force along a degree of freedom output by said actuator.
- 22. A method as recited in claim 19 wherein said command parameter indicates a degree of freedom of said user object in which to apply said force.
- 23. A method as recited in claim 19 wherein said command parameter is a deadband parameter for indicating the size of a deadband region about an origin position of said user object, wherein said force is not applies to said user object in said deadband region.
- 24. A method as recited in claim 19 wherein said command parameter includes a button parameter instructing said microprocessor to read input from a designated button and generate a force in response to said designated button being activated by said user.
- 25. A method as recited in claim 18 wherein said host command is a position control command which instructs said microprocessor to control said force output by said actuator based on a position of a computer object on a display screen, said computer object being controlled by said user manipulable object.
- 26. A method as recited in claim 18 wherein said host command is a rate control command which instructs said microprocessor to control said force output by said actuator based on a velocity of a computer object provided by said host computer and a position of said user manipulable object.
- 27. A method as recited in claim 18 wherein said user manipulable object includes a joystick that can be moved by said user in two degrees of freedom.
- 28. A method as recited in claim 27 wherein said two degrees of freedom are rotary degrees of freedom.
- 30. A method as recited in claim 27 further comprising a step of updating game or simulation software implemented by said host computer system in accordance with said position signals.
- 31. A method as recited in claim 18 wherein said selected reflex process retrieves a plurality of stored digital force values and outputs said stored force values to said actuator.
- 32. A method as recited in claim 18 further comprising a step of using calibration parameters stored in a memory device for adjusting said force consistently with output forces of a plurality of other force feedback interface devices having variations in physical properties resulting from a manufacturing process.
- 33. A method as recited in claim 17 wherein said microprocessor communicates with said host computer using a serial interface.
- 34. A method as recited in claim 33 wherein said serial interface includes a Universal Serial Bus.
- 35. A method as recited in claim 17 further comprising a step of utilizing said microprocessor to record a history of sensor values read from said sensor.
- 36. A method as recited in claim 34 wherein time data is retrieved from said Universal Serial Bus interface which is used to determine, in part, said force output on said user object.
- 37. A method as recited in claim 34 wherein a power signal is retrieved from said Universal Serial Bus interface which is used to power said actuator to output said force.
- 38. A force feedback interface device manipulated by a user and communicating with a host computer system implementing a host application program, said host computer system updating said host application program in response to input signals, said force feedback interface device comprising:
a processor, separate from said host computer system, for communicating with said host computer system via a communication bus by receiving a host command from said host computer system and implementing said command in a reflex process, and by relaying said input signals to said host computer system; a user object movable in a degree of freedom by a user and being physically contacted by said user; an actuator electrically coupled to said processor for applying a force along a degree of freedom to said user object in accordance with a processor force command from said processor, said processor force command being derived from said host command, said reflex process, and a position of said user object; and a sensor electrically coupled to said processor for detecting a position of said user object along said degree of freedom and outputting said input signals to said processor, said input signals including information representative of said position of said user object.
- 39. A force feedback interface device as recited in claim 38 wherein said host command instructs said processor to select one of a plurality of reflex processes available to said processor, wherein each of said reflex processes instructs said processor to output force commands to said actuator and process said input signals from said sensor independently of said host computer system.
- 40. A force feedback interface device as recited in claim 38 wherein said processor calculates velocity or acceleration values from said input signals from said sensor.
- 41. A force feedback interface device as recited in claim 39 further comprising a clock provided locally to said processor used to provide timing data used in the calculation of velocity and acceleration values from said input signals of said sensor.
- 42. A force feedback interface device as recited in claim 39 wherein said host command instructs said processor to select a restoring force reflex process to provide restoring forces on said user object in a direction toward an origin position of said user object.
- 43. A force feedback interface device as recited in claim 42 wherein said restoring forces are constant in magnitude when said user object is positioned outside a region near an origin position of said user object, and wherein said restoring forces are near to zero within said region near said origin position.
- 44. A force feedback interface device as recited in claim 39 wherein said host command instructs said processor to select a vibration reflex process to provide vibration forces on said user object.
- 45. A force feedback interface device as recited in claim 44 wherein said host command includes command parameters to control a frequency and a magnitude of said vibration forces.
- 46. A force feedback interface device as recited in claim 39 wherein said host command instructs said processor to select a texture reflex process to provide texture forces on said user object, said texture forces being mapped to a position along said degree of freedom.
- 47. A force feedback interface device as recited in claim 46 wherein said host command includes a command parameter specifying a spatial density of said texture forces along said degree of freedom.
- 48. A force feedback interface device as recited in claim 39 wherein said host command instructs said processor to select a barrier reflex process to provide a barrier force on said user object based on the position of said user object.
- 49. A force feedback interface device as recited in claim 48 wherein said barrier force is removed after said user object is moved a snap distance past said barrier force.
- 50. A force feedback interface device as recited in claim 49 wherein a location of said barrier force along said degree of freedom is specified by a command parameter included in said host command.
- 51. A force feedback interface device as recited in claim 48 wherein said barrier force simulates a virtual obstruction, such that when a computer controlled object moves into said virtual obstruction in said host application, said barrier forces are output according to said barrier reflex process.
- 52. A force feedback interface device as recited in claim 39 wherein said host command instructs said processor to select a force field reflex process to provide attractive or repulsive forces on said user object depending on said position of said object.
- 53. A force feedback interface device as recited in claim 52 wherein a location of a field origin position determines at what positions of said user object said forces are applied, said origin location being specified in a command parameter included with said host command.
- 54. A force feedback interface device as recited in claim 39 wherein said host command instructs said processor to select a jolt reflex process to provide a jolting force on said user object for a limited duration.
- 55. A force feedback interface device as recited in claim 39 wherein said host command instructs said processor to select a damping reflex process to provide damping forces on said user object, said damping force being dependent on a velocity of said user object.
- 56. A force feedback interface device as recited in claim 55 wherein a command parameter included with said host command specifies whether said damping force is applied bi-directionally or uni-directionally along said degree of freedom.
- 57. A force feedback interface device as recited in claim 39 wherein said host command instructs said processor to select a groove reflex process which instructs said processor to provide forces on said user object to simulate a physical groove.
- 58. A force feedback interface device as recited in claim 57 wherein a command parameter included with said host command specifies an orientation of said groove.
- 59. A force feedback interface device as recited in claim 57 wherein a command parameter included with said host command includes a snap distance for said groove, such that when said user object exceeds said snap distance, said forces of said groove are removed.
- 60. A force feedback interface device as recited in claim 39 wherein said host command instructs said processor to select a paddle reflex process which instructs said processor to provide forces on said user object in accordance with a user controlled paddle displayed by said host computer system, said paddle compressing from contact with other displayed objects and movable by said user to provide force on said other displayed objects.
- 61. A force feedback interface device as recited in claim 60 wherein said host command includes a command parameter controlling a simulated compliance of said simulated paddle.
- 62. A force feedback interface device as recited in claim 60 wherein said processor calculates said forces in accordance with said paddle and said other displayed objects, wherein said processor reports positions of said paddle and said other displayed objects to said host computer periodically.
- 63. A computer readable medium including program instructions for providing force feedback to a user-manipulable object of an interface device and for communicating with a host computer system implementing a host application program, said program instructions performing steps comprising:
receiving a host command on a microprocessor local to said interface device and separate from said host computer system; processing said host command and storing force parameters derived from said host command; receiving sensor data from sensors describing a motion of said user object of said interface device; computing a force value using a reflex process selected in accordance with said force parameters and said sensor data; and outputting a force on said user object utilizing actuators coupled to said user object, said force corresponding to said force value.
- 64. A computer readable medium as recited in claim 63 wherein said host command includes at least one command parameter, and wherein said force parameters are derived from said host command and said at least one command parameter.
- 65. A computer readable medium as recited in claim 64 wherein said step of storing said force parameters includes providing a set of force parameter memory locations for each host command which can be sent by said host computer, and writing said force parameters for said received host command in said force parameter memory locations that correspond to said received host command.
- 66. A computer readable medium as recited in claim 64 wherein said sensor data includes position data describing a position of said user object in a provided degree of freedom.
- 67. A computer readable medium as recited in claim 66 further comprising a step of determining velocity values from said position data.
- 68. A computer readable medium as recited in claim 67 wherein said step of receiving sensor data includes receiving velocity data from said sensors, said sensors being velocity sensors.
- 69. A computer readable medium as recited in claim 64 wherein said force value is dependent on said sensor data.
- 70. A computer readable medium as recited in claim 64 wherein said force value is dependent on said at least one command parameter.
- 71. A computer readable medium as recited in claim 64 wherein said force value is dependent on input from a button provided on said interface device.
- 72. A computer readable medium as recited in claim 69 further comprising a step of reading timing data from a clock and using said timing data to calculate said force value.
- 73. A computer readable medium as recited in claim 69 wherein said step of computing a force value is performed for each provided degree of freedom of said user object.
- 74. A computer readable medium as recited in claim 73 wherein said step of computing a force value is performed for a plurality of host commands that are simultaneously in effect, and wherein a total force value is computed by adding said force values from each of said host commands in effect.
- 75. A computer readable medium as recited in claim 63 further comprising a step of reporting said sensor data to said host computer system.
- 76. A computer readable medium as recited in claim 75 wherein only sensor data required by said host computer system is reported to said host computer system.
- 77. A computer readable medium as recited in claim 76 wherein said host command is a configuration command which determines which sensor data is reported to said host computer.
- 78. A computer readable medium as recited in claim 76 wherein said host command is a configuration command which determines a rate at which sensor data is to be reported to said host computer.
- 79. A computer readable medium as recited in claim 63 further comprising a step of checking for a violation of a safety condition before outputting said force.
- 80. A computer readable medium as recited in claim 79 further comprising a step of removing all output force when said violation occurs, and wherein when said safety condition is no longer violated, said force is gradually reapplied to said user object over time.
- 81. A computer readable medium as recited in claim 63 wherein a plurality of said received host commands are stored as said force parameters in memory as a force environment, said force environment being retrievable when forces are to be output on said user object in accordance with said plurality of received host commands.
- 82. A computer readable medium as recited in claim 79 further comprising a step of creating one of said force environments using incoming host commands while a different, previously-created force environment is used to apply said force to said user object.
- 83. A computer readable medium as recited in claim 64 wherein said step of computing a force value includes limiting said force value so that other forces may be overlaid on said output force.
- 84. A processing apparatus coupled to an interface device that provides force feedback to a user-manipulable object coupled to said interface device and which communicates with a separate host computer system, said processing apparatus comprising:
a command processor for receiving a host command from a separate host computer system, said host command including a command parameter, and for processing said host command and storing force parameters derived from said host command and said command parameter; a status update processor for receiving sensor data from sensors describing a motion of said user object of said interface device; and a force output processor for computing a force value using a reflex process selected in accordance with said force parameters and said sensor data, said force output processor outputting a force on said user object utilizing actuators coupled to said user object, said force corresponding to said force value.
- 85. A processing apparatus as recited in claim 84 wherein a set of force parameter locations for each host command which can be sent by said host computer are stored in a memory device, and wherein said force parameters for said received host command are written in said force parameter locations corresponding to said received host command.
- 86. A processing apparatus as recited in claim 84 wherein said force value is dependent on said sensor data and said command parameter.
- 87. A processing apparatus as recited in claim 84 further comprising a reporting processor for reporting said sensor data to said host computer system.
- 88. A processing apparatus as recited in claim 86 wherein said reporting processor only reports sensor data required by said host computer system.
- 89. A processing apparatus as recited in claim 84 wherein said force output processor selects a reflex process for a plurality of host commands.
- 90. A processing apparatus as recited in claim 84 wherein said status update processor receives input data from a button provided on said interface device.
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation-in-part of co-pending parent patent application Ser. No. 08/461,170, originally filed Jul. 16, 1993, on behalf of Louis B. Rosenberg et al., entitled, “Three-Dimensional Mechanical Mouse,” and co-pending parent patent application Ser. No. 08/534,791, filed Sep. 27, 1995, on behalf of Louis B. Rosenberg, entitled, “Method and Apparatus for Controlling Human-Computer Interface Systems Providing Force Feedback,” both assigned to the assignee of this present application, and both of which are incorporated by reference herein.
Continuations (3)
|
Number |
Date |
Country |
Parent |
09050665 |
Mar 1998 |
US |
Child |
09815872 |
Mar 2001 |
US |
Parent |
08566282 |
Dec 1995 |
US |
Child |
09050665 |
Mar 1998 |
US |
Parent |
08092974 |
Jul 1993 |
US |
Child |
08461170 |
Jun 1995 |
US |
Continuation in Parts (2)
|
Number |
Date |
Country |
Parent |
08534791 |
Sep 1995 |
US |
Child |
08566282 |
Dec 1995 |
US |
Parent |
08461170 |
Jun 1995 |
US |
Child |
08566282 |
Dec 1995 |
US |