DE69635902T2 - Verfahren und einrichtung zur kraftrückkopplung für eine graphische benutzerschnittstelle - Google Patents

Verfahren und einrichtung zur kraftrückkopplung für eine graphische benutzerschnittstelle Download PDF

Info

Publication number
DE69635902T2
DE69635902T2 DE69635902T DE69635902T DE69635902T2 DE 69635902 T2 DE69635902 T2 DE 69635902T2 DE 69635902 T DE69635902 T DE 69635902T DE 69635902 T DE69635902 T DE 69635902T DE 69635902 T2 DE69635902 T2 DE 69635902T2
Authority
DE
Germany
Prior art keywords
force
cursor
user
target
forces
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69635902T
Other languages
English (en)
Other versions
DE69635902D1 (de
Inventor
B. Louis Pleasanton ROSENBERG
B. Scott La Honda BRAVE
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Immersion Corp
Original Assignee
Immersion Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US08/566,282 external-priority patent/US5734373A/en
Application filed by Immersion Corp filed Critical Immersion Corp
Application granted granted Critical
Publication of DE69635902D1 publication Critical patent/DE69635902D1/de
Publication of DE69635902T2 publication Critical patent/DE69635902T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/016Input arrangements with force or tactile feedback as computer generated output to the user
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/23Input arrangements for video game devices for interfacing with the game device, e.g. specific interfaces between game controller and console
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/25Output arrangements for video game devices
    • A63F13/28Output arrangements for video game devices responding to control signals received from the game device for affecting ambient conditions, e.g. for vibrating players' seats, activating scent dispensers or affecting temperature or light
    • A63F13/285Generating tactile feedback signals via the game input device, e.g. force feedback
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/53Controlling the output signals based on the game progress involving additional visual information provided to the game scene, e.g. by overlay to simulate a head-up display [HUD] or displaying a laser sight in a shooting game
    • A63F13/533Controlling the output signals based on the game progress involving additional visual information provided to the game scene, e.g. by overlay to simulate a head-up display [HUD] or displaying a laser sight in a shooting game for prompting the player, e.g. by displaying a game menu
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/57Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/80Special adaptations for executing a specific game genre or game mode
    • A63F13/803Driving vehicles or craft, e.g. cars, airplanes, ships, robots or tanks
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05GCONTROL DEVICES OR SYSTEMS INSOFAR AS CHARACTERISED BY MECHANICAL FEATURES ONLY
    • G05G9/00Manually-actuated control mechanisms provided with one single controlling member co-operating with two or more controlled members, e.g. selectively, simultaneously
    • G05G9/02Manually-actuated control mechanisms provided with one single controlling member co-operating with two or more controlled members, e.g. selectively, simultaneously the controlling member being movable in different independent ways, movement in each individual way actuating one controlled member only
    • G05G9/04Manually-actuated control mechanisms provided with one single controlling member co-operating with two or more controlled members, e.g. selectively, simultaneously the controlling member being movable in different independent ways, movement in each individual way actuating one controlled member only in which movement in two or more ways can occur simultaneously
    • G05G9/047Manually-actuated control mechanisms provided with one single controlling member co-operating with two or more controlled members, e.g. selectively, simultaneously the controlling member being movable in different independent ways, movement in each individual way actuating one controlled member only in which movement in two or more ways can occur simultaneously the controlling member being movable by hand about orthogonal axes, e.g. joysticks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
    • G06F3/0383Signal control means within the pointing device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04812Interaction techniques based on cursor appearance or behaviour, e.g. being affected by the presence of displayed objects
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/10Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals
    • A63F2300/1025Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals details of the interface with the game device, e.g. USB version detection
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/10Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals
    • A63F2300/1037Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals being specially adapted for converting control signals received from the game device into a haptic signal, e.g. using force feedback
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/30Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by output arrangements for receiving control signals generated by the game device
    • A63F2300/308Details of the user interface
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/64Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/80Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game specially adapted for executing a specific type of game
    • A63F2300/8017Driving on land or water; Flying
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05GCONTROL DEVICES OR SYSTEMS INSOFAR AS CHARACTERISED BY MECHANICAL FEATURES ONLY
    • G05G9/00Manually-actuated control mechanisms provided with one single controlling member co-operating with two or more controlled members, e.g. selectively, simultaneously
    • G05G9/02Manually-actuated control mechanisms provided with one single controlling member co-operating with two or more controlled members, e.g. selectively, simultaneously the controlling member being movable in different independent ways, movement in each individual way actuating one controlled member only
    • G05G9/04Manually-actuated control mechanisms provided with one single controlling member co-operating with two or more controlled members, e.g. selectively, simultaneously the controlling member being movable in different independent ways, movement in each individual way actuating one controlled member only in which movement in two or more ways can occur simultaneously
    • G05G9/047Manually-actuated control mechanisms provided with one single controlling member co-operating with two or more controlled members, e.g. selectively, simultaneously the controlling member being movable in different independent ways, movement in each individual way actuating one controlled member only in which movement in two or more ways can occur simultaneously the controlling member being movable by hand about orthogonal axes, e.g. joysticks
    • G05G2009/04766Manually-actuated control mechanisms provided with one single controlling member co-operating with two or more controlled members, e.g. selectively, simultaneously the controlling member being movable in different independent ways, movement in each individual way actuating one controlled member only in which movement in two or more ways can occur simultaneously the controlling member being movable by hand about orthogonal axes, e.g. joysticks providing feel, e.g. indexing means, means to create counterforce
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05GCONTROL DEVICES OR SYSTEMS INSOFAR AS CHARACTERISED BY MECHANICAL FEATURES ONLY
    • G05G9/00Manually-actuated control mechanisms provided with one single controlling member co-operating with two or more controlled members, e.g. selectively, simultaneously
    • G05G9/02Manually-actuated control mechanisms provided with one single controlling member co-operating with two or more controlled members, e.g. selectively, simultaneously the controlling member being movable in different independent ways, movement in each individual way actuating one controlled member only
    • G05G9/04Manually-actuated control mechanisms provided with one single controlling member co-operating with two or more controlled members, e.g. selectively, simultaneously the controlling member being movable in different independent ways, movement in each individual way actuating one controlled member only in which movement in two or more ways can occur simultaneously
    • G05G9/047Manually-actuated control mechanisms provided with one single controlling member co-operating with two or more controlled members, e.g. selectively, simultaneously the controlling member being movable in different independent ways, movement in each individual way actuating one controlled member only in which movement in two or more ways can occur simultaneously the controlling member being movable by hand about orthogonal axes, e.g. joysticks
    • G05G2009/04777Manually-actuated control mechanisms provided with one single controlling member co-operating with two or more controlled members, e.g. selectively, simultaneously the controlling member being movable in different independent ways, movement in each individual way actuating one controlled member only in which movement in two or more ways can occur simultaneously the controlling member being movable by hand about orthogonal axes, e.g. joysticks with additional push or pull action on the handle
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/01Indexing scheme relating to G06F3/01
    • G06F2203/014Force feedback applied to GUI
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/01Indexing scheme relating to G06F3/01
    • G06F2203/015Force feedback applied to a joystick
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01HELECTRIC SWITCHES; RELAYS; SELECTORS; EMERGENCY PROTECTIVE DEVICES
    • H01H3/00Mechanisms for operating contacts
    • H01H2003/008Mechanisms for operating contacts with a haptic or a tactile feedback controlled by electrical means, e.g. a motor or magnetofriction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality

Description

  • Technisches Gebiet
  • Die vorliegende Erfindung betrifft im Allgemeinen Schnittstellenvorrichtungen, um Menschen zu ermöglichen, mit Computersystemen zu kommunizieren, und insbesondere Computersysteme und Computer-Schnittstellenvorrichtungen, die eine Kraftrückkopplung zum Benutzer vorsehen.
  • Stand der Technik
  • Computersysteme werden in vielen verschiedenen Industrien in großem Umfang verwendet, um viele Anwendungen, wie z.B. Textverarbeitung, Datenverwaltung, Simulationen, Spiele und andere Aufgaben, zu implementieren. Diese Arten von Anwendungen sind auf dem Massenmarkt von Heimanwendern sehr beliebt. Ein Computersystem zeigt typischerweise einem Benutzer eine visuelle Umgebung auf einem Anzeigebildschirm oder einer anderen visuellen Ausgabevorrichtung an. Benutzer können mit der angezeigten Umgebung in Wechselwirkung treten, um Funktionen am Computer durchzuführen, ein Spiel zu spielen, eine Simulation oder eine Umgebung einer "virtuellen Realität" zu erleben, ein computergestütztes Konstruktions- (CAD) System zu verwenden oder anderweitig auf dem Bildschirm abgebildete Ereignisse oder Bilder zu beeinflussen. Eine solche Benutzerwechselwirkung kann durch die Verwendung einer Mensch-Computer-Schnittstellenvorrichtung, wie z.B. eines Steuerhebels, einer Maus, einer Rollkugel, eines Stifts und Tabletts, einer "Joypad"-Tastensteuereinheit, eines Fußpedals, eines Jochhandgriffs oder dergleichen, die mit dem Computersystem verbunden ist, welches die angezeigte Umgebung steuert, implementiert werden. Der Computer aktualisiert die Umgebung als Reaktion auf die Benutzerbedienung eines Objekts, wie z.B. eines Steuerhebelgriffs oder einer Maus, und liefert unter Verwendung des Anzeigebildschirms und typischerweise von Lautsprechern eine Rückkopplung an den Benutzer.
  • Eine visuelle Umgebung, die besonders üblich ist, ist eine graphische Benutzerschnittstelle (GUI). Eine Information innerhalb der GUIs wird Benutzern durch rein visuelle und akustische Mittel wie z.B. einen Videomonitor und eine Soundkarte präsentiert, um Bilder und Toneffekte zu präsentieren, die verschiedene graphische Metaphern des Betriebssystems beschreiben. Übliche GUIs umfassen das Windows® Betriebssystem von Microsoft Corporation und das System 7 Betriebssystem von Apple Computer, Inc. Diese Schnittstellen ermöglichen einem Benutzer, Funktionen des Betriebssystems des Computers unter Verwendung einer Maus, einer Rollkugel, eines Steuerhebels oder einer anderen Eingabevorrichtung graphisch auszuwählen und zu bedienen. Andere graphische Computerumgebungen sind zu den GUIs ähnlich. Graphische "Seiten" im World Wide Web des Internet-Kommunikationsnetzwerks verwenden beispielsweise Merkmale ähnlich jener der GUIs, um spezielle Funktionen auszuwählen und zu bedienen. Einige CAD-Systeme stellen ebenso graphische Darstellungen bereit. Außerdem bestand eine gewisse Erwartung von dreidimensionalen (3-D) GUIs, die simulierte 3-D-Umgebungen auf einem 2-D-Bildschirm präsentieren.
  • GUIs erfordern typischerweise, dass Benutzer ein vom Benutzer gesteuertes graphisches Objekt wie z.B. einen Cursor oder Zeiger sorgfältig über den Bildschirm und auf andere angezeigte graphische Objekte oder vordefinierte Bereiche auf einem Computerbildschirm bewegen und dort positionieren. Solche manuellen Aufgaben können als "Ziel"-Aktivitäten beschrieben werden, bei den ein Benutzer eine Maus, einen Steuerhebel oder eine andere Schnittstellenvorrichtung physikalisch bedient, um den Cursor zu einer gewünschten Stelle oder einem angezeigten Objekt zu steuern, das hierin als "Ziel" bekannt ist. Solche Ziele können beispielsweise Bildsymbole zum Ausführen von Anwendungsprogrammen und Bearbeiten von Dateien; Fenster zum Anzeigen von Bildsymbolen und anderen Informationen; Balkenmenüs zum Auswählen von speziellen Funktionen des Betriebssystems oder eines Anwendungsprogramms; Schaltflächen zum Auswählen von dargestellten Optionen; und Bildlaufleisten oder "Schieberegler" zum Scrollen von Informationen in Fenstern umfassen.
  • Beim Bewegen des Cursors zum gewünschten Ziel muss der Benutzer den Cursor am erfassten Ziel halten, während er eine Taste drückt, einen Auslöser drückt, ein Pedal herabdrückt oder irgendeine andere Geste durchführt, um die Ausführung der gegebenen Auswahl oder Operation zu befehlen. Beispiele von Zielaufgaben umfassen das Positionieren eines Cursors auf einem graphischen Bildsymbol, Auswählen und Drücken einer graphischen Darstellung einer Schaltfläche, Wählen unter zahlreichen Punkten innerhalb einer graphischen Darstellung eines Balkenmenüs, Festlegen eines kontinuierlichen analogen Werts aus einem bereitgestellten Bereich von Werten durch Positionieren eines Indikators innerhalb einer graphischen Darstellung einer Bildlaufleiste, Auswählen eines Textbereichs durch Hervorheben eines Bereichs unter Verwendung des Cursors, sowie eine Anzahl von weiteren üblichen Metaphern auf Fensterbasis und Textbasis.
  • Die Bewegung eines Cursors auf verschiedene angezeigte graphische Objekte einer GUI kann beachtliche Geschicklichkeit erfordern. Benutzer können den Cursor zu weit über ein Objekt bewegen und ihren Cursor zurückführen müssen. Oder spezielle graphische Objekte könnten versehentlich ausgewählt werden, wenn der Benutzer das Objekt nicht auswählen will, aufgrund des versehentlichen Drückens einer Schaltfläche oder Bewegens des Cursors. Außerdem kann ein Benutzer hinsichtlich dessen verwirrt werden, in welchem Fenster ein Cursor angeordnet ist, wenn der Benutzer andere Daten auf dem Bildschirm zur gleichen Zeit, wie er den Cursor bewegt, betrachtet.
  • Insbesondere Personen mit neuromotorischen Behinderungen, die unter einer spastischen manuellen Kontrolle leiden, haben eine viel größere Schwierigkeit bei der Wechselwirkung mit GUIs, da ihnen die feine motorische Koordination fehlt, die erforderlich ist, um den Computercursor genau und effizient manuell zu positionieren. Obwohl manuelle Zielaktivitäten von Personen mit normaler neuromotorischer Funktionalität angemessen ausgeführt werden, finden Personen mit spastischen Handbewegungen solche Aufgaben physikalisch schwierig, wenn nicht unmöglich.
  • Das Digitalisiertablett und Anzeigesystem von US 5 397 865 ist dazu ausgelegt, ein Übungsobjekt hervorzuheben, wenn ein vom Benutzer bedienter Cursor nahe an ein Objekt gelangt. Dann werden Kräfte auf einen Stift ausgeübt, um den Cursor zu bewegen, um den Benutzer dazu zu bringen, die Stiftbewegung auf die Linien des hervorgehobenen Übungsobjekts auszurichten.
  • Was erforderlich ist, ist eine Schnittstellenvorrichtung und ein Verfahren, die allen Benutzern ermöglichen, Cursorbewegungsaktivitäten genauer und effizienter durchzuführen und Betriebssystem- und andere Funktionen innerhalb einer GUI zu bedienen.
  • Die Erfindung ist im Anspruch 1 bzw. 7 definiert.
  • Spezielle Ausführungsbeispiele sind in den abhängigen Ansprüchen dargelegt.
  • Offenbarung der Erfindung
  • Die vorliegende Erfindung ist auf die Steuerung und Lieferung einer Kraftrückkopplung zu einem Benutzer gerichtet, der eine Mensch/Computer-Schnittstellenvorrichtung in Verbindung mit einer graphischen Benutzerschnittstelle (GUI) bedient, die von einem Hauptrechnersystem angezeigt wird. Kraftempfindungen werden zur Schnittstellenvorrichtung geliefert, um den Benutzer von graphischen Objekten, die von einem vom Benutzer gesteuerten Cursor in der GUI angetroffen werden, zu unterstützen und/oder zu informieren.
  • Insbesondere umfasst ein Verfahren der vorliegenden Erfindung zum Liefern einer Kraftrückkopplung innerhalb einer Umgebung einer graphischen Benutzerschnittstelle (GUI) eines Computersystems einen Schritt des Empfangens einer Angabe einer Bewegung eines physikalischen Objekts, das von einem Benutzer bedient wird. Dieses physikalische Objekt wie z.B. ein Steuerhebelgriff oder eine Maus, ist in einer Schnittstellenvorrichtung enthalten, die die Angabe der Bewegung an das Computersystem ausgibt. Ein vom Benutzer gesteuertes graphisches Objekt wie z.B. ein Cursor wird innerhalb einer graphischen Benutzerschnittstelle (GUI) auf der Basis der Angabe der Bewegung des physikalischen Objekts bewegt. Vorzugsweise wird ein Positionssteuerparadigma implementiert, so dass die Stelle des Cursors in der GUI ungefähr einer Stelle des physikalischen Objekts mit Bezug auf einen Ursprung entspricht; alternativ kann ein Ratensteuerparadigma verwendet werden. Der Cursor und die GUI werden auf einem Anzeigebildschirm angezeigt, der mit dem Computersystem verbunden ist, und die GUI ermöglicht dem Benutzer, mit Betriebssystemfunktionen, die vom Computersystem implementiert werden, über auf dem Bildschirm angezeigte graphische Objekte zu kommunizieren. Ein Signal wird aus dem Computersystem an die Schnittstellenvorrichtung ausgegeben, um der Schnittstellenvorrichtung zu befehlen, eine gewünschte Kraftempfindung auf das physikalische Objekt unter Verwendung von einem oder mehreren elektrisch gesteuerten Stellgliedern aufzubringen. Diese gewünschte Kraftempfindung ist mindestens einem der graphischen Objekte und Betriebssystemfunktionen der graphischen Benutzerschnittstelle zugeordnet.
  • Vorzugsweise ist die auf das physikalische Objekt aufgebrachte Kraftempfindung zumindest teilweise durch eine Stelle des Cursors in der GUI bezüglich Zielen bestimmt, die den graphischen Objekten in der GUI zugeordnet sind. Diese Ziele können solche graphischen Objekte wie Bildsymbole, Fenster, Balkenmenüs und Menüpunkte, Bildlaufleisten ("Schieberegler") und Schaltflächen umfassen oder diesen zugeordnet sein. Die an das physikalische Objekt ausgegebene Kraftempfindung ist Zielen zugeordnet, die den Cursor beeinflussen. Diese Kraft unterstützt vorzugsweise den Benutzer, um die gewünschte Betriebssystemfunktion auszuwählen, die der Kraft zugeordnet ist. Ein Ziel kann beispielsweise eine Anziehungskraft am physikalischen Objekt und Cursor vorsehen, so dass der Cursor leichter auf das Ziel bewegt wird. Außerdem kann die Kraft am physikalischen Objekt den Benutzer des graphischen Objekts informieren, dass sich der Cursor in dieses oder in dessen Nähe bewegt hat. Eine Betriebssystemfunktion kann durchgeführt werden, wie durch den Ort des Cursors angegeben und wie durch einen Befehl vom Benutzer wie z.B. einen physikalischen (oder simulierten) Tastendruck angegeben. Die Geschwindigkeit oder Beschleunigung des Cursors können auch die aufgebrachte Kraft beeinflussen.
  • Jedes der Ziele ist vorzugsweise mindestens zwei verschiedenen Zielkraftempfindungen zugeordnet, die das physikalische Objekt und den Cursor in Abhängigkeit von der Stelle des Cursors bezüglich jedes Ziels beeinflussen können. Die zwei verschiedenen Zielkraftempfindungen umfassen eine interne Zielkraftempfindung und eine externe Zielkraftempfindung. Die interne Zielkraft wird auf das physikalische Objekt aufgebracht, wenn sich der Cursor innerhalb des Ziels befindet oder sich in dieses oder aus diesem bewegt. Die externe Zielkraft wird auf das physikalische Objekt aufgebracht, wenn sich der Cursor außerhalb des Ziels befindet. Die Ziele sind auch vorzugsweise in einer Hierarchie geordnet und eine Ebene eines Ziels in der Hierarchie legt fest, ob das Ziel Kräfte am physikalischen Objekt liefert.
  • Die Größe, Richtung, Dauer und andere Parameter der internen und externen Kräfte eines Ziels können von der Art des Ziels abhängen. Die externe Kraftempfindung von Bildsymbolen ist beispielsweise eine Anziehungskraft zwischen dem Bildsymbol und dem Cursor, die auf das physikalische Objekt aufgebracht wird, wenn der Cursor innerhalb eines vorbestimmten Abstandes vom Bildsymbol liegt. Eine interne Einfangkraft eines Bildsymbols ist vorzugsweise eine Anziehungskraft, wenn der Cursor in das Bildsymbol bewegt wird, und eine Barrierenkraft, wenn der Cursor aus dem Bildsymbol bewegt wird. Eine interne Totbereichskraft ist vorzugsweise nahe dem mittleren Bereich des Bildsymbols Null, so dass der Cursor frei bewegt werden kann, wenn er sich innerhalb des Bildsymbols befindet. Anderen graphischen Objekten können Kräfte in gewünschten Reichweiten innerhalb und außerhalb der graphischen Objekte zugewiesen werden. Eine Dämpfungskraft kann als Totbereichskraft für andere graphische Objekte verwendet werden, um einen widerstand gegen die Bewegung des physikalischen Objekts bereitzustellen. Außerdem kann eine Trägheitskraft auf das physikalische Objekt aufgebracht werden, wenn ein Ziel durch den Cursor in der GUI bewegt wird. Das Ziel kann eine simulierte Masse aufweisen, die ermöglicht, dass eine Widerstandskraft auf der Basis der Masse, Geschwindigkeit oder anderer Faktoren auf das physikalische Objekt aufgebracht wird.
  • Ein erläuterndes System zur Verwendung der Erfindung, das eine Kraftrückkopplung zu einem Benutzer liefert, der eine Schnittstellenvorrichtung und das System bedient, umfasst ein Hauptrechnersystem. Der Hauptrechner empfängt ein Eingangssignal von der Schnittstellenvorrichtung, das den Ort, die Geschwindigkeit und/oder Beschleunigung des physikalischen Objekts in einem Freiheitsgrad beschreibt. Der Hauptrechner liefert ein Hauptrechner-Ausgangssignal und aktualisiert den Ort des Cursors innerhalb der GUI, der auf dem Anzeigebildschirm angezeigt wird, auf der Basis des Eingangssignals. Ein Mikroprozessor, der für die Schnittstellenvorrichtung lokal und vom Hauptrechner separat ist, empfängt das Hauptrechner-Ausgangssignal und liefert ein Prozessor-Ausgangssignal. Ein Stellglied empfängt das Prozessor-Ausgangssignal und liefert eine Kraft entlang eines Freiheitsgrades zum physikalischen Objekt gemäß dem Prozessorsignal. Ein Sensor erfasst die Bewegung des physikalischen Objekts entlang des Freiheitsgrades und gibt das Eingangssignal, einschließlich einer Information, die die Bewegung des physikalischen Objekts darstellt, aus. Vorzugsweise gibt der Sensor das Eingangssignal an den lokalen Mikroprozessor aus, der das Eingangssignal an den Hauptrechner ausgibt. Das physikalische Objekt kann vorzugsweise in einem oder mehreren Freiheitsgraden unter Verwendung von beispielsweise einem Kardan- oder Schlitzjochmechanismus bewegt werden, wobei ein Stellglied und ein Sensor für jeden Freiheitsgrad vorgesehen sein können. Eine serielle Standardschnittstelle, die in vielen Computern enthalten ist, wie z.B. der universelle serielle Bus, kann verwendet werden, um das Hauptrechnersystem mit dem lokalen Mikroprozessor zu koppeln. Vorzugsweise ist ein Taktgeber mit dem Hauptrechnersystem und/oder dem lokalen Prozessor gekoppelt, auf den für Zeitsteuerdaten zugegriffen werden kann, um zu helfen, die vom Stellglied ausgegebene Kraft zu ermitteln.
  • Der Hauptrechner kann die Sensorinformation in einer Überwachungsbetriebsart empfangen und einen Hauptrechnerbefehl hoher Ebene an den Mikroprozessor ausgeben, sobald eine vom Benutzer gespürte Kraftempfindung aktualisiert oder geändert werden soll. Gemäß dem Hauptrechnerbefehl liest der Mikroprozessor Sensor- und Zeitsteuerdaten und gibt Kraftwerte an das Stellglied gemäß einem Kraftempfindungsprozess aus, der ausgewählt wird. Der Kraftempfindungsprozess kann die Verwendung von Kraftgleichungen, das Lesen von Kraftprofilen mit vorbestimmten Kraftwerten aus einer Speichervorrichtung oder andere Schritte umfassen und kann von Sensordaten, Zeitsteuerdaten, Hauptrechnerbefehlsdaten oder anderen Daten abhängen. Alternativ kann der Hauptrechner die Stellglieder der Schnittstellenvorrichtung direkt steuern.
  • Bei einem weiteren Verfahren, das keinen Teil der beanspruchten Erfindung bildet, wird eine Kraftrückkopplung für graphische Objekte in einem auf einem Computersystem implementierten Spiel bereitgestellt, wobei ein vom Benutzer gesteuertes erstes graphisches Objekt oder ein "Schläger" auf einem Anzeigebildschirm des Computersystems angezeigt wird. Der Schläger bewegt sich während eines Spiels als Reaktion auf Bedienungen eines physikalischen Objekts einer Schnittstellenvorrichtung durch einen Benutzer auf dem Anzeigebildschirm. Ein zweites graphisches Objekt oder ein "Ball" wird auch auf dem Anzeigebildschirm angezeigt und bewegt. Wenn der Schläger mit dem Ball zusammenstößt, wird eine Kompression des Schlägers an der Stelle angezeigt, an der der Ball den Schläger berührt. Der Schläger und der Ball weisen jeweils eine vorbestimmte simulierte Masse und/oder simulierte Nachgiebigkeit auf. Ein Kraftbefehl wird auch an die Schnittstellenvorrichtung ausgegeben, um eine Kraft auf das physikalische Objekt in mindestens einem Freiheitsgrad aufzubringen. Die Kraft wird in der Richtung der Kompression aufgebracht und besitzt einen Betrag gemäß den simulierten Massen, Nachgiebigkeiten und Geschwindigkeiten der graphischen Objekte. Außerdem können Faktoren wie z.B. die Schwerkraft die Bewegung der graphischen Objekte auf dem Bildschirm und die auf das physikalische Objekt aufgebrachten Kräfte beeinflussen.
  • Das Verfahren und die Vorrichtung der vorliegenden Erfindung liefern vorteilhafterweise eine Kraftrückkopplung zu einem Benutzer in Verbindung mit der Bewegung eines Cursors in einer GUI. Dies ermöglicht, dass die Bewegung des Cursors durch Kräfte beeinflusst wird, die auf das vom Benutzer bediente physikalische Objekt ausgegeben werden. Folglich können die Kräfte beim Bedienen von Betriebssystemfunktionen der GUI und/oder Informieren des Benutzers über die räumliche "Landschaft" von graphischen Objekten der GUI unterstützen, was eine effizientere GUI bereitstellt. Körperbehinderte Benutzer haben auch eine weitaus geringere Unannehmlichkeit zum Bewegen eines Cursors zu verschiedenen graphischen Objekten und Bereichen einer GUI, wenn die Kräfte der vorliegenden Erfindung bereitgestellt werden. Außerdem kann ein separater Mikroprozessor, der zur Schnittstellenvorrichtung lokal ist, Sensorsignale lesen und verarbeiten sowie Kraftbefehlssignale unabhängig vom Hauptrechner ausgeben, wobei somit signifikante Verarbeitungszeit am Hauptrechner gespart wird und eine genauere Kraftrückkopplung bereitgestellt wird, wenn eine serielle oder andere Kommunikationsschnittstelle mit relativ niedriger Bandbreite zwischen dem Hauptrechner und der Schnittstellenvorrichtung verwendet wird.
  • Diese und weitere Vorteile der vorliegenden Erfindung werden für Fachleute beim Lesen der folgenden Patentbeschreibung der Erfindung und einer Studie der verschiedenen Figuren der Zeichnung ersichtlich.
  • Kurzbeschreibung der Zeichnungen
  • 1 ist ein Blockdiagramm eines Steuersystems gemäß der vorliegenden Erfindung zum Steuern einer Kraftrückkopplungs-Schnittstellenvorrichtung von einem Hauptrechner aus;
  • 2 ist ein schematisches Diagramm einer Stellgliedschnittstelle zum Liefern von Steuersignalen zu einem aktiven Stellglied für die vorliegende Erfindung;
  • 3 ist ein schematisches Diagramm einer Stellgliedschnittstelle zum Liefern von Steuersignalen zu einem passiven Stellglied für die vorliegende Erfindung;
  • 4 ist ein Ablaufdiagramm, das ein erstes Ausführungsbeispiel eines Verfahrens der vorliegenden Erfindung zum Steuern einer Kraftrückkopplungs-Schnittstellenvorrichtung darstellt;
  • 5 ist ein Ablaufdiagramm, das ein zweites Ausführungsbeispiel eines Verfahrens der vorliegenden Erfindung zum Steuern einer Kraftrückkopplungs-Schnittstellenvorrichtung darstellt;
  • 6 ist ein schematisches Diagramm eines Gestängemechanismus mit fünf Stangen in geschlossener Schleife zum Vorsehen von zwei Freiheitsgraden für das Benutzerobjekt der Schnittstellenvorrichtung;
  • 7 ist eine perspektivische Ansicht eines bevorzugten Ausführungsbeispiels des in 6 gezeigten Gestängemechanismus;
  • 8 ist eine perspektivische Ansicht eines Ausführungsbeispiels eines Steuerhebels mit geschlitztem Joch einer mechanischen Schnittstelle für das Benutzerobjekt;
  • 9 ist eine Tabelle, die Ratensteuerbefehle der vorliegenden Erfindung zusammenfasst;
  • 10a–c sind schematische Darstellungen von Rückstellkraftprofilen;
  • 11a–c sind schematische Darstellungen von Rückstellfederkraftprofilen;
  • 12 ist eine schematische Darstellung einer Vektorkraft;
  • 13a–b sind schematische Darstellungen von Schwingungskraftprofilen;
  • 14 ist eine Tabelle, die Positionssteuerbefehle der vorliegenden Erfindung zusammenfasst;
  • 15 ist eine schematische Darstellung eines Nutkraftprofils;
  • 16 ist eine schematische Darstellung eines Barrierenkraftprofils;
  • 17a17i sind schematische Darstellungen einer Wechselwirkung zwischen Schläger und Ball, die durch einen Schlägerbefehl der vorliegenden Erfindung gesteuert wird;
  • 17j–k sind schematische Darstellungen von Ausführungsbeispielen mit Schläger und Ball, die auf einem Anzeigebildschirm angezeigt werden;
  • 18 ist eine schematische Darstellung eines Anzeigebildschirms, der eine graphische Benutzerschnittstelle (GUI) und die Wechselwirkung von Kräften der vorliegenden Erfindung mit einem vom Benutzer gesteuerten Cursor zeigt;
  • 19 ist eine schematische Darstellung eines Anzeigebildschirms, der die GUI von 18 mit drei Fenstern mit Kräften, die sich auf den vom Benutzer gesteuerten Cursor auswirken, zeigt;
  • 20a ist eine schematische Darstellung eines Anzeigebildschirms, der Ziele einer GUI und externe Kräfte, die von diesen Zielen geliefert werden, zeigt;
  • 20b ist eine schematische Darstellung eines Ziels und der internen Kräfte, die von diesem Ziel bereitgestellt werden;
  • 20c ist eine schematische Darstellung eines weiteren Ausführungsbeispiels eines Ziels und von externen Kräften für dieses Ziel;
  • 21 ist eine schematische Darstellung eines Anzeigebildschirms, der die GUI von 18 mit einem Balkenmenü und zugehörigen Kräften der vorliegenden Erfindung zeigt;
  • 22 ist eine schematische Darstellung eines Anzeigebildschirms, der die GUI von 18 mit einem Pop-Up-Fenster mit Schaltflächen und zugehörigen Kräften der vorliegenden Erfindung zeigt;
  • 23 ist ein Ablaufdiagramm, das ein Verfahren der vorliegenden Erfindung zum Liefern einer Kraftrückkopplung innerhalb einer GUI darstellt;
  • 24 ist ein Ablaufdiagramm, das einen Schritt von 23 zum Zuweisen von Kraftreichweiten und -beträgen zu graphischen Objekten innerhalb einer GUI darstellt;
  • 25 ist ein Ablaufdiagramm, das einen Schritt von 23 zum Bestimmen des Ziels mit niedrigster Hierarchie, in dem der Cursor angeordnet ist, darstellt;
  • 26 ist ein Ablaufdiagramm, das einen Schritt von 23 zum Aufbringen von geeigneten Kräften auf das Benutzerobjekt auf der Basis von Zielen in der GUI darstellt; und
  • 27 ist ein Ablaufdiagramm, das ein Verfahren zum Aufbringen von externen und internen Kräften für ein Ziel auf der Basis der Position des Cursors darstellt.
  • Beste Arten zur Ausführung der Erfindung
  • 1 ist ein Blockdiagramm, das ein allgemeines Steuersystem 10 der vorliegenden Erfindung für eine von einem Hauptrechnersystem gesteuerte Schnittstellenvorrichtung darstellt. Das Steuersystem 10 umfasst ein Hauptrechnersystem 12 und eine Schnittstellenvorrichtung 14.
  • Das Hauptrechnersystem 12 ist vorzugsweise ein Personalcomputer, wie z.B. ein IBM-kompatibler oder Macintosh-Personalcomputer, oder ein Arbeitsplatzrechner, wie z.B. ein SUN oder Silicon Graphics Arbeitsplatzrechner. Das Hauptrechnersystem kann beispielsweise ein Personalcomputer sein, der unter den MS-DOS- oder Windows-Betriebssystemen entsprechend einem IBM PC AT Standard arbeitet. Alternativ kann das Hauptrechnersystem 12 eines von einer Vielfalt von Heimvideospielsystemen sein, die gewöhnlich mit einem Fernsehgerät verbunden werden, wie z.B. Systeme, die von Nintendo, Sega oder Sony erhältlich sind. Bei anderen Ausführungsbeispielen kann das Heimcomputersystem 12 ein "TV-Decodierer" sein, der beispielsweise verwendet werden kann, um für Benutzer interaktive Fernsehfunktionen bereitzustellen.
  • Bei dem beschriebenen Ausführungsbeispiel implementiert das Hauptrechnersystem 12 ein Hauptrechner-Anwendungsprogramm, mit dem ein Benutzer 22 über Peripheriegeräte und die Schnittstellenvorrichtung 14 in Wechselwirkung steht. Das Hauptrechner-Anwendungsprogramm kann beispielsweise ein Videospiel, eine graphische Benutzerschnittstelle (GUI), ein Betriebssystem, eine medizinische Simulation, ein wissenschaftliches Analyseprogramm oder sogar ein Betriebssystem oder ein anderes Anwendungsprogramm sein, das eine Kraftrückkopplung verwendet. Typischerweise liefert die Hauptrechneranwendung auf einer Anzeigeausgabevorrichtung anzuzeigende Bilder, wie nachstehend beschrieben, und/oder eine andere Rückkopplung, wie z.B. akustische Signale.
  • Das Hauptrechnersystem 12 umfasst vorzugsweise einen Hauptrechner-Mikroprozessor 16, einen Direktzugriffsspeicher (RAM) 17, einen Festwertspeicher (ROM) 19, eine Eingabe/Ausgabe- (E/A)-Elektronik 21, einen Taktgeber 18, einen Anzeigebildschirm 20 und eine Audioausgabevorrichtung 21. Der Hauptrechner-Mikroprozessor 16 kann eine Vielfalt von erhältlichen Mikroprozessoren von Intel, Motorola oder anderen Herstellern umfassen. Der Mikroprozessor 16 kann ein einzelner Mikroprozessorchip sein oder kann mehrere Primär- und/oder Coprozessoren umfassen. Der Mikroprozessor ruft vorzugsweise Befehle und andere notwendige Daten aus dem RAM 17 und ROM 19 ab und speichert diese darin, wie es Fachleuten gut bekannt ist. Bei dem beschriebenen Ausführungsbeispiel kann das Hauptrechnersystem 12 Sensordaten oder ein Sensorsignal über einen Bus 24 von den Sensoren der Schnittstellenvorrichtung 14 und andere Informationen empfangen. Der Mikroprozessor 16 kann Daten vom Bus 24 unter Verwendung der E/A-Elektronik 21 empfangen und kann die E/A-Elektronik zur Steuerung von anderen Peripheriegeräten verwenden. Das Hauptrechnersystem 12 kann über den Bus 24 auch einen "Kraftbefehl" zur Schnittstellenvorrichtung 14 ausgeben, um eine Kraftrückkopplung für die Schnittstellenvorrichtung zu veranlassen. Der Taktgeber 18 ist ein Standard-Taktquarz oder eine äquivalente Komponente, die vom Hauptrechnersystem 12 verwendet wird, um eine Zeitsteuerung für elektrische Signale, die vom Mikroprozessor 16 und anderen Komponenten des Computersystems verwendet werden, zu liefern. Auf den Taktgeber 18 wird vom Hauptrechnersystem 12 in dem anschließend beschriebenen Steuerprozess zugegriffen.
  • Der Anzeigebildschirm 20 ist mit dem Hauptrechner-Mikroprozessor 16 durch geeignete Anzeigetreiber gekoppelt und kann verwendet werden, um Bilder anzuzeigen, die vom Hauptrechnersystem 12 oder anderen Computersystemen erzeugt werden. Der Anzeigebildschirm 20 kann ein Standard-Anzeigebildschirm oder eine CRT, eine 3-D-Brille oder irgendeine andere visuelle Schnittstelle sein. Bei einem beschriebenen Ausführungsbeispiel zeigt der Anzeigebildschirm 20 Bilder einer GUI, eines Anwendungsprogramms, einer Simulation oder einer Spielumgebung an. Bei anderen Ausführungsbeispielen können andere Bilder angezeigt werden. Ein Benutzer 22 des Hauptrechners 12 und der Schnittstellenvorrichtung 14 kann durch Betrachten des Anzeigebildschirms 20 eine visuelle Rückkopplung empfangen.
  • Hierin kann der Computer 12 als Computer- oder graphische "Objekte" oder -"Entitäten" anzeigend bezeichnet werden. Diese Computerobjekte sind keine physikalischen Objekte, sondern sind logische Softwareeinheitssammlungen von Daten und/oder Prozeduren, die vom Computer 12 auf dem Anzeigebildschirm 20 als Bilder angezeigt werden können, wie es Fachleuten gut bekannt ist. Beispielsweise könnte ein Cursor oder ein Blick einer dritten Person auf ein Auto als vom Spieler gesteuerte Computerobjekte betrachtet werden, die über den Bildschirm bewegt werden können. Ein angezeigtes, simuliertes Cockpit eines Flugzeugs könnte ebenfalls als "Objekt" betrachtet werden, oder das simulierte Flugzeug kann als computergesteuerte "Entität" betrachtet werden.
  • Die Audioausgabevorrichtung 21, wie z.B. Lautsprecher, ist vorzugsweise mit dem Hauptrechner-Mikroprozessor 16 über Verstärker, Filter und eine andere Schaltungsanordnung, die Fachleuten gut bekannt sind, gekoppelt. Der Hauptrechner-Prozessor 16 gibt an die Lautsprecher 21 Signale aus, um eine Tonausgabe an den Benutzer 22 zu liefern, wenn während der Implementierung des Hauptrechner-Anwendungsprogramms ein "Audioereignis" auftritt. Andere Arten von Peripheriegeräten können auch mit dem Hauptrechner-Prozessor 16 gekoppelt sein, wie z.B. Speichervorrichtungen (Festplattenlaufwerk, CD-ROM-Laufwerk, Diskettenlaufwerk usw.), Drucker und andere Eingabe- und Ausgabevorrichtungen.
  • Eine Schnittstellenvorrichtung 14 ist mit dem Hauptrechnersystem 12 durch einen bidirektionalen Bus 24 gekoppelt. Der bidirektionale Bus sendet Signale in beiden Richtungen zwischen dem Hauptrechnersystem 12 und der Schnittstellenvorrichtung. Hierin soll sich der Begriff "Bus" allgemein auf eine Schnittstelle, wie z.B. zwischen dem Hauptrechner 12 und dem Mikroprozessor 26, beziehen, die typischerweise ein oder mehrere Verbindungsdrähte oder andere Verbindungen aufweist und auf eine Vielzahl von Weisen implementiert werden kann, wie nachstehend beschrieben. Beim bevorzugten Ausführungsbeispiel ist der Bus 24 ein serieller Schnittstellenbus, der gemäß einem seriellen Kommunikationsprotokoll Daten liefert. Ein Schnittstellenanschluss des Hauptrechnersystems 12, wie z.B. ein serieller RS232-Schnittstellenanschluss, verbindet den Bus 24 mit dem Hauptrechnersystem 12. Andere serielle Standard-Kommunikationsprotokolle können ebenfalls bei der seriellen Schnittstelle und dem Bus 24 verwendet werden, wie z.B. RS-422, ein universeller serieller Bus (USB), MIDI oder andere Protokolle, die Fachleuten gut bekannt sind. Der USB-Standard stellt beispielsweise eine serielle Schnittstelle mit relativ hoher Geschwindigkeit bereit, die bei der vorliegenden Erfindung Kraftrückkopplungssignale mit einem hohen Grad an Realismus liefern kann. Der USB kann auch mehr Leistung zum Ansteuern der Peripheriegeräte liefern. Da jeder Vorrichtung, die auf den USB zugreift, vom Hauptrechner eine eindeutige USB-Adresse zugewiesen ist, ermöglicht dies, dass sich mehrere Vorrichtungen denselben Bus teilen. Außerdem umfasst der USB-Standard Zeitsteuerdaten, die zusammen mit differentiellen Daten codiert werden.
  • Ein Vorteil der vorliegenden Erfindung besteht darin, dass serielle Kommunikationssignale mit niedriger Bandbreite verwendet werden können, um mit der Schnittstellenvorrichtung 14 zu kommunizieren, was folglich ermöglicht, dass eine eingebaute serielle Standardschnittstelle von vielen Computern direkt verwendet wird. Alternativ kann ein paralleler Anschluss des Hauptrechnersystems 12 mit einem parallelen Bus 24 gekoppelt sein und mit der Schnittstellenvorrichtung unter Verwendung eines parallelen Protokolls, wie z.B. SCSI oder eines PC-Paralleldruckerbusses, kommunizieren. Bei einem anderen Ausführungsbeispiel kann der Bus 24 direkt mit einem Datenbus des Hauptrechnersystems 12 unter Verwendung von beispielsweise einer Steckkarte und einem Steckplatz oder einem anderen Zugang des Computersystems 12 verbunden werden. Auf einem IBM AT-kompatiblen Computer kann die Schnittstellenkarte beispielsweise als lokaler ISA-, EISA-, VESA-Bus, PCI oder eine andere gut bekannte Standard-Schnittstellenkarte implementiert werden, die sich in die Grundplatine des Computers einstecken lässt und Eingangs- und Ausgangsanschlüsse vorsieht, die mit dem Hauptdatenbus des Computers verbunden sind.
  • Bei einem anderen Ausführungsbeispiel kann ein zusätzlicher Bus 25 eingeschlossen sein, um zwischen dem Hauptrechnersystem 12 und der Schnittstellenvorrichtung 14 zu kommunizieren. Der Bus 24 kann mit dem seriellen Standardanschluss des Hauptrechners 12 gekoppelt sein, während der zusätzliche Bus 25 mit einem zweiten Anschluss des Hauptrechnersystems gekoppelt sein kann. Beispielsweise umfassen viele Computersysteme zusätzlich zu einem seriellen RS-232-Anschluss einen "Spielanschluss", um einen Steuerhebel oder eine ähnliche Spielsteuereinheit mit dem Computer zu verbinden. Die zwei Busse 24 und 25 können simultan verwendet werden, um eine erhöhte Datenbandbreite bereitzustellen. Der Mikroprozessor 26 kann beispielsweise über einen unidirektionalen Bus 25 und einen Spielanschluss Sensorsignale zum Hauptrechner 12 senden, während der Hauptrechner 12 über einen unidirektionalen Bus 24 Kraftrückkopplungssignale von einem seriellen Anschluss zum Mikroprozessor 26 ausgeben kann. Andere Kombinationen von Datenflusskonfigurationen können bei anderen Ausführungsbeispielen implementiert werden.
  • Die Schnittstellenvorrichtung 14 umfasst einen lokalen Mikroprozessor 26, Sensoren 28, Stellglieder 30, ein Benutzerobjekt 34, eine wahlweise Sensorschnittstelle 36, eine wahlweise Stellgliedschnittstelle 38 und weitere wahlweise Eingabevorrichtungen 39. Die Schnittstellenvorrichtung 14 kann auch zusätzliche elektronische Komponenten zum Kommunizieren über Standardprotokolle auf dem Bus 24 umfassen. Beim bevorzugten Ausführungsbeispiel können mehrere Schnittstellenvorrichtungen 14 mit einem einzelnen Hauptrechnersystem 12 über den Bus 24 (oder mehrere Busse 24) gekoppelt sein, so dass mehrere Benutzer simultan mit dem Hauptrechner-Anwendungsprogramm (beispielsweise in einem Spiel oder einer Simulation für mehrere Spieler) kommunizieren können. Außerdem können mehrere Spieler im Hauptrechner-Anwendungsprogramm mit mehreren Schnittstellenvorrichtungen 14 unter Verwendung von vernetzten Hauptrechnern 12 in Wechselwirkung treten, wie es Fachleuten gut bekannt ist.
  • Der lokale Mikroprozessor 26 ist mit dem Bus 24 gekoppelt und ist vorzugsweise innerhalb des Gehäuses der Schnittstellenvorrichtung 14 enthalten, um eine schnelle Kommunikation mit anderen Komponenten der Schnittstellenvorrichtung zu ermöglichen. Der Prozessor 26 wird als zur Schnittstellenvorrichtung 14"lokal" betrachtet, wobei sich "lokal"- hierin darauf bezieht, dass der Prozessor 26 ein von irgendwelchen Prozessoren im Hauptrechnersystem 12 separater Mikroprozessor ist. "Lokal" bezieht sich vorzugsweise auch auf einen Prozessor 26, der für die Kraftrückkopplung und Sensor-E/A der Schnittstellenvorrichtung 14 reserviert ist und mit den Sensoren 28 und den Stellgliedern 30 eng gekoppelt ist, wie z.B. innerhalb des Gehäuses für die Schnittstellenvorrichtung oder in einem Gehäuse, das eng mit der Schnittstellenvorrichtung 14 gekoppelt ist. Der Mikroprozessor 26 kann mit Softwarebefehlen versehen werden, um auf Befehle oder Anforderungen vom Hauptrechner 16 zu warten, den Befehl oder die Anforderung zu decodieren und Eingangs- und Ausgangssignale gemäß dem Befehl oder der Anforderung zu verarbeiten/steuern. Außerdem arbeitet der Prozessor 26 vorzugsweise unabhängig vom Hauptrechner 16 durch Lesen von Sensorsignalen und Berechnen von geeigneten Kräften aus diesen Sensorsignalen, Zeitsignalen und einem Kraftempfindungsprozess (auch hierin als "Subroutine" bezeichnet), der gemäß einem Hauptrechnerbefehl ausgewählt wird. Geeignete Mikroprozessoren zur Verwendung als lokaler Mikroprozessor 26 umfassen beispielsweise den MC68HC711E9 von Motorola und den PIC16C74 von Microchip. Der Mikroprozessor 26 kann einen Mikroprozessorchip oder mehrere Prozessoren und/oder Coprozessorchips umfassen. Bei anderen Ausführungsbeispielen kann der Mikroprozessor 26 einen Digitalsignalprozessor (DSP)-Chip enthalten. Der Mikroprozessor 26 kann Signale von den Sensoren 28 empfangen und Signale zu den Stellgliedern 30 der Schnittstellenvorrichtung 14 gemäß den vom Hauptrechner 12 über den Bus 24 gelieferten Befehlen liefern. Der Mikroprozessor 26 kann auch Befehle von irgendwelchen anderen Eingabevorrichtungen empfangen, die an der Schnittstellenvorrichtung 14 vorgesehen sind, und liefert entsprechende Signale zum Hauptrechner 12, um anzuzeigen, dass die Eingangsinformation und eine beliebige Information, die in der Eingangsinformation enthalten ist, empfangen wurde. Tasten, Schalter, Wählscheiben oder andere Eingabebedienelemente an der Schnittstellenvorrichtung 14 oder am Benutzerobjekt 34 können beispielsweise Signale zum Mikroprozessor 26 liefern.
  • Ein lokaler Speicher 27, wie z.B. ein RAM und/oder ROM, ist vorzugsweise mit dem Mikroprozessor 26 in der Schnittstellenvorrichtung 14 gekoppelt, um Befehle für den Mikroprozessor 26 zu speichern und temporäre und andere Daten wie z.B. Kalibrierungsparameter zu speichern. Ein lokaler Taktgeber 29 kann mit dem Mikroprozessor 26 gekoppelt sein, um Zeitsteuerdaten zu liefern, ähnlich dem Systemtakt 18 des Hauptrechners 12; die Zeitsteuerdaten könnten beispielsweise erforderlich sein, um von den Stellgliedern 30 ausgegebene Kräfte zu berechnen. Bei alternativen Ausführungsbeispielen unter Verwendung der USB-Kommunikationsschnittstelle können Zeitsteuerdaten für den Mikroprozessor 26 von einem USB-Signal abgerufen werden.
  • Bei einem Ausführungsbeispiel kann der Hauptrechner 12 Kraftbefehle niedriger Ebene über den Bus 24 liefern, die der Mikroprozessor 26 direkt zu den Stellgliedern 30 liefert. Dieses Ausführungsbeispiel wird mit Bezug auf 4 genauer beschrieben. Bei einem anderen Ausführungsbeispiel kann das Hauptrechnersystem 12 Überwachungsbefehle hoher Ebene zum Mikroprozessor 26 über den Bus 24 liefern und der Mikroprozessor 26 verwaltet lokale Kraftregelschleifen niedriger Ebene für die Sensoren 28 und Stellglieder 30 gemäß den Befehlen hoher Ebene. Dieses Ausführungsbeispiel wird mit Bezug auf 5 genauer beschrieben.
  • Beim bevorzugten Ausführungsbeispiel sind die Sensoren 28, die Stellglieder 30 und der Mikroprozessor 26 und andere zugehörige elektronische Komponenten in einem Gehäuse für die Schnittstellenvorrichtung 14 enthalten, mit dem das Benutzerobjekt 34 direkt oder indirekt gekoppelt ist. Alternativ kann der Mikroprozessor 26 und/oder andere elektronische Komponenten der Schnittstellenvorrichtung 14 in einem vom Benutzerobjekt 34, den Sensoren 28 und den Stellgliedern 30 separaten Gehäuse vorgesehen sein. Zusätzliche mechanische Strukturen können ebenfalls in der Schnittstellenvorrichtung 14 enthalten sein, um das Objekt 34 mit den gewünschten Freiheitsgraden zu versehen. Einige Ausführungsbeispiele solcher Mechanismen werden mit Bezug auf die 68 beschrieben.
  • Die Sensoren 28 stellen die Position, Bewegung und/oder andere Eigenschaften eines Benutzerobjekts 34 der Schnittstellenvorrichtung 14 entlang von einem oder mehreren Freiheitsgraden fest und liefern Signale zum Mikroprozessor 26, einschließlich Informationen, die diese Eigenschaften darstellen. Beispiele von Ausführungsbeispielen von Benutzerobjekten und einer Bewegung innerhalb vorgesehener Freiheitsgrade werden anschließend mit Bezug auf die 68 beschrieben. Typischerweise ist ein Sensor 28 für jeden Freiheitsgrad, entlang dessen das Objekt 34 bewegt werden kann, vorgesehen oder ein einzelner Verbundsensor kann verwendet werden, um eine Bewegung in mehreren Freiheitsgraden festzustellen. Ein Beispiel von Sensoren, die für verschiedene hierin beschriebene Ausführungsbeispiele geeignet sind, sind digitale optische Codierer, die die Positionsänderung eines Objekts um eine Drehachse erfassen und digitale Signale liefern, die die Positionsänderung anzeigen. Lineare optische Codierer erfassen ebenso die Positionsänderung des Objekts 34 entlang eines linearen Freiheitsgrades. Es können entweder relative oder absolute Sensoren verwendet werden. Ein geeigneter optischer Codierer ist der "Softpot" von U.S. Digital in Vancouver, Washington.
  • Die Sensoren 28 liefern ein elektrisches Signal zu einer wahlweisen Sensorschnittstelle 36, die verwendet werden kann, um Sensorsignale in Signale umzuwandeln, die vom Mikroprozessor 26 und/oder vom Hauptrechnersystem 12 interpretiert werden können. Die Sensorschnittstelle 36 empfängt beispielsweise die zwei in Phasenbeziehung stehenden Signale von einem Sensor 28 und wandelt die zwei Signale in ein anderes Paar von Taktsignalen um, die einen bidirektionalen Binärzähler ansteuern. Das Ausgangssignal des Binärzählers wird vom Mikroprozessor 26 als Binärzahl empfangen, welche die Winkelposition der codierten Welle darstellt. Solche Schaltungen oder äquivalente Schaltungen sind Fachleuten gut bekannt; beispielsweise erfüllt der Quadrature Chip LS7166 von Hewlett Packard, Kalifornien, die vorstehend beschriebenen Funktionen. Jeder Sensor 28 kann mit seiner eigenen Sensorschnittstelle versehen sein, oder eine Sensorschnittstelle kann Daten von mehreren Sensoren verarbeiten. Eine Sensorschnittstelle kann beispielsweise einen separaten Verarbeitungschip umfassen, der für jeden Sensor, der Eingangsdaten liefert, reserviert ist. Alternativ kann der Mikroprozessor 26 diese Schnittstellenfunktionen ohne den Bedarf für eine separate Sensorschnittstelle 36 erfüllen. Die Positionswertsignale können vom Mikroprozessor 26 verwendet werden und werden auch zum Hauptrechnersystem 12 gesandt, welches das Hauptrechner-Anwendungsprogramm aktualisiert und Kraftsteuersignale ausgibt. Bei alternativen Ausführungsbeispielen können Sensorsignale von den Sensoren 28 direkt zum Hauptrechnersystem 12 geliefert werden, wobei der Mikroprozessor 26 umgangen wird. Die Sensorschnittstelle 36 kann auch innerhalb des Hauptrechnersystems 12 enthalten sein, wie z.B. auf einer Schnittstellenplatine oder -karte.
  • Alternativ kann ein analoger Sensor anstelle des digitalen Sensors für alle oder einige der Sensoren 28 verwendet werden. Ein Dehnungsmesser kann beispielsweise angeschlossen sein, um Kräfte am Objekt 34 anstelle von Positionen des Objekts zu messen. Auch Geschwindigkeitssensoren und/oder Beschleunigungsmesser können verwendet werden, um Geschwindigkeiten und Beschleunigungen am Objekt 34 direkt zu messen. Analoge Sensoren können ein analoges Signal liefern, das die Position/Geschwindigkeit/Beschleunigung des Benutzerobjekts in einem speziellen Freiheitsgrad darstellt. Ein Analog-Digital-Umsetzer (ADU) kann das analoge Signal in ein digitales Signal umwandeln, das vom Mikroprozessor 26 und/oder Hauptrechnersystem 12 empfangen und interpretiert wird, wie Fachleuten gut bekannt ist. Die Auflösung der erfassten Bewegung des Objekts 34 wäre durch die Auflösung des ADU begrenzt. Rauschen kann jedoch manchmal kleine Bewegungen des Objekts 34 von einem analogen Sensor verdecken, was potentiell das Spiel verdecken kann, das für einige Ausführungsbeispiele der vorliegenden Erfindung (anschließend beschrieben) wichtig ist. Andere Arten einer Schnittstellenschaltung 36 können auch verwendet werden. Die Sensorschnittstelle 36 kann beispielsweise Winkelfeststellungschips umfassen, um Winkelsignalablesungen von den Sensoren 28 zu verarbeiten, bevor sie zum Mikroprozessor 26 gesandt werden. Ein Datenbus plus Chipfreigabeleitungen ermöglichen beispielsweise, dass irgendwelche der Winkelfeststellungschips mit dem Mikroprozessor kommunizieren.
  • Die Stellglieder 30 übertragen Kräfte auf das Benutzerobjekt 34 der Schnittstellenvorrichtung 14 in einer oder mehreren Richtungen entlang von einem oder mehreren Freiheitsgraden als Reaktion auf vom Mikroprozessor 26 empfangene Signale. Typischerweise ist ein Stellglied 30 für jeden Freiheitsgrad vorgesehen, entlang dessen es erwünscht ist, Kräfte zu übertragen. Die Stellglieder 30 können zwei Arten umfassen: aktive Stellglieder und passive Stellglieder. Aktive Stellglieder umfassen lineare Stromsteuermotoren, Schrittmotoren, pneumatische/hydraulische aktive Stellglieder, einen Drehmomentmotor (Motor mit begrenztem Winkelbereich), ein Schwingspulenstellglied und andere Arten von Stellgliedern, die eine Kraft zum Bewegen eines Objekts übertragen. Aktive Stellglieder können beispielsweise eine Drehwelle um eine Achse in einem Drehfreiheitsgrad antreiben oder eine lineare Welle entlang eines linearen Freiheitsgrades antreiben. Passive Stellglieder können auch für die Stellglieder 30 verwendet werden. Magnetteilchenbremsen, Reibungsbremsen oder pneumatische/hydraulische passive Stellglieder können zusätzlich zu oder anstelle von einem Motor verwendet werden, um einen Dämpfungswiderstand oder eine Reibung in einem Bewegungsgrad zu erzeugen. Eine geeignete Magnetteilchenbremse für die Schnittstellenvorrichtung 14 ist von Force Limited, Inc., in Santa Monica, Kalifornien, erhältlich.
  • Bei alternativen Ausführungsbeispielen können alle oder einige der Sensoren 28 und Stellglieder 30 zusammen als Sensor/Stellglied-Paar-Wandler enthalten sein. Ein geeigneter Wandler für die vorliegende Erfindung mit sowohl einem optischen Codierer als auch einem stromgesteuerten Motor ist ein Servomotor mit Korbwicklung mit 20 W, der von Maxon hergestellt wird.
  • Die Stellgliedschnittstelle 38 kann wahlweise zwischen den Stellgliedern 30 und dem Mikroprozessor 26 angeschlossen sein. Die Schnittstelle 38 wandelt Signale vom Mikroprozessor 26 in Signale um, die zum Antreiben der Stellglieder 30 geeignet sind. Die Schnittstelle 38 kann Leistungsverstärker, Schalter, Digital-Analog-Steuereinheiten (DAUs) und andere Komponenten umfassen. Ein Beispiel einer Stellgliedschnittstelle für aktive Stellglieder wird mit Bezug auf 2 beschrieben. Ein Beispiel einer Stellgliedschnittstelle für passive Stellglieder wird mit Bezug auf 3 beschrieben. Bei alternativen Ausführungsbeispielen kann die Schaltung der Schnittstelle 38 innerhalb des Mikroprozessors 26 oder in den Stellgliedern 30 vorgesehen sein.
  • Andere Eingabevorrichtungen 39 können wahlweise in der Schnittstellenvorrichtung 14 enthalten sein und Eingangssignale zum Mikroprozessor 26 senden. Solche Eingabevorrichtungen können Tasten, Wählscheiben, Schalter oder andere Mechanismen umfassen. Bei Ausführungsbeispielen, bei denen das Benutzerobjekt 34 ein Steuerhebel ist, können andere Eingabevorrichtungen beispielsweise eine oder mehrere Tasten umfassen, die beispielsweise am Steuerhebelgriff oder -sockel vorgesehen sind und verwendet werden, um die Eingabe vom Benutzer in ein Spiel oder eine Simulation zu ergänzen. Die Funktionsweise solcher Eingabevorrichtungen ist Fachleuten gut bekannt.
  • Eine Leistungs- bzw. Stromversorgung 40 kann wahlweise mit der Stellgliedschnittstelle 38 und/oder den Stellgliedern 30 gekoppelt sein, um elektrische Leistung zu liefern.
  • Aktive Stellglieder benötigen zum Antrieb typischerweise eine separate Leistungsquelle. Die Leistungsversorgung 40 kann innerhalb des Gehäuses der Schnittstellenvorrichtung 14 enthalten sein oder kann als separate Komponente, beispielsweise durch ein elektrisches Stromkabel angeschlossen, vorgesehen sein. Wenn der USB oder ein ähnliches Kommunikationsprotokoll verwendet wird, kann die Schnittstellenvorrichtung 14 alternativ vom USB Leistung entnehmen und somit keinen Bedarf für eine Leistungsversorgung 40 haben. Dieses Ausführungsbeispiel ist am besten auf eine Vorrichtung 14 mit passiven Stellgliedern 30 anwendbar, da passive Stellglieder wenig Leistung zum Betrieb benötigen. Aktive Stellglieder benötigen gewöhnlich mehr Leistung als vom USB entnommen werden kann, aber diese Einschränkung kann auf mehrere Arten beseitigt werden. Eine Art und Weise besteht darin, die Schnittstelle 14 so zu konfigurieren, dass sie mehr als ein Peripheriegerät für den Hauptrechner 12 erscheint; beispielsweise kann jeder vorgesehene Freiheitsgrad des Benutzerobjekts 34 als anderes Peripheriegerät konfiguriert werden und seine eigene Leistungszuordnung erhalten. Dies würde ermöglichen, dass der Hauptrechner 12 der Schnittstellenvorrichtung 14 mehr Leistung zuordnet. Alternativ kann die Leistung vom USB durch die Schnittstellenvorrichtung 14 gespeichert und geregelt werden und somit verwendet werden, wenn sie benötigt wird, um die Stellglieder 30 anzutreiben. Beispielsweise kann die Leistung über die Zeit gespeichert werden und dann unmittelbar verbraucht werden, um eine Ruckkraft auf das Benutzerobjekt 34 aufzubringen. Eine Kondensatorschaltung kann beispielsweise die Energie speichern und die Energie abgeben, wenn genügend Leistung gespeichert wurde. Der Mikroprozessor kann die Ausgabe von Kräften regulieren müssen, um zu gewährleisten, dass Zeit für die Leistungsspeicherung zur Verfügung gestellt wird. Dieses Ausführungsbeispiel mit Leistungsspeicherung kann auch in Nicht-USB-Ausführungsbeispielen der Schnittstellenvorrichtung 14 verwendet werden, um zu ermöglichen, dass eine kleinere Leistungsversorgung 40 verwendet wird.
  • Ein Schutzschalter 41 ist aus Sicherheitsgründen vorzugsweise in der Schnittstellenvorrichtung enthalten, um einen Mechanismus vorzusehen, um einen Benutzer die Stellglieder 30 ausschalten und deaktivieren zu lassen, oder von einem Benutzer zu verlangen, die Stellglieder 30 zu aktivieren. Bestimmte Arten von Stellgliedern, insbesondere aktive Stellglieder, wie z.B. Motoren, können für den Benutzer ein Sicherheitsproblem darstellen, wenn die Stellglieder das Benutzerobjekt 34 unerwartet mit einer starken Kraft gegen den Benutzer bewegen. Wenn ein Ausfall im Steuersystem 10 auftritt, kann der Benutzer außerdem wünschen, die Stellglieder schnell zu deaktivieren, um jegliche Verletzung zu vermeiden. Um diese Option bereitzustellen, ist ein Schutzschalter 41 mit den Stellgliedern 30 gekoppelt. Beim bevorzugten Ausführungsbeispiel muss der Benutzer den Schutzschalter 41 während des Betriebs der Schnittstellenvorrichtung 14 ständig aktivieren oder schließen, um die Stellglieder 30 zu aktivieren. Wenn zu irgendeiner Zeit der Schutzschalter deaktiviert (geöffnet) wird, wird die Leistung von der Leistungsversorgung 40 zu den Stellgliedern 30 unterbrochen (oder die Stellglieder werden anderweitig deaktiviert), solange der Schutzschalter deaktiviert ist. Ein bevorzugtes Ausführungsbeispiel des Schutzschalters ist beispielsweise ein optischer Schalter, der sich am Benutzerobjekt 34 (wie z.B. einem Steuerhebel) oder auf einer zweckmäßigen Oberfläche eines Gehäuses, das die Schnittstellenvorrichtung 14 umschließt, befindet. Wenn der Benutzer den optischen Schalter mit einer Hand oder einem Finger bedeckt, wird der Sensor des Schalters von der Erfassung von Umgebungslicht abgehalten und der Schalter wird geschlossen. Die Stellglieder 30 wirken somit, solange der Benutzer den Schalter bedeckt. Andere Arten von Schutzschaltern 41 können bei anderen Ausführungsbeispielen vorgesehen sein. Beispielsweise kann ein elektrostatischer Kontaktschalter verwendet werden, um einen Kontakt festzustellen, eine Taste oder ein Auslöser kann gedrückt werden, oder eine andere Art von Sensorschalter kann verwendet werden.
  • Das Benutzerobjekt 34 ist vorzugsweise eine Vorrichtung oder ein Gegenstand, die/der von einem Benutzer ergriffen oder anderweitig berührt oder gesteuert werden kann und mit der Schnittstellenvorrichtung 14 gekoppelt ist. Mit "Greifen" ist gemeint, dass Benutzer mit einem Griffteil des Objekts auf eine gewisse Weise, wie z.B. mit der Hand, mit ihren Fingerspitzen oder sogar oral im Fall von behinderten Personen, lösbar in Eingriff stehen können. Der Benutzer 22 kann das Objekt entlang vorgesehener Freiheitsgrade bedienen und bewegen, um mit dem Hauptrechner-Anwendungsprogramm, das der Benutzer auf dem Anzeigebildschirm 20 betrachtet, zu kommunizieren. Das Objekt 34 kann ein Steuerhebel, eine Maus, eine Rollkugel, ein Stift, ein Lenkrad, ein medizinisches Instrument (Laparoskop, Katheter usw.), ein Poolbillardqueue, ein Handgriff, ein Knopf, eine Taste oder ein anderer Gegenstand sein.
  • 2 ist ein schematisches Diagramm, das ein Beispiel einer Stellgliedschnittstelle 38 für ein aktives Stellglied 30 der Schnittstellenvorrichtung 14 darstellt. Bei diesem Beispiel ist das Stellglied 30 ein linearer stromgesteuerter Servomotor. Die Stellgliedschnittstelle 38 umfasst eine DAU-Schaltung 44 und eine Leistungsverstärkerschaltung 46. Die DAU-Schaltung 44 ist mit dem Mikroprozessor 26 gekoppelt und empfängt vorzugsweise ein digitales Signal, das einen Kraftwert darstellt, vom Mikroprozessor 26. Der DAU 48 ist zum Umwandeln eines digitalen Eingangssignals in eine analoge Spannung, die an die Leistungsverstärkerschaltung 46 ausgegeben wird, geeignet. Ein Operationsverstärker 50 gibt beispielsweise ein Signal von Null bis –5 Volt proportional zur Binärzahl an seinem Eingang aus. Ein Operationsverstärker 52 ist ein invertierender Summierverstärker, der die Ausgangsspannung in einen symmetrischen bipolaren Bereich umwandelt; dieses Ausgangssignal ist zur Leistungsverstärkung in der Verstärkungsschaltung 46 geeignet. Die DAU-Schaltung 44 ist natürlich als ein Beispiel von vielen möglichen Schaltungen vorgesehen, die verwendet werden können, um ein digitales Signal in ein gewünschtes analoges Signal umzuwandeln.
  • Die Leistungsverstärkerschaltung 46 empfängt eine analoge Steuerspannung mit niedriger Leistung von der DAU-Schaltung 44 und verstärkt die Spannung zum Steuern der Stellglieder 30. Das Stellglied 30 kann ein stromgesteuerter Servomotor 30 mit hoher Leistung sein. Die Eingangsspannung steuert eine Transkonduktanz- bzw. Steilheitsstufe, die aus einem Verstärker 54 und mehreren Widerständen besteht. Die Steilheitsstufe erzeugt einen Ausgangsstrom, der zur Eingangsspannung proportional ist, um den Motor 30 anzutreiben, während sehr wenig Strom von der Eingangsspannungsquelle entnommen wird. Die zweite Verstärkerstufe, einschließlich des Verstärkers 56, der Widerstände und eines Kondensators C, liefert eine zusätzliche Stromkapazität durch Verstärken des Spannungshubs des zweiten Anschlusses 57 des Motors 30. Die Schaltung 46 ist natürlich als ein Beispiel von vielen möglichen Schaltungen vorgesehen, die verwendet werden können, um Spannungen zum Antreiben der aktiven Stellglieder 30 zu verstärken.
  • 3 ist ein schematisches Diagramm, das ein Beispiel einer Stellgliedschnittstelle 38' darstellt, die in Verbindung mit passiven Stellgliedern verwendet werden kann. Die Schnittstelle 38' ist zur Verwendung mit passiven Stellgliedern (Dämpfern) geeignet, die mit einer analogen Spannung gesteuert werden. Die Schnittstelle 38' umfasst eine DAU-Schaltung 44, einen Verstärker 60, einen Transistor 62 und einen Spannungsschutz 64. Die DAU-Schaltung 44 ist mit dem Mikroprozessor 26 gekoppelt und empfängt ein digitales Signal vom Computersystem, das einen Widerstandskraftwert darstellt, der auf das Benutzerobjekt 34 aufgebracht werden soll. Die DAU-Schaltung 44 wandelt die digitalen Signalspannungen in analoge Spannungen um, die dann an den Verstärker 60 ausgegeben werden. Der Verstärker 60 empfängt die analoge Spannung vom DAU 44 an einem positiven Anschluss und skaliert das Spannungssignal auf einen Bereich, der vom Stellglied 30 verwendbar ist. Der Verstärker 60 kann als Operationsverstärker oder dergleichen implementiert werden. Der Transistor 62 ist mit dem Ausgang des Verstärkers 60 gekoppelt und arbeitet vorzugsweise als Verstärker, um einen erhöhten Ausgangsstrom zum Stellglied 30 zu liefern. Der Widerstand R1 ist zwischen den Verstärker 60 und den Emitter des Transistors 62 gekoppelt und der Widerstand R2 ist zwischen den Verstärker 60 und die Erdung gekoppelt. Der Spannungsschutz 64 ist mit dem Emitter des Transistors 62 gekoppelt und liefert einen Schutz vor Spannungsspitzen, wenn induktive Lasten verwendet werden. Geeignete passive Stellglieder 30 zur Verwendung bei dieser Schaltungsanordnung umfassen variable Magnetspulen oder Magnetteilchenbremsen. Ein separater DAU und Verstärker können für jedes Stellglied 30, das von der Schnittstellenvorrichtung implementiert wird, verwendet werden. Die Schnittstelle 38' ist als ein Beispiel von vielen möglichen Schaltungen vorgesehen, die verwendet werden können, um ein Computersystem mit Stellgliedern zu koppeln. Bei einem alternativen Ausführungsbeispiel könnte nur ein Ein/Aus-Signal beispielsweise für eine Magnetspule erforderlich sein, die ein Ein/Aus-Ventil eines durch ein Fluid gesteuerten Stellgliedes antreibt.
  • 4 ist ein Ablaufdiagramm, das ein erstes Ausführungsbeispiel eines Verfahrens 70 zum Steuern einer Kraftrückkopplungs-Schnittstellenvorrichtung der vorliegenden Erfindung darstellt. Das Verfahren 70 ist auf ein "durch einen Hauptrechner gesteuertes" Ausführungsbeispiel gerichtet, bei dem das Hauptrechnersystem 12 direkte Kraftbefehle niedriger Ebene zum Mikroprozessor 26 liefert und der Mikroprozessor direkt diese Kraftbefehle zu Stellgliedern 30 liefert, um von den Stellgliedern ausgegebene Kräfte zu steuern. Die vom Hauptrechner gesteuerte Betriebsart ist beispielsweise für Ausführungsbeispiele unter Verwendung einer USB-Kommunikationsschnittstelle geeignet. Die Datenraten sind ausreichend hoch, um dem Hauptrechner zu ermöglichen, mit 500 Hz oder mehr zu kommunizieren und eine realistische Kraftrückkopplung zum Benutzerobjekt 34 zu liefern.
  • Der Prozess beginnt bei 72. Beim Schritt 74 werden das Hauptrechnersystem 12 und die Schnittstellenvorrichtung 14 beispielsweise durch einen Benutzer, der Netzschalter aktiviert, eingeschaltet. Nach Schritt 74 wird der Prozess 70 in zwei parallele (simultane) Prozesse aufgezweigt. Ein Prozess wird am Hauptrechnersystem 12 implementiert und der andere Prozess wird am lokalen Mikroprozessor 26 implementiert. Diese zwei Prozesse zweigen von Schritt 74 in verschiedene Richtungen ab, um diese Simultanität anzuzeigen.
  • Beim Hauptrechnersystemprozess wird Schritt 76 zuerst implementiert, in welchem ein Anwendungsprogramm verarbeitet oder aktualisiert wird. Diese Anwendung kann eine Simulation, ein Videospiel, ein wissenschaftliches Programm oder ein anderes Programm sein. Bilder können für einen Benutzer auf dem Ausgabeanzeigebildschirm 20 angezeigt werden und eine andere Rückkopplung kann präsentiert werden, wie z.B. eine Audiorückkopplung.
  • Zwei Zweige verlassen Schritt 76, um anzugeben, dass zwei Prozesse simultan (Multitasking) auf dem Hauptrechnersystem 12 laufen. Bei einem Prozess wird der Schritt 78 implementiert, wobei Sensordaten vom Hauptrechner vom lokalen Mikroprozessor 26 empfangen werden. Wie nachstehend im Mikroprozessorprozess ausführlich dargelegt, empfängt der lokale Prozessor 26 kontinuierlich Signale von den Sensoren 28, verarbeitet die Rohdaten und sendet verarbeitete Sensordaten zum Hauptrechner 12. Alternativ sendet der lokale Prozessor 26 Rohdaten direkt zum Hauptrechnersystem 12. "Sensordaten", wie hierin bezeichnet, können Positionswerte, Geschwindigkeitswerte und/oder Beschleunigungswerte umfassen, die von den Sensoren 28 abgeleitet werden, die die Bewegung des Objekts 34 in einem oder mehreren Freiheitsgraden erfassen. Außerdem können beliebige andere Daten, die von anderen Eingabevorrichtungen 39 empfangen werden, auch vom Hauptrechnersystem 12 als Sensordaten beim Schritt 78 empfangen werden, wie z.B. Signale, die anzeigen, dass eine Taste an der Schnittstellenvorrichtung 14 vom Benutzer aktiviert wurde. Schließlich kann der Begriff "Sensordaten" auch einen Verlauf von Werten wie z.B. Positionswerten, die vorher aufgezeichnet und gespeichert wurden, um eine Geschwindigkeit zu berechnen, umfassen.
  • Nachdem die Sensordaten beim Schritt 78 gelesen wurden, kehrt der Prozess zum Schritt 76 zurück, bei dem das Hauptrechnersystem 12 das Anwendungsprogramm als Reaktion auf die Bedienungen des Objekts 34 durch den Benutzer oder irgendeine andere in Schritt 78 empfangene Benutzereingabe aktualisieren sowie feststellen kann, ob Kräfte im parallelen Prozess auf das Objekt 34 aufgebracht werden müssen. Schritt 78 wird in einer kontinuierlichen Schleife zum Lesen von Daten vom lokalen Prozessor 26 implementiert.
  • Der zweite Zweig vom Schritt 76 betrifft den Prozess des Hauptrechners, der Kraftbefehle ermittelt, um eine Kraftrückkopplung zum Benutzer, der das Objekt 34 bedient, zu liefern. Diese Befehle werden im Unterschied zu den im Ausführungsbeispiel von 5 beschriebenen Kraftbefehlen "hoher Ebene" oder Überwachungskraftbefehlen hierin als Kraftbefehle "niedriger Ebene" beschrieben. Ein Kraftbefehl niedriger Ebene befiehlt einem Stellglied, eine Kraft mit einem speziellen Betrag auszugeben. Der Befehl niedriger Ebene umfasst beispielsweise typischerweise einen Betragskraftwert, z.B. (ein) äquivalentes) Signal(e), um dem Stellglied zu befehlen, eine Kraft mit einem gewünschten Betragswert aufzubringen. Kraftbefehle niedriger Ebene können auch eine Kraftrichtung, wenn ein Stellglied eine Kraft in einer ausgewählten Richtung aufbringen kann, und/oder andere Informationen niedriger Ebene, wie für ein Stellglied erforderlich, festlegen.
  • Der zweite Zweig beginnt mit Schritt 80, bei dem das Hauptrechnersystem prüft, ob eine Änderung der auf das Benutzerobjekt 34 aufgebrachten Kraft erforderlich ist. Dies kann durch mehrere Arten von Kriterien festgestellt werden, von welchen das wichtigste die vom Hauptrechner in Schritt 78 gelesenen Sensordaten, Zeitsteuerdaten und die Implementierung oder "Ereignisse" des beim Schritt 76 aktualisierten Anwendungsprogramms sind. Die beim Schritt 78 gelesenen Sensordaten informieren den Hauptrechner 12 darüber, wie der Benutzer mit dem Anwendungsprogramm in Wechselwirkung steht. Aus der Position des Objekts 34, die über die Zeit festgestellt wird, kann das Hauptrechnersystem 12 feststellen, wann Kräfte auf das Objekt aufgebracht werden sollten. Die Position eines vom Computer erzeugten Objekts innerhalb einer GUI kann beispielsweise festlegen, wann eine Änderung der Kraftrückkopplung angefordert wird. Außerdem kann die Geschwindigkeit und/oder Beschleunigung des Benutzerobjekts beeinflussen, ob eine Änderung der Kraft am Objekt erforderlich ist. Eine andere Eingabe, wie z.B. ein Benutzer, der Tasten oder andere Bedienelemente an der Schnittstellenvorrichtung 14 aktiviert, kann auch die am Objekt 34 erforderlichen Kräfte in Abhängigkeit davon ändern, wie diese Bedienelemente programmiert wurden, um das Anwendungsprogramm zu beeinflussen.
  • Andere Kriterien zum Feststellen, ob eine Änderung der Kraft erforderlich ist, umfassen Ereignisse im Anwendungsprogramm, wie z.B. Kollisions- bzw. Zusammenstoßereignisse zwischen graphischen Objekten. Kräfte sollten somit auf das Benutzerobjekt in Abhängigkeit von diesem Zusammenstoßereignis aufgebracht werden, um einen Aufprall zu simulieren. Kräfte können am Benutzerobjekt in Abhängigkeit von einer Kombination eines solchen Ereignisses und der in Schritt 78 gelesenen Sensordaten erforderlich sein. Andere Parameter im Anwendungsprogramm können festlegen, ob eine Änderung der Kraft für das Benutzerobjekt erforderlich ist, wie z.B. andere Eingabevorrichtungen oder Benutzerschnittstellenvorrichtungen, die mit dem Hauptrechnersystem 12 verbunden sind und Daten in das Anwendungsprogramm eingeben (andere Schnittstellenvorrichtungen können direkt verbunden, entfernt über ein Netzwerk verbunden sein usw.).
  • Wenn keine Änderung der Kraft beim Schritt 80 aktuell erforderlich ist, kehrt der Prozess dann zum Schritt 76 zurück, um die Hauptrechneranwendung zu aktualisieren und zum Schritt 80 zurückzukehren, um wieder zu prüfen, bis eine solche Änderung der Kraft erforderlich ist. Wenn eine solche Änderung erforderlich ist, wird Schritt 82 implementiert, bei dem der Hauptrechner 12 geeignete Kraftbefehle niedriger Ebene festlegt, die zu den Stellgliedern 30 der Schnittstellenvorrichtung 14 gesandt werden sollen, wobei diese Kraftbefehle von einem ausgewählten Kraftempfindungsprozess, von Sensordaten, von der Hauptrechneranwendung und vom Taktgeber 18 abhängen.
  • Die Kraftbefehle niedriger Ebene können teilweise aus einem ausgewählten Kraftempfindungsprozess bestimmt werden. Ein "Kraftempfindungsprozess", wie hierin bezeichnet, ist ein Satz von Befehlen zum Liefern von Kraftbefehlen, die von anderen Parametern oder Bedingungen abhängen, wie z.B. Sensordaten, die beim Schritt 78 gelesen werden, und Zeitsteuerdaten vom Taktgeber 18. Beim beschriebenen Ausführungsbeispiel können Kraftempfindungsprozesse mehrere verschiedene Arten von Schritten und/oder Befehlen umfassen. Eine Art von Befehl ist ein Kraftalgorithmus, der eine Gleichung umfasst, die der Hauptrechner 12 verwenden kann, um einen Kraftwert auf der Basis von Sensor- und Zeitsteuerdaten zu berechnen oder zu modellieren. Verschiedene Arten von Algorithmen können verwendet werden. Beispielsweise können Algorithmen, bei denen sich die Kraft linear (oder nicht-linear) mit der Position des Objekts 34 ändert, verwendet werden, um eine simulierte Kraft wie eine Feder zu liefern. Algorithmen, bei denen sich die Kraft linear (oder nicht-linear) mit der Geschwindigkeit des Objekts 34 ändert, können auch verwendet werden, um eine simulierte Dämpfungskraft oder andere Kräfte vorzusehen. Algorithmen, bei denen sich die Kraft linear (oder nichtlinear) mit der Beschleunigung des Objekts 34 ändert, können auch verwendet werden, um beispielsweise eine simulierte Trägheitskraft an einer Masse (für eine lineare Änderung) oder eine simulierte Gravitationszugkraft (für eine nicht-lineare Änderung) zu liefern.
  • Für Kraftwerte, die von der Geschwindigkeit und Beschleunigung des Benutzerobjekts 34 abhängen, können die Geschwindigkeit und die Beschleunigung auf eine Anzahl von verschiedenen Weisen geliefert werden. Die vom Hauptrechner 12 in Schritt 78 gelesenen Sensordaten können Positionsdaten, Geschwindigkeitsdaten und Beschleunigungsdaten umfassen. Bei einem bevorzugten Ausführungsbeispiel wurden die Geschwindigkeits- und Beschleunigungsdaten vorher vom Mikroprozessor 26 berechnet und dann zum Hauptrechner 12 geliefert. Der Hauptrechner kann folglich die Geschwindigkeits- und Beschleunigungsdaten direkt in einem Algorithmus verwenden, um einen Kraftwert zu berechnen. Bei einem alternativen Ausführungsbeispiel umfassen die beim Schritt 78 gelesenen Sensordaten Positionsdaten und keine Geschwindigkeits- oder Beschleunigungsdaten, so dass der Hauptrechner 12 die Geschwindigkeit und Beschleunigung aus den Positionsdaten berechnen muss. Dies kann durch Aufzeichnen einer Anzahl von vergangenen Positionswerten, Aufzeichnen des Zeitpunkts, zu dem jeder solche Positionswert empfangen wurde, unter Verwendung des Systemtakts 18 und Berechnen einer Geschwindigkeit und/oder Beschleunigung aus solchen Daten durchgeführt werden. Eine kinematische Gleichung, die eine Kraft auf der Basis der Geschwindigkeit des Benutzerobjekts, multipliziert mit einer Dämpfungskonstante, berechnet, kann beispielsweise verwendet werden, um eine Dämpfungskraft am Benutzerobjekt zu bestimmen. Diese Art von Gleichung kann die Bewegung des Objekts 34 entlang eines Freiheitsgrades durch ein Fluid oder ein ähnliches Material simulieren. Eine Dämpfungskonstante kann den Grad des Widerstandes angeben, den das Objekt 34 erfährt, wenn es sich durch ein simuliertes Material wie z.B. eine Flüssigkeit bewegt, wobei eine größere Zahl einen größeren Widerstand angibt. Die Differenz der Position und Bewegungsrichtung des Benutzerobjekts wird berechnet und die Kraft wird gleich der Dämpfungskonstante, multipliziert mit der Positionsänderung, gesetzt. Die Bewegung in anderen Medien wie z.B. auf einer holprigen Oberfläche, auf einer schiefen Ebene usw., kann auf ähnliche Weise unter Verwendung von anderen Verfahren zur Berechnung der Kraft simuliert werden.
  • Die Festlegung von Kraftbefehlen wird vorzugsweise durch Zeitsteuerdaten beeinflusst, auf die vom Systemtakt 18 zugegriffen wird. Beim vorstehend beschriebenen Dämpfungskraftbeispiel wird die Geschwindigkeit des Benutzerobjekts 34 beispielsweise durch Berechnen der unterschiedlichen Positionen des Benutzerobjekts und Multiplizieren mit der Dämpfungskonstante ermittelt. Der Hauptrechner kann auf den Takt 12 zugreifen, um festzustellen, wie viel Zeit tatsächlich abgelaufen ist, seit die letzten Positionsdaten empfangen wurden, und folglich die Zeitsteuerdaten des Takts bei der Modulation von Kräften und Kraftempfindungen für den Benutzer verwenden. Die Zeitsteuerdaten können bei anderen Algorithmen und Kraftempfindungsprozessen der vorliegenden Erfindung verwendet werden.
  • Andere Befehle können auch in einem Kraftempfindungsprozess enthalten sein. Bedingungen können beispielsweise enthalten sein, um Kräfte nur in gewünschten Richtungen oder unter anderen speziellen Umständen zu liefern. Um beispielsweise ein virtuelles Hindernis wie z.B. eine Wand zu simulieren, sollten Kräfte in nur einer Richtung (unidirektional) aufgebracht werden. Um einen unidirektionalen widerstand zu simulieren, können Bedingungen in den Hindernis-Kraftempfindungsprozess aufgenommen werden. Auch ein "Null"-Kraftempfindungsprozess kann zur Verfügung stehen, der dem Hauptrechner 12 (oder Mikroprozessor 26 in 5) befiehlt, einen Befehl niedriger Ebene oder Kraftwerte auszugeben, um Nullkräfte am Objekt 34 vorzusehen (d.h. alle Kräfte zu entfernen).
  • Eine weitere Art von Kraftempfindungsprozess verwendet keine Algorithmen, um eine Kraft zu modellieren, sondern verwendet statt dessen Kraftwerte, die vorher berechnet oder abgetastet und als digitalisiertes "Kraftprofil" im Speicher oder in einer anderen Speichervorrichtung gespeichert wurden. Diese Kraftwerte können vorher unter Verwendung einer Gleichung oder eines Algorithmus erzeugt worden sein, wie vorstehend beschrieben, oder durch Abtasten und Digitalisieren von Kräften geliefert werden. Um beispielsweise eine spezielle Kraftempfindung für den Benutzer vorzusehen, kann dem Hauptrechner 12 durch einen Kraftempfindungsprozess befohlen werden, aufeinander folgende Kraftwerte aus einer bestimmten Speichervorrichtung wie z.B. einem RAM, ROM, einer Festplatte usw. abzurufen. Diese Kraftwerte können direkt zu einem Stellglied gesandt werden, um spezielle Kräfte vorzusehen, ohne zu erfordern, dass der Hauptrechner 12 die Kraftwerte berechnet. Außerdem können vorher gespeicherte Kraftwerte bezüglich anderer Parameter ausgegeben werden, um verschiedene Arten von Kräften und Kraftempfindungen von einem Satz von gespeicherten Kraftwerten zu liefern. Unter Verwendung des Systemtakts 18 können die gespeicherten Kraftwerte beispielsweise der Reihe nach gemäß einem speziellen Zeitintervall ausgegeben werden, das in Abhängigkeit von der gewünschten Kraft variieren kann. Oder verschiedene abgerufene Kraftwerte können in Abhängigkeit von der aktuellen Position des Benutzerobjekts 34 ausgegeben werden.
  • Der Hauptrechner 12 kann beim Schritt 82 gemäß einem neu ausgewählten Kraftempfindungsprozess oder einem vorher ausgewählten Kraftempfindungsprozess einen Kraftbefehl festlegen. Wenn dies beispielsweise eine zweite oder spätere Iteration vom Schritt 82 ist, kann derselbe Kraftempfindungsprozess wie in der vorherigen Iteration wieder implementiert werden, wenn die Parameter (wie z.B. die Position des Objekts 34) dies ermöglichen, wie durch das Hauptrechner-Anwendungsprogramm festgestellt.
  • Der beim Schritt 82 festgelegte Kraftbefehl kann auch von Befehlen abhängen, die auf andere Parameter prüfen. Diese Befehle können innerhalb oder außerhalb der vorstehend beschriebenen Kraftempfindungsprozesse enthalten sein. Ein solcher Parameter sind Werte, die vom implementierten Hauptrechner-Anwendungsprogramm implementiert werden (falls vorhanden). Das Anwendungsprogramm kann feststellen, dass ein spezieller Kraftbefehl ausgegeben oder Kraftempfindungsprozess implementiert werden sollte, auf der Basis von Ereignissen, die innerhalb des Anwendungsprogramms auftreten, oder anderen Befehlen. Kraftbefehle oder -werte können vom Hauptrechner-Anwendungsprogramm unabhängig von Sensordaten geliefert werden. Das Hauptrechner-Anwendungsprogramm kann auch seine eigene spezielle Positions-, Geschwindigkeits- und/oder Beschleunigungsdaten zu einem ausgewählten Kraftempfindungsprozess liefern, um eine Kraft zu berechnen oder zu liefern, die nicht auf der Bedienung des Benutzerobjekts 34 basiert, sondern geliefert wird, um ein Ereignis im Anwendungsprogramm zu simulieren. Solche Ereignisse können Zusammenstoßereignisse umfassen, wie sie z.B. auftreten, wenn ein vom Benutzer gesteuertes Computerbild auf eine virtuelle Oberfläche oder Struktur auftrifft. Andere Eingabevorrichtungen, die mit dem Hauptrechner 12 verbunden sind, können auch Ereignisse und daher die auf das Benutzerobjekt 34 aufgebrachten Kräfte beeinflussen. Die Sensordaten von mehreren Schnittstellenvorrichtungen 14, die mit einem einzelnen Hauptrechner verbunden sind, können beispielsweise die an anderen angeschlossenen Schnittstellenvorrichtungen gespürten Kräfte beeinflussen, indem Ereignisse und vom Computer gesteuerte Bilder/Objekte des Hauptrechner-Anwendungsprogramms beeinflusst werden. Die beim Schritt 82 bestimmten Kraftbefehle können auch auf anderen Eingaben in den Hauptrechner 12 basieren, wie z.B. Aktivierungen von Tasten oder anderen Eingabevorrichtungen in (oder außerhalb) der Schnittstellenvorrichtung 14. Ein spezielles Anwendungsprogramm könnte beispielsweise erfordern, dass eine Kraft auf einen Steuerhebel aufgebracht wird, sobald ein Benutzer eine Schießtaste am Steuerhebel drückt.
  • Die vorstehend beschriebenen Kraftempfindungsprozesse und andere Parameter können verwendet werden, um eine Vielfalt von haptischen Empfindungen für den Benutzer durch das Benutzerobjekt 34 vorzusehen, um viele verschiedenen Arten von taktilen Ereignissen zu simulieren. Typische haptische Empfindungen können beispielsweise eine virtuelle Dämpfung (vorstehend beschrieben), ein virtuelles Hindernis und eine virtuelle Textur umfassen. Virtuelle Hindernisse werden vorgesehen, um Wände, Hindernisse und andere unidirektionalen Kräfte in einer GUI, einer Simulation, einem Spiel usw. zu simulieren, und werden verwendet, um einen physikalischen Widerstand gegen eine Bewegung des Steuerhebels in einer Richtung bereitzustellen. Virtuelle Texturen können verwendet werden, um einen Oberflächenzustand oder eine ähnliche Textur zu simulieren. Wenn der Benutzer einen Steuerhebel entlang einer Achse bewegt, sendet der Hauptrechner beispielsweise eine schnelle Folge von Befehlen, um wiederholt 1) einen Widerstand entlang dieser Achse aufzubringen, und 2) dann sofort keinen Widerstand entlang dieser Achse aufzubringen, wie gemäß einem Kraftempfindungsprozess und korreliert mit der räumlichen Position. Folglich spürt der Benutzer eine physikalische Empfindung einer Textur ähnlich dem Gefühl des Ziehens eines Stabs über ein Gitter.
  • Beim nächsten Schritt 84 wird ein beim Schritt 82 bestimmter Kraftbefehl niedriger Ebene an den Mikroprozessor 26 über den Bus 24 ausgegeben. Dieser Kraftbefehl umfasst typischerweise einen Kraftwert, der gemäß den vorstehend beschriebenen Parametern ermittelt wurde. Der Kraftbefehl kann als tatsächliches Kraftsignal ausgegeben werden, das lediglich vom Mikroprozessor 26 zu einem Stellglied 30 weitergeleitet wird; oder der Kraftbefehl kann vom Mikroprozessor 26 in eine geeignete Form umgewandelt werden, bevor er zum Stellglied 30 gesandt wird. Außerdem umfasst der Kraftbefehl niedriger Ebene vorzugsweise eine Information, die dem Mikroprozessor 26 angibt, welche Stellglieder diesen Kraftwert empfangen sollen (wenn mehrere Stellglieder an der Schnittstellenvorrichtung 14 enthalten sind). Der Prozess kehrt dann zum Schritt 76 zurück, um das Hauptrechner-Anwendungsprogramm zu verarbeiten/aktualisieren. Der Prozess fährt zum Schritt 80 fort, bei dem der Hauptrechner prüft, ob ein anderer Kraftbefehl ausgegeben werden sollte, wie durch die vorstehend beschriebenen Parameter bestimmt. Wenn ja, wird beim Schritt 84 ein neuer Kraftbefehl ermittelt und ausgegeben. Wenn keine Änderung der Kraft erforderlich ist, gibt der Hauptrechner 12 keinen weiteren Befehl aus, da der Mikroprozessor 26 fortfahren kann, den vorherigen Kraftbefehl an die Stellglieder 30 auszugeben (alternativ kann der Hauptrechner 12 weiterhin Befehle ausgeben, selbst wenn keine Kraftänderung erforderlich ist). Anschließende Kraftbefehle, die beim Schritt 84 ausgegeben werden, können gemäß demselben Kraftempfindungsprozess oder einem anderen Kraftempfindungsprozess in Abhängigkeit von den Parametern von Schritt 82 bestimmt werden.
  • Außerdem synchronisiert der Hauptrechner 12 vorzugsweise irgendeine geeignete visuelle Rückkopplung, akustische Rückkopplung oder andere Rückkopplung, die mit der Hauptrechneranwendung in Beziehung steht, mit dem Aufbringen von Kräften auf das Benutzerobjekt 34. Bei einer Videospielanwendung sollte beispielsweise der Beginn oder Start von visuellen Ereignissen, wie z.B. eines Objekts, das mit dem Benutzer auf dem Anzeigebildschirm 20 zusammenstößt, mit dem Beginn oder Start von Kräften, die vom Benutzer gespürt werden und die diesen visuellen Ereignissen entsprechen oder diese ergänzen, synchronisiert werden. Die beginnenden visuellen Ereignisse und Kraftereignisse geschehen vorzugsweise innerhalb etwa 30 Millisekunden (ms) zueinander. Diese Zeitspanne ist die typische Grenze der menschlichen Wahrnehmungsfähigkeit, um die Ereignisse als gleichzeitig wahrzunehmen. Wenn die visuellen und Kraftereignisse außerhalb dieses Bereichs auftreten, dann kann eine Zeitverzögerung zwischen den Ereignissen gewöhnlich wahrgenommen werden. Ebenso wird die Ausgabe von akustischen Signalen entsprechend dem Beginn von akustischen Ereignissen in der Hauptrechneranwendung vorzugsweise mit dem Beginn von Ausgangskräften, die diesen akustischen Ereignissen entsprechen/diese ergänzen, synchronisiert ausgegeben. Wiederum geschieht der Beginn dieser Ereignisse vorzugsweise innerhalb etwa 30 ms zueinander. Das Hauptrechnersystem 12 kann beispielsweise Töne einer Explosion aus den Lautsprechern 21 zeitlich so nah wie möglich zu den vom Benutzer durch diese Explosion gespürten Kräften in einer Simulation ausgeben. Vorzugsweise steht die Stärke des Tons in direktem (im Gegensatz zum umgekehrten) Verhältnis zur Größe der auf das Benutzerobjekt 34 aufgebrachten Kräfte.
  • Der lokale Mikroprozessor 26 implementiert den Prozess, der von Schritt 74 abzweigt und mit Schritt 86 beginnt, parallel zum vorstehend beschriebenen Hauptrechnerprozess. Beim Schritt 86 wird die Schnittstellenvorrichtung 14 aktiviert. Signale können beispielsweise zwischen dem Hauptrechner 12 und der Schnittstellenvorrichtung 14 gesandt werden, um zu bestätigen, dass die Schnittstellenvorrichtung nun aktiv ist. Vom Schritt 86 zweigen zwei Prozesse ab, um anzugeben, dass zwei Prozesse simultan (Multitasking) auf dem lokalen Prozessor 26 laufen. Bei einem Prozess wird Schritt 88 implementiert, bei dem der Prozessor 26 Rohdaten (Sensormesswerte) von den Sensoren 28 liest. Solche Rohdaten umfassen vorzugsweise Positionswerte, die die Position des Benutzerobjekts entlang bereitgestellter Freiheitsgrade beschreiben. Bei alternativen Ausführungsbeispielen können die Sensoren 28 Geschwindigkeitssensoren und Beschleunigungsmesser zum Liefern von rohen Geschwindigkeits- und Beschleunigungswerten des Objekts 34 umfassen. Die beim Schritt 88 gelesenen Rohdaten können auch eine andere Eingabe wie z.B. von einer aktivierten Taste oder einem anderen Bedienelement 39 der Schnittstellenvorrichtung 14 umfassen.
  • Beim nächsten Schritt 90 verarbeitet der Prozessor 26 die empfangenen Rohdaten zu Sensordaten, wenn anwendbar. Beim bevorzugten Ausführungsbeispiel umfasst diese Verarbeitung zwei Schritte: Berechnen von Geschwindigkeits- und/oder Beschleunigungswerten aus rohen Positionsdaten (wenn die Geschwindigkeit und/oder Beschleunigung erforderlich sind, um Kräfte zu berechnen) und Filtern der berechneten Geschwindigkeits- und Beschleunigungsdaten. Die Geschwindigkeits- und Beschleunigungswerte werden aus den beim Schritt 88 empfangenen rohen Positionsdaten und gespeicherten Positions- und Zeitwerten berechnet. Vorzugsweise speichert der Prozessor 26 eine Anzahl von Positionswerten und Zeitwerten entsprechend dem, wann die Positionswerte empfangen wurden. Der Prozessor 26 kann seinen eigenen oder einen lokalen Systemtakt (in 1 nicht gezeigt) verwenden, um die Zeitsteuerdaten zu ermitteln. Die Geschwindigkeit und Beschleunigung können unter Verwendung der gespeicherten Positionsdaten und Zeitsteuerdaten berechnet werden und dann gefiltert werden, um Rauschen aus den Daten zu entfernen, wie z.B. große Spitzen, die zu Geschwindigkeitsberechnungen aus schnellen Änderungen der Position des Objekts 34 führen können. Bei einem alternativen Ausführungsbeispiel kann eine Schaltung, die mit dem Prozessor 26 elektrisch gekoppelt, aber von diesem separat ist, die Rohdaten empfangen und die Geschwindigkeit und Beschleunigung ermitteln. Eine anwendungsspezifische integrierte Schaltung (ASIC) oder eine diskrete Logikschaltung kann beispielsweise Zähler oder dergleichen verwenden, um die Geschwindigkeit und Beschleunigung zu ermitteln.
  • Alternativ kann Schritt 90 ausgelassen werden und der Prozessor 26 kann rohe Positionsdaten zum Hauptrechner 12 (und andere Eingangsdaten von anderen Eingabevorrichtungen 39) liefern. Dies würde erfordern, dass der Hauptrechner 12 die Geschwindigkeit und Beschleunigung aus den Positionsdaten filtert und berechnet. Bei anderen Ausführungsbeispielen kann das Filtern am Hauptrechner 12 durchgeführt werden, während die Geschwindigkeits- und Beschleunigungsberechnung am Prozessor 26 durchgeführt werden kann. bei Ausführungsbeispielen, bei denen Geschwindigkeits- und/oder Beschleunigungssensoren verwendet werden, um rohe Geschwindigkeits- und Beschleunigungsdaten zu liefern, kann die Berechnung der Geschwindigkeit und/oder Beschleunigung weggelassen werden. Nach Schritt 90 wird Schritt 91 implementiert, bei dem der Prozessor 26 die verarbeiteten Sensordaten über den Bus 24 zum Hauptrechner 12 sendet. Der Prozess kehrt dann zu Schritt 88 zurück, um Rohdaten zu lesen. Die Schritte 88, 90 und 91 werden folglich kontinuierlich implementiert, um aktuelle Sensordaten zum Hauptrechnersystem 12 zu liefern.
  • Der zweite Zweig von Schritt 86 betrifft den Prozessor 26, der die Stellglieder 30 steuert, um vom Hauptrechner 12 berechnete Kräfte zum Objekt 34 zu liefern. Der zweite Zweig beginnt mit Schritt 92, bei dem der Prozessor 26 prüft, ob ein Kraftbefehl niedriger Ebene vom Hauptrechner 12 über den Bus 24 empfangen wurde. Wenn nicht, prüft der Prozess kontinuierlich auf einen solchen Kraftbefehl. Wenn ein Kraftbefehl empfangen wurde, wird Schritt 94 implementiert, bei dem der Prozessor 26 einen Prozessor-Kraftbefehl niedriger Ebene an die festgelegten Stellglieder ausgibt, um die Ausgangskraft auf die gewünschte Größe, Richtung usw. festzulegen. Dieser Kraftbefehl kann zum empfangenen Befehl niedriger Ebene vom Hauptrechner äquivalent sein oder der Prozessor 26 kann wahlweise den Kraftbefehl in eine vom Stellglied 30 verwendbare geeignete Form umwandeln (oder die Stellgliedschnittstelle 38 kann eine solche Umwandlung durchführen). Der Prozess kehrt dann zum Schritt 92 zurück, um auf einen weiteren Kraftbefehl vom Hauptrechner 12 zu prüfen.
  • 5 ist ein Ablaufdiagramm, das ein zweites Ausführungsbeispiel eines Verfahrens 100 zum Steuern einer Kraftrückkopplungs-Schnittstellenvorrichtung 14 der vorliegenden Erfindung darstellt. Das Verfahren 100 ist auf ein "Reflex"-Ausführungsbeispiel gerichtet, bei dem das Hauptrechnersystem 12 nur Überwachungskraftbefehle hoher Ebene ("Hauptrechnerbefehle") zum Mikroprozessor 26 liefert, während der Mikroprozessor unabhängig Kraftbefehle niedriger Ebene (Kraftwerte) ermittelt und zu den Stellgliedern 30 als unabhängigen "Reflex" liefert, um von den Stellgliedern ausgegebene Kräfte zu steuern.
  • Der Prozess von 5 ist für Kommunikationsschnittstellen mit geringer Geschwindigkeit, wie z.B. eine serielle Standard-RS-232-Schnittstelle, geeignet. Das Ausführungsbeispiel von 5 ist jedoch auch für Kommunikationsschnittstellen mit hoher Geschwindigkeit wie z.B. USB geeignet, da der lokale Mikroprozessor den Hauptrechnerprozess 16 von der Rechenlast entlastet. Außerdem kann dieses Ausführungsbeispiel ein unkompliziertes Befehlsprotokoll bereitstellen, von welchem ein Beispiel mit Bezug auf die 9 und 14 beschrieben wird und das ermöglicht, dass Softwareentwickler leicht eine Kraftrückkopplung bei einer Hauptrechneranwendung vorsehen. Bei diesem Ausführungsbeispiel kann beispielsweise die langsamere Betriebsart von "Unterbrechungsdatenübertragungen" des USB verwendet werden.
  • Der Prozess beginnt bei 102. Beim Schritt 104 werden das Hauptrechnersystem 12 und die Schnittstellenvorrichtung 14 eingeschaltet, beispielsweise von einem Benutzer, der Netzschalter aktiviert. Nach Schritt 104 verzweigt sich der Prozess 100 in zwei parallele Prozesse. Ein Prozess wird auf dem Hauptrechnersystem 12 implementiert und der andere Prozess wird am lokalen Mikroprozessor 26 implementiert.
  • Beim Hauptrechnersystem-Prozess wird Schritt 106 zuerst implementiert, bei dem ein Anwendungsprogramm verarbeitet wird. Diese Anwendung kann eine Simulation, ein Videospiel, ein wissenschaftliches Programm oder ein anderes Programm sein. Bilder können für einen Benutzer auf dem Ausgabeanzeigebildschirm 20 angezeigt werden und eine andere Rückkopplung kann dargestellt werden, wie z.B. eine Audiorückkopplung.
  • Zwei Zweige verlassen Schritt 106, um anzugeben, dass zwei Prozesse simultan (Multitasking usw.) auf dem Hauptrechnersystem 12 laufen. Bei einem der Prozesse wird Schritt 108 implementiert, bei dem Sensordaten vom Benutzerobjekt durch den Hauptrechner vom lokalen Mikroprozessor 26 empfangen werden. Ähnlich Schritt 78 des Prozesses von 4 empfängt das Hauptrechnersystem 12 entweder Rohdaten (z.B. Positionsdaten und keine Geschwindigkeits- oder Beschleunigungsdaten) oder verarbeitete Sensordaten (Positions-, Geschwindigkeits- und/oder Beschleunigungsdaten) vom Mikroprozessor 26. Außerdem können irgendwelche anderen Daten, die von anderen Eingabevorrichtungen 39 empfangen werden, auch durch das Hauptrechnersystem 12 vom Mikroprozessor 26 beim Schritt 108 empfangen werden, wie z.B. Signale, die angeben, dass eine Taste an der Schnittstellenvorrichtung 14 vom Benutzer gedrückt wurde.
  • Im Gegensatz zum vorherigen Ausführungsbeispiel von 4 berechnet der Hauptrechner keine Kraftwerte aus den empfangenen Sensordaten beim Schritt 108. Vielmehr überwacht der Hauptrechner 12 die Sensordaten, um festzustellen, wenn eine Änderung der Art von Kraft erforderlich ist. Dies wird nachstehend genauer beschrieben. Der Hauptrechner 12 verwendet natürlich auch die Sensordaten als Eingabe für die Hauptrechneranwendung, um die Hauptrechneranwendung dementsprechend zu aktualisieren.
  • Nachdem Sensordaten beim Schritt 108 empfangen wurden, kehrt der Prozess zum Schritt 106 zurück, bei dem das Hauptrechnersystem 12 das Anwendungsprogramm als Reaktion auf die Bedienungen des Benutzers des Objekts 34 und irgendeine andere in Schritt 108 empfangene Benutzereingabe aktualisieren kann. Schritt 108 wird dann wieder in einer kontinuierlichen Schleife des Empfangs von Sätzen von Sensordaten vom lokalen Prozessor 26 implementiert. Da der Hauptrechner die Stellglieder nicht direkt auf der Basis von Sensordaten steuern muss, können die Sensordaten mit einer viel niedrigeren Geschwindigkeit geliefert werden. Da der Hauptrechner beispielsweise die Hauptrechneranwendung und Bilder auf dem Anzeigebildschirm 20 als Reaktion auf Sensordaten aktualisiert, müssen die Sensordaten nur mit 60–70 Hz (dem Auffrischungszyklus eines typischen Anzeigebildschirms) im Vergleich zur viel höheren Rate von etwa 500–1000 Hz (oder mehr), die erforderlich ist, um realistisch Kraftrückkopplungssignale niedriger Ebene von den Sensorsignalen zu liefern, gelesen werden. Der Hauptrechner 12 synchronisiert auch vorzugsweise visuelle, Audio- und Kraftereignisse ähnlich wie vorstehend mit Bezug auf 4 beschrieben.
  • Der zweite Zweig von Schritt 106 betrifft den Prozess des Hauptrechners, der Kraftbefehle hoher Ebene ("Hauptrechnerbefehle") festlegt, um eine Kraftrückkopplung zum Benutzer, der das Objekt 34 bedient, zu liefern. Der zweite Zweig beginnt mit Schritt 110, bei dem das Hauptrechnersystem prüft, ob eine Änderung der Art von Kraft, die auf das Benutzerobjekt 34 aufgebracht wird, erforderlich ist. Die "Art" von Kraft, ist eine Kraftempfindung oder ein Kraftprofil, die/das von einem speziellen Kraftempfindungsprozess oder Kraftwert, den der lokale Mikroprozessor 26 unabhängig vom Hauptrechner implementieren kann, erzeugt wird. Der Hauptrechner 12 stellt fest, ob eine Änderung der Art von Kraft erforderlich ist, in Abhängigkeit von den Sensordaten, die vom Hauptrechner beim Schritt 108 gelesen werden, und in Abhängigkeit von den Ereignissen des in Schritt 106 aktualisierten Anwendungsprogramms. Wie mit Bezug auf 4 erläutert, informieren die Sensordaten den Hauptrechner, wenn Kräfte auf das Objekt aufgebracht werden sollten, auf der Basis der aktuellen Position, Geschwindigkeit und/oder Beschleunigung des Objekts. Die Manipulationen des Objekts 34 seitens des Benutzers können verursacht haben, dass eine neue Art von Kraft erforderlich ist. Wenn der Benutzer beispielsweise ein virtuelles Rennauto innerhalb einer virtuellen Schlammpfütze in einem Videospiel bewegt, sollte eine Dämpfungskraftart auf das Objekt 34 aufgebracht werden, solange sich das Rennauto innerhalb des Schlamms bewegt. Folglich müssen Dämpfungskräfte kontinuierlich auf das Objekt aufgebracht werden, aber keine Änderung der Art von Kraft ist erforderlich. Wenn sich das Rennauto aus der Schlammpfütze bewegt, ist eine neue Art von Kraft (d.h. eine Entfernung der Dämpfungskraft in diesem Fall) erforderlich. Die Ereignisse des Anwendungsprogramms können auch eine Änderung der Art der aufgebrachten Kraft erfordern. Kräfte können am Benutzerobjekt in Abhängigkeit von einer Kombination eines Anwendungsereignisses und der beim Schritt 108 gelesenen Sensordaten erforderlich sein. Eine andere Eingabe wie z.B. ein Benutzer, der Tasten oder andere Eingabevorrichtungen 39 an der Schnittstellenvorrichtung 14 aktiviert, kann auch die Art von Kräften, die am Objekt 34 erforderlich sind, ändern.
  • Wenn keine Änderung der Art von Kraft beim Schritt 110 aktuell erforderlich ist, kehrt der Prozess dann zum Schritt 106 zurück, um die Hauptrechneranwendung zu aktualisieren und zum Schritt 110 zurückzukehren, um wieder zu prüfen, bis eine solche Änderung der Art von Kraft erforderlich ist. Wenn eine solche Änderung erforderlich ist, wird Schritt 112 implementiert, bei dem der Hauptrechner 12 einen geeigneten Hauptrechnerbefehl zum Senden zum Mikroprozessor 26 festlegt. Die verfügbaren Hauptrechnerbefehle für den Hauptrechner 12 können jeweils einem zugehörigen Kraftempfindungsprozess entsprechen, der vom Mikroprozessor 26 implementiert wird. Hauptrechnerbefehle zum Vorsehen einer Dämpfungskraft, einer Federkraft, einer Gravitationszugkraft, einer Kraft einer holprigen Oberfläche, einer Kraft eines virtuellen Hindernisses und anderer Kräfte können beispielsweise für den Hauptrechner 12 verfügbar sein. Diese Hauptrechnerbefehle können auch eine Festlegung der speziellen Stellglieder 30 oder der Freiheitsgrade, die diese gewünschte Kraft auf das Objekt 34 aufbringen sollen, umfassen. Die Hauptrechnerbefehle können auch andere Befehlsparameterinformationen umfassen, die die durch einen speziellen Kraftempfindungsprozess erzeugte Kraft ändern könnten, wie z.B. eine Dämpfungskonstante. Der Hauptrechnerbefehl kann auch vorzugsweise die lokale Steuerung des Prozessors 26 außer Kraft setzen und Kraftwerte niedriger Ebene umfassen. Ein bevorzugtes Befehlsprotokoll und eine ausführliche Beschreibung eines Satzes von Hauptrechnerbefehlen wird nachstehend mit Bezug auf die 9 und 14 genauer beschrieben. Beim nächsten Schritt 114 sendet der Hauptrechner den Hauptrechnerbefehl über den Bus 24 zum Mikroprozessor 26. Der Prozess kehrt dann zum Schritt 106 zurück, um die Hauptrechneranwendung zu aktualisieren und zum Schritt 110 zurückzukehren, um zu prüfen, ob eine weitere Änderung der Kraft erforderlich ist.
  • Der lokale Mikroprozessor 26 implementiert den Prozess, der von Schritt 104 abzweigt und mit Schritt 116 beginnt, parallel zum vorstehend beschriebenen Hauptrechnerprozess. Beim Schritt 116 wird die Schnittstellenvorrichtung 14 aktiviert. Signale können beispielsweise zwischen dem Hauptrechner 12 und der Schnittstellenvorrichtung 14 gesandt werden, um zu bestätigen, dass die Schnittstellenvorrichtung nun aktiv ist und durch den Hauptrechner 12 gesteuert werden kann. Von Schritt 116 zweigen zwei Prozesse ab, um anzugeben, dass zwei Prozesse simultan (Multitasking) auf dem lokalen Prozessor 26 laufen. Bei einem Prozess wird Schritt 118 implementiert, bei dem der Prozessor 26 Rohdaten von den Sensoren 28 liest. Wie beim Schritt 88 von 4 beschrieben, liest der Prozessor 26 vorzugsweise Positionsdaten und keine Geschwindigkeits- oder Beschleunigungsdaten von den Sensoren 28. Bei alternativen Ausführungsbeispielen können die Sensoren 28 Geschwindigkeitssensoren und Beschleunigungsmesser zum Liefern von Geschwindigkeits- und Beschleunigungswerten vom Objekt 34 umfassen. Die beim Schritt 118 gelesenen Sensordaten können auch eine andere Eingabe wie z.B. von einer aktivierten Taste oder einem anderen Bedienelement der Schnittstellenvorrichtung 14 umfassen.
  • Beim nächsten Schritt 120 verarbeitet der Prozessor 26 die empfangenen Rohdaten zu Sensordaten. Wie beim Schritt 90 von 4 beschrieben, umfasst diese Verarbeitung vorzugsweise die zwei Schritte des Berechnens von Geschwindigkeits- und Beschleunigungsdaten aus den gefilterten Positionsdaten und des Filterns der Geschwindigkeits- und Beschleunigungsdaten. Der Prozessor 26 kann seinen eigenen lokalen Takt 21 verwenden, um die Zeitsteuerdaten zu ermitteln, die zum Berechnen der Geschwindigkeit und Beschleunigung erforderlich sind. Außerdem kann eine Geschichte von vorherigen aufgezeichneten Werten wie z.B. Positions- oder Geschwindigkeitswerten verwendet werden, um Sensordaten zu berechnen. Bei Ausführungsbeispielen, bei denen Geschwindigkeits- und/oder Beschleunigungssensoren verwendet werden, wird die Berechnung der Geschwindigkeit und/oder Beschleunigung ausgelassen. Beim nächsten Schritt 121 sendet der Prozessor 26 die verarbeiteten Sensordaten zum Hauptrechner 12 und speichert auch die Daten zum Berechnen von Kräften, wie beim zweiten Zweigprozess des Prozessors 26 beschrieben. Der Prozess kehrt dann zum Schritt 118 zurück, um Rohdaten zu lesen. Die Schritte 118, 120 und 121 werden folglich kontinuierlich implementiert, um aktuelle Sensordaten zum Prozessor 26 und zum Hauptrechner 12 zu liefern.
  • Der zweite Zweig von Schritt 116 betrifft einen "Stellgliedprozess", bei dem der Prozessor 26 die Stellglieder 30 steuert, um Kräfte zum Objekt 34 zu liefern. Der zweite Zweig beginnt mit Schritt 122, bei dem der Prozessor 26 prüft, ob ein Hauptrechnerbefehl vom Hauptrechner 12 über den Bus 24 empfangen wurde. Wenn ja, fährt der Prozess zum Schritt 124 fort, bei dem ein Kraftempfindungsprozess, der dem Hauptrechnerbefehl zugeordnet ist, ausgewählt wird. Solche Kraftempfindungsprozesse können lokal zum Mikroprozessor 26 beispielsweise im Speicher 27 wie z.B. RAM oder ROM (oder EPROM, EEPROM usw.) gespeichert werden. Folglich könnte der Mikroprozessor einen Dämpfungskraft-Empfindungsprozess auswählen, wenn der Befehl hoher Ebene angegeben hat, dass die Dämpfungskraft von diesem Kraftempfindungsprozess auf das Objekt 34 aufgebracht werden sollte. Die verfügbaren Kraftempfindungsprozesse sind vorzugsweise ähnlich zu den vorstehend mit Bezug auf 4 beschriebenen und können Algorithmen, gespeicherte Kraftprofile oder -werte, Bedingungen usw. umfassen. Bei einigen Ausführungsbeispielen können die Schritte 118, 120 und 121 zum Lesen von Sensordaten in die Kraftempfindungsprozesse für den Mikroprozessor integriert werden, so dass die Sensordaten nur gelesen werden, sobald ein Kraftempfindungsprozess ausgewählt wurde. Der Hauptrechnerbefehl kann in einigen Fällen auch einfach ein Kraftbefehl niedriger Ebene sein, der vorsieht, dass ein Kraftwert zu einem Stellglied 30 gesandt wird, in welchem Fall kein Kraftempfindungsprozess ausgewählt werden muss.
  • Nachdem ein Kraftempfindungsprozess beim Schritt 124 ausgewählt wurde, oder wenn kein neuer Hauptrechnerbefehl beim Schritt 122 empfangen wurde, wird dann Schritt 126 implementiert, in dem der Prozessor 26 einen Prozessor-Kraftbefehl niedriger Ebene (d.h. einen Kraftwert) ermittelt. Der Kraftwert wird vom Kraftempfindungsprozess und irgendwelchen anderen Daten, die für den Kraftempfindungsprozess erforderlich sind, sowie von Befehlsparametern, die in den relevanten Hauptrechnerbefehlen enthalten sind, Sensordaten und/oder Zeitsteuerdaten vom lokalen Taktgeber 29 abgeleitet. Wenn kein neuer Befehl hoher Ebene beim Schritt 122 empfangen wurde, ermittelt der Mikroprozessor 26 dann folglich einen Kraftbefehl gemäß demselben Kraftempfindungsprozess, den er vorher beim Schritt 126 verwendet hat. Außerdem kann der Hauptrechnerbefehl andere Befehlsparameterinformationen umfassen, die erforderlich sind, um einen Kraftbefehl zu ermitteln. Der Hauptrechnerbefehl kann beispielsweise die Richtung einer Kraft entlang eines Freiheitsgrades angeben.
  • Beim Schritt 128 gibt der Prozessor 26 den ermittelten Prozessor-Kraftbefehl an die Stellglieder 30 aus, um die Ausgangskraft auf den gewünschten Pegel zu setzen. Vor dem Aussenden des Kraftbefehls kann der Prozessor 26 wahlweise den Kraftbefehl in eine vom Stellglied 30 verwendbare geeignete Form umwandeln oder die Stellgliedschnittstelle 38 kann eine solche Umwandlung durchführen. Der Prozess kehrt dann zum Schritt 122 zurück, um zu prüfen, ob ein weiterer Hauptrechnerbefehl vom Hauptrechner 12 empfangen wurde.
  • Der Stellgliedprozess des Mikroprozessors 26 (Schritte 118, 120, 122, 124, 126 und 128) arbeitet somit, um Kräfte am Objekt 34 unabhängig vom Hauptrechner 12 gemäß einem ausgewählten Kraftempfindungsprozess und anderen Parametern vorzusehen. Der Kraftempfindungsprozess legt fest, wie der Prozessor-Kraftbefehl auf der Basis der jüngsten Sensordaten, die vom Mikroprozessor 26 gelesen werden, festgelegt werden soll. Da ein Kraftempfindungsprozess angibt, wie Kräfte in Abhängigkeit von der Position und anderen Parametern des Benutzerobjekts 34 aufgebracht werden sollten, kann der Prozessor Kraftbefehle niedriger Ebene ausgeben, so dass der Hauptrechner von der Verarbeitung der Hauptrechneranwendung befreit wird und nur ermitteln muss, wenn eine neue Art von Kraft ausgegeben werden muss. Dies verbessert die Kommunikationsraten zwischen dem Hauptrechner 12 und der Schnittstellenvorrichtung 14 erheblich. Außerdem weist der Hauptrechner 12 vorzugsweise die Fähigkeit auf, die lokale Steueroperation des Mikroprozessors 26 außer Kraft zu setzen und direkt berechnete oder andere Kraftwerte zu liefern, wie vorstehend mit Bezug auf 4 beschrieben. Diese Übersteuerungsbetriebsart kann auch als Kraftempfindungsprozess implementiert werden.
  • 6 ist ein schematisches Diagramm eines beispielhaften Kardanmechanismus 140 zum Vorsehen von zwei oder mehr Drehfreiheitsgraden für das Objekt 34. Der Kardanmechanismus 140 kann mit der Schnittstellenvorrichtung 14 gekoppelt sein oder mit Sensoren 28 und Stellgliedern 30 separat von den anderen Komponenten der Schnittstellenvorrichtung 14 versehen sein. Der Kardanmechanismus 140 kann durch eine Grundfläche 142 abgestützt sein, die beispielsweise eine Oberfläche des Gehäuses der Schnittstellenvorrichtung 14 sein kann (schematisch als Teil des Elements 144 gezeigt). Der Kardanmechanismus 140 ist vorzugsweise ein fünfgliedriges Gestänge, das ein Grundelement 144, Verlängerungselemente 146a und 146b und zentrale Elemente 148a und 148b umfasst. Das Grundelement 144 ist mit dem Grund 142 gekoppelt. Die Elemente des Kardanmechanismus 140 sind durch die Verwendung von Lagern oder Drehzapfen drehbar miteinander gekoppelt, wobei das Verlängerungselement 146a mit dem Grundelement 144 drehbar gekoppelt ist und sich um eine Achse A drehen kann, das zentrale Element 148a mit dem Verlängerungselement 146a drehbar gekoppelt ist und sich um eine schwebende Achse D drehen kann, das Verlängerungselement 146b mit dem Grundelement 144 drehbar gekoppelt ist und sich um eine Achse B drehen kann, das zentrale Element 148b mit dem Verlängerungselement 146b drehbar gekoppelt ist und sich um eine schwebende Achse E drehen kann, und das zentrale Element 148a mit dem zentralen Element 148b an einem Mittelpunkt P am Schnittpunkt der Achsen D und E drehbar gekoppelt ist. Die Achsen D und E sind in der Hinsicht "schwebend", als sie nicht in einer Position fest sind wie die Achsen A und B. Die Achsen A und B sind im Wesentlichen senkrecht zueinander. Der Kardanmechanismus 140 ist folglich als fünfgliedrige geschlossene Kette ausgebildet. Jedes Ende von einem Element ist mit dem Ende eines anderen Elements gekoppelt. Das fünfgliedrige Gestänge ist derart angeordnet, dass das Verlängerungselement 146a, das zentrale Element 148a und das zentrale Element 148b um die Achse A in einem ersten Freiheitsgrad gedreht werden können. Das Gestänge ist auch derart angeordnet, dass das Verlängerungselement 146b, das zentrale Element 148b und das zentrale Element 148a um die Achse B in einem zweiten Freiheitsgrad gedreht werden können.
  • Das Benutzerobjekt 34 ist ein physikalisches Objekt, das mit einem linearen Achsenelement 150 gekoppelt sein kann, oder das lineare Achsenelement 150 kann als Teil des Objekts 34 betrachtet werden. Das lineare Element 150 ist mit dem zentralen Element 148a und dem zentralen Element 148b am Schnittpunkt P der Achsen D und E gekoppelt und erstreckt sich aus der durch die Achsen D und E definierten Ebene. Das lineare Achsenelement 150 kann um die Achse A (und E) gedreht werden, indem das Verlängerungselement 146a, das zentrale Element 148a und das zentrale Element 148b in einem ersten Umdrehungsfreiheitsgrad, der als Pfeillinie 151 gezeigt ist, gedreht werden. Das Element 150 kann auch um die Achse B (und D) gedreht werden, indem das Verlängerungselement 50b und die zwei zentralen Elemente um die Achse B in einem zweiten Umdrehungsfreiheitsgrad, der durch die Pfeillinie 152 gezeigt ist, gedreht werden. Bei alternativen Ausführungsbeispielen kann das lineare Achsenelement linear entlang der schwebenden Achse C bewegt werden, was einen dritten Freiheitsgrad bereitstellt, wie durch Pfeile 153 gezeigt. Außerdem kann das lineare Achsenelement 150 bei einigen Ausführungsbeispielen um die Achse C gedreht werden, wie durch den Pfeil 155 angegeben, um einen zusätzlichen Freiheitsgrad bereitzustellen. Diese zusätzlichen Freiheitsgrade können auch mit Sensoren und Stellgliedern versehen werden.
  • Die Sensoren 28 und Stellglieder 30 können mit dem Kardanmechanismus 140 an den Verbindungspunkten zwischen Elementen der Vorrichtung gekoppelt sein und sehen eine Eingabe und Ausgabe vor, wie vorstehend beschrieben. Die Sensoren und Stellglieder können beispielsweise mit den Verlängerungselementen 146a und 146b gekoppelt sein. Das Benutzerobjekt 34 ist mit dem Mechanismus 140 gekoppelt. Das Benutzerobjekt 44 kann in beiden (oder allen drei oder vier) Freiheitsgraden bewegt werden, die vom Kardanmechanismus 140 und linearen Achsenelement 150 bereitgestellt werden. Wenn das Objekt 34 um die Achse A bewegt wird, ändert die schwebende Achse D ihre Position, und wenn das Objekt 34 um die Achse B bewegt wird, ändert die schwebende Achse E ihre Position.
  • 7 ist eine perspektivische Ansicht eines speziellen Ausführungsbeispiels einer Vorrichtung 160 mit einem Kardanmechanismus 140 und anderen Komponenten der Schnittstellenvorrichtung 14 zum Liefern einer mechanischen Eingabe und Ausgabe zum Hauptrechnersystem 12. Die Vorrichtung 160 umfasst einen Kardanmechanismus 140, Sensoren 141 und Stellglieder 143. Das Benutzerobjekt 34 ist bei diesem Ausführungsbeispiel als Steuerhebel mit einem Griffteil 162 gezeigt und ist mit dem zentralen Element 148a gekoppelt. Die Vorrichtung 160 arbeitet auf im Wesentlichen dieselbe Weise wie der mit Bezug auf 6 beschriebene Kardanmechanismus 140.
  • Der Kardanmechanismus 140 sieht eine Abstützung für die Vorrichtung 160 auf der Grundfläche 142 wie z.B. einer Tischplatte oder einer ähnlichen Oberfläche vor. Der Kardanmechanismus 140 umfasst ein Grundelement 144, Haspelantriebsmechanismen 164, Verlängerungselemente 146a und 146b, ein zentrales Antriebselement 148a und ein zentrales Verbindungselement 148b. Das Grundelement 144 umfasst ein Basiselement 166 und vertikale Stützelemente 168, die mit der Grundfläche 142 gekoppelt sind. Ein vertikales Stützelement 168 ist mit jeder Außenfläche des Basiselements 166 derart gekoppelt, dass die vertikalen Elemente 168 in einer Beziehung von im Wesentlichen 90 Grad zueinander liegen. Ein Capstan- bzw. Haspelantriebsmechanismus 164 ist vorzugsweise mit jedem vertikalen Element 168 gekoppelt. Die Haspelantriebsmechanismen 164 sind im Kardanmechanismus 140 enthalten, um einen mechanischen Vorteil bereitzustellen, ohne Reibung und Spiel in das System einzuführen. Die Trommeln 170 werden unter Verwendung eines Seils, das mit einer Seilscheibe gekoppelt ist, die durch ein Stellglied 143 angetrieben wird, gedreht.
  • Das Verlängerungselement 146a ist mit einer Haspeltrommel 170 starr gekoppelt und wird um die Achse A gedreht, wenn die Haspeltrommel 170 gedreht wird. Ebenso ist das Verlängerungselement 146b starr mit der anderen Haspeltrommel 170 gekoppelt und kann um die Achse B gedreht werden. Das zentrale Antriebselement 148a ist mit dem Verlängerungselement 146a drehbar gekoppelt und das zentrale Verbindungselement 148b ist mit einem Ende des Verlängerungselements 146b drehbar gekoppelt. Das zentrale Antriebselement 148a und das zentrale Verbindungselement 148b sind im Drehzentrum des Kardanmechanismus drehbar miteinander gekoppelt, welches der Schnittpunkt P der Achsen A und B ist. Ein Lager 172 verbindet die zwei zentralen Elemente 148a und 148b am Schnittpunkt P miteinander. Der Kardanmechanismus 140 sieht zwei Freiheitsgrade für ein Objekt 34 vor, das an oder nahe dem Mittelpunkt P der Drehung angeordnet ist, so dass das Objekt am oder nahe dem Punkt P um die Achse A und B gedreht werden kann oder eine Kombination einer Drehbewegung um diese Achsen aufweisen kann. Das Objekt 34 kann auch in anderen Freiheitsgraden gedreht oder parallelverschoben werden, wie z.B. einem linearen Freiheitsgrad entlang der Achse C oder einem Drehfreiheitsgrad um die Achse C.
  • Die Sensoren 141 und Stellglieder 143 sind vorzugsweise mit dem Kardanmechanismus 140 gekoppelt, um Eingangs- und Ausgangssignale zwischen der Vorrichtung 160 und dem Mikroprozessor 26 zu liefern. Beim beschriebenen Ausführungsbeispiel sind die Sensoren 141 und Stellglieder 143 in demselben Gehäuse als festgelegte Wandler 174 kombiniert. Die Wandler 174a und 174b sind beispielsweise bidirektionale Wandler mit optischen Codierersensoren 141 und aktiven Gleichstrom-Servomotoren 143. Passive Stellglieder können auch verwendet werden. Das Gehäuse von jedem festgelegten Wandler 174a ist vorzugsweise mit einem vertikalen Stützelement 168 gekoppelt und umfasst vorzugsweise sowohl ein Stellglied 143 zum Liefern einer Kraft im ersten Umdrehungsfreiheitsgrad um die Achse A als auch einen Sensor 141 zum Messen der Position des Objekts 34 im ersten Freiheitsgrad um die Achse A. Eine Drehwelle des Stellgliedes 174a ist mit einer Seilscheibe des Haspelantriebsmechanismus 164 gekoppelt, um eine Eingabe und Ausgabe entlang des ersten Freiheitsgrades zu übertragen. Der festgelegte Wandler 174b entspricht vorzugsweise in der Funktion und Arbeitsweise dem festgelegten Wandler 174a.
  • Das Objekt 34 ist in 7 als Steuerhebel mit einem Griffteil 126 für den Benutzer zum Greifen gezeigt. Ein Benutzer kann den Steuerhebel um die Achsen A und B bewegen; diese Bewegungen werden vom Prozessor 26 und Hauptrechnersystem 12 festgestellt. Kräfte können vorzugsweise in den zwei Freiheitsgraden aufgebracht werden, um verschiedene haptische Empfindungen zu simulieren. Wahlweise können andere Objekte 34 mit dem Kardanmechanismus 140 gekoppelt werden, wie vorstehend beschrieben.
  • 8 ist eine perspektivische Ansicht eines anderen Ausführungsbeispiels des Objekts 34 und des Stützmechanismus 180, die in Verbindung mit der Schnittstellenvorrichtung 14 verwendet werden können. Der Mechanismus 180 umfasst eine Schlitzjochanordnung zur Verwendung mit Steuerhebel-Steuereinheiten, die Fachleuten gut bekannt ist. Der Mechanismus 180 umfasst ein geschlitztes Joch 182a, ein geschlitztes Joch 182b, Sensoren 184a und 184b, Lager 186a und 186b, Stellglieder 188a und 188b und einen Steuerhebel 34. Das geschlitzte Joch 182a ist mit der Welle 189a starr gekoppelt, die sich durch das Joch erstreckt und an einem Ende dieser starr mit dem Sensor 184a gekoppelt ist. Das geschlitzte Joch 182a ist ähnlich mit der Welle 189c und dem Lager 186a am anderen Ende des Jochs gekoppelt. Das geschlitzte Joch 182a ist um die Achse L drehbar und diese Bewegung wird vom Sensor 184a erfasst. Bei alternativen Ausführungsbeispielen kann das Lager 186a als anderer Sensor wie der Sensor 184a implementiert werden. Ebenso ist das geschlitzte Joch 182b mit der Welle 189b und dem Sensor 184b an einem Ende und der Welle 189d und dem Lager 186b am anderen Ende starr gekoppelt. Das Joch 182b kann um die Achse M gedreht werden und diese Bewegung kann vom Sensor 184b erfasst werden.
  • Das Objekt 34 ist ein Steuerhebel, der an der Grundfläche 190 an einem Ende 192 drehbar befestigt ist, so dass sich das andere Ende 194 typischerweise in vier Richtungen von 90 Grad über der Oberfläche 190 in zwei Freiheitsgraden (und zusätzlichen Richtungen in anderen Ausführungsbeispielen) bewegen kann. Der Steuerhebel 34 erstreckt sich durch Schlitze 196 und 198 in den Jochen 182a bzw. 182b. Wenn der Steuerhebel 34 in irgendeiner Richtung bewegt wird, folgen die Joche 182a und 182b folglich dem Steuerhebel und drehen sich um die Achsen L und M. Die Sensoren 184a–d erfassen diese Drehung und können folglich die Bewegung des Steuerhebels 34 verfolgen. Die Stellglieder 188a und 188b ermöglichen, dass der Benutzer eine Kraftrückkopplung erfährt, wenn er den Steuerhebel 34 handhabt. Alternativ können weitere Arten von Objekten 34 anstelle des Steuerhebels verwendet werden oder mit diesem gekoppelt sein, und/oder zusätzliche Freiheitsgrade können für den Steuerhebel 34 bereitgestellt werden. Der Steuerhebel kann beispielsweise mit einem Drehfreiheitsgrad um eine Achse K versehen sein, wie durch den Pfeil 193 angegeben. Sensoren und/oder Stellglieder können auch für solche zusätzlichen Freiheitsgrade enthalten sein.
  • Andere Ausführungsbeispiele von mechanischen Schnittstellenvorrichtungen und Wandlern können auch bei der Schnittstellenvorrichtung 14 verwendet werden, um eine mechanische Eingabe/Ausgabe für das Benutzerobjekt 34 vorzusehen. Mechanische Vorrichtungen, die einen oder mehrere lineare Freiheitsgrade für das Benutzerobjekt 34 vorsehen, können beispielsweise verwendet werden. Außerdem können passive Stellglieder mit einem bestimmten Betrag an "Spiel" versehen werden.
  • 9 ist eine Tabelle 300, die eine Anzahl von bevorzugten Hauptrechnerbefehlen zeigt, die beim Ausführungsbeispiel von 5 verwendet werden können, wobei der Hauptrechner 12 Hauptrechnerbefehle hoher Ebene zum lokalen Mikroprozessor 26 sendet, der lokale Kraftempfindungsprozesse gemäß den Hauptrechnerbefehlen implementiert. Wie vorher erörtert, können niedrige Kommunikationsraten auf dem Bus 24 (1) die Leistung, insbesondere die Genauigkeit und den Realismus, der Kraftrückkopplung behindern. Der lokale Mikroprozessor kann Kraftempfindungsprozesse auf der Basis von Hauptrechnerbefehlen unabhängig vom Hauptrechner implementieren, wobei somit erforderlich ist, dass weniger Signale über den Bus 24 übertragen werden. Vorzugsweise sollte eine Kommunikationssprache oder ein Kraftrückkopplungsprotokoll für die Übertragung von Hauptrechnerbefehlen vom Hauptrechnerprozessor 16 zum lokalen Prozessor 26 normiert werden, um die effiziente Übertragung von Überwachungsbefehlen hoher Ebene (Hauptrechnerbefehlen) zum lokalen Prozessor 26 zu ermöglichen.
  • Ein bevorzugtes Ausführungsbeispiel enthält zwei Hauptbetriebsarten oder Betriebs-"Steuerparadigmen" für die Kraftrückkopplungs-Schnittstellenvorrichtung 14; nämlich Ratensteuerung und Positionssteuerung. Diese Betriebsarten implizieren ein Klassifizierungsschema für Hauptrechnerbefehle, die durch Befehlsparameter parametrisiert werden. Obwohl der Unterschied zwischen der Ratensteuerung und der Positionssteuerung für den Benutzer im Allgemeinen fein ist, während er mit einer Anwendung in Wechselwirkung steht, kann der Unterschied groß sein, wenn eine Kraftrückkopplungsinformation dargestellt wird. Einige der Befehle können entweder als Ratensteuerungs- oder Positionssteuerungsbefehle verwendet werden. Andere Kraftrückkopplungsbefehle können zusätzlich zu oder als Alternativen zu den folgenden Muster-Kraftrückkopplungsbefehlen entworfen werden.
  • Die Ratensteuerung bezieht sich auf eine Benutzerobjektabbildung, bei der die Verlagerung des Benutzerobjekts 34 entlang eines oder mehrerer vorgesehener Freiheitsgrade abstrakt auf die Bewegung einer computersimulierten gesteuerten Entität, wie z.B. eines Flugzeugs, eines Rennautos oder eines anderen simulierten "Spielers" oder eines vom Spieler gesteuerten graphischen Objekts, abgebildet wird. Die Ratensteuerung ist eine Abstraktion, die die Kraftrückkopplung weniger intuitiv macht, da keine direkte physikalische Abbildung zwischen der Objektbewegung und der befohlenen Bewegung der simulierten Computerentität besteht. Im Gegensatz dazu bezieht sich die Positionssteuerung auf eine Benutzerobjektabbildung, bei der die Verlagerung des Steuerhebelgriffs oder eines anderen vom Benutzer bedienbaren Objekts direkt die Verlagerung einer simulierten Computerentität vorgibt, so dass die grundlegende Beziehung zwischen den Steuerhebelverlagerungen und den Computerverlagerungen vorliegt. Folglich sind die meisten Ratensteuerparadigmen von der Positionssteuerung insofern grundlegend verschieden, als das Benutzerobjekt (Steuerhebel) in einer gegebenen Position stetig gehalten werden kann, aber die gesteuerte simulierte Entität mit einer gegebenen befohlenen Geschwindigkeit in Bewegung ist, während das Positionssteuerparadigma nur ermöglicht, dass sich die gesteuerte Entität in Bewegung befindet, wenn sich das Benutzerobjekt in Bewegung befindet. Positionssteuerungs-Hauptrechnerbefehle werden nachstehend mit Bezug auf 14 genauer beschrieben, während Ratensteuerungsbefehle gegenwärtig mit Bezug auf 9 beschrieben werden.
  • Eine übliche Form einer Ratensteuerung ist beispielsweise eine von einer Geschwindigkeit abgeleitete Abstraktion, bei der die Verlagerung des Benutzerobjekts wie z.B. eines Steuerhebelgriffs eine Geschwindigkeit der simulierten Computerentität, wie z.B. eines Fahrzeugs oder eines anderen auf dem Anzeigebildschirm 20 angezeigten graphischen Objekts, in einer simulierten Umgebung vorgibt. Je mehr der Steuerhebelgriff aus der ursprünglichen Position bewegt wird, desto größer ist die Geschwindigkeit des gesteuerten Fahrzeugs oder des vom Spieler gesteuerten graphischen Objekts. Andere übliche Ratensteuerparadigmen, die in Computerspielen verwendet werden, werden durch die Beschleunigung gesteuert. Ratensteuerungs-Kraftrückkopplungsbefehle entsprechen grob Kräften, die auf ein Fahrzeug oder eine andere simulierte Entität, die durch die simulierte Umgebung gesteuert wird, durch die Kraftrückkopplungs-Schnittstellenvorrichtung 14 ausgeübt werden würden. Solche Kräfte werden als fahrzeugzentrische Kräfte bezeichnet.
  • Hierin werden Ratensteuerbefehle in "Bedingungen" und "Überlagerungen" unterteilt, obwohl andere Klassifizierungen in alternativen Ausführungsbeispielen verwendet werden können. Bedingungen erstellen ein grundlegendes physikalisches Modell oder Hintergrundempfindungen über das Benutzerobjekt, einschließlich simulierter Steifigkeit, simulierter Dämpfung, simulierter Trägheiten, Unempfindlichkeitsbereichen, in denen sich simulierte Kräfte vermindern, und Richtungseinschränkungen, die die Funktionalität des physikalischen Modells vorgeben. Mehrere Bedingungen können in einem einzelnen Befehl festgelegt werden, um Bedingungskräfte wirksam zu überlagern. Überlagerungen sind dagegen Kräfte, die zusätzlich zu den Bedingungen im Hintergrund aufgebracht werden können. Eine beliebige Anzahl von Überlagerungen können vorzugsweise zusätzlich zu Bedingungskräften vorgesehen werden. Eine Bedingung kann durch einen Bedingungsbefehl oder durch mehrere Bedingungsbefehle festgelegt werden.
  • Nun werden Beschreibungen für verschiedene Arten von Kräften 302 vorgesehen, wie in Tabelle 300 angeführt, die vom Mikroprozessor 26 aus Hauptrechnerbefehlen implementiert werden können. Diese Kräfte umfassen:
    Rückstellkraft, Rückstellfeder, Vektorkraft, Schwingung, träges Festhängen, Taumeln, instabil, Tastenreflexruck und Einrastkraft. Die Rückstellkraft, die Rückstellfeder, das träge Festhängen und instabile Kräfte werden als Bedingungskräfte betrachtet. Die Vektorkraft, die Schwingung, das Taumeln und die Tastenreflexruckkräfte werden als Überlagerungskräfte betrachtet.
  • Die in Tabelle 300 gezeigten Kräfte 302 können mit Hauptrechnerbefehlen implementiert werden, die vom Hauptrechner 12 zum Mikroprozessor 26 geliefert werden. Beispiele 304 von Hauptrechnerbefehlen und ihre Syntax sind in Tabelle 300 für jede Art von Kraft 302 gezeigt. Beim beschriebenen Ausführungsbeispiel umfassen die Hauptrechnerbefehle 304 vorzugsweise einen Befehlsteil 306 und eine Anzahl von Befehlsparametern 308. Die Befehle 304 geben die Art von Kraft an, die der Hauptrechner 12 dem Prozessor 26 befiehlt zu implementieren. Dieser Befehlsteil kann einen entsprechenden Kraftempfindungsprozess aufweisen, den der Prozessor 26 aus dem Speicher 27 abrufen und implementieren kann. Die Befehlsparameter 304 sind Werte oder Indikatoren, die vom Hauptrechner 12 geliefert werden und die die Art von Kraft spezifisch auslegen und/oder modifizieren, die vom Befehlsteil 304 angegeben wird. Für die folgenden bevorzugten Rastensteuerungs-Ausführungsbeispiele steuern die meisten der Befehlsparameter verschiedene Kräfte auf dieselbe Weise. Der Betragsparameter ist ein Prozentsatz eines maximalen Betrags entsprechend einer maximalen Kraft, die von den Stellgliedern 30 ausgegeben werden kann. Der Dauerparameter entspricht gewöhnlich einem Zeitintervall zur Anwendung des speziellen Kraftmodells oder kann unbestimmt angewendet werden. Der Stilparameter kann eine Richtung, in der das Kraftmodell angewendet werden soll, und/oder einen Freiheitsgrad, entlang dessen das Kraftmodell angewendet werden soll, auswählen. Obwohl in 9 nicht aufgelistet, können alle beschriebenen Arten von Kräften 302 zusätzliche Parameter besitzen oder andere Eigenschaften in die aufgelisteten Parameter integrieren. Ein "Unempfindlichkeitsbereichs"-Parameter könnte eine Größe eines Bereichs festlegen, in dem eine Kraft klein oder Null wäre. Ein Parameter kann enthalten sein, der angibt, ob eine Kraft entlang eines Freiheitsgrades bidirektional oder unidirektional ist. Eine Unterklasse 310 gibt eine Klassifizierung der Arten von Kräften 302 entweder als Bedingungen oder Überlagerungen an, wie vorstehend erläutert.
  • Die 10a–c sind Graphen, die Profile der Kraft als Funktion der Verlagerung für eine Rückstellkraft darstellen. Die Kraft im Graphen 312 von 10a ist bidirektional, wobei die Kraft auf der rechten Seite der vertikalen Achse in einer Richtung entlang eines Freiheitsgrades aufgebracht wird und die Kraft auf der linken Seite der vertikalen Achse in der entgegengesetzten Richtung entlang dieses Freiheitsgrades aufgebracht wird. Die im Graphen 314 von 10b gezeigte Kraft ist unidirektional. Ob die Kraft unidirektional oder bidirektional ist, wird vorzugsweise beispielsweise mit dem Stilparameter 308 des in Tabelle 300 von 8 gezeigten Befehls 306 festgelegt. Außerdem werden die gewünschten Freiheitsgrade, entlang derer die Rückstellkraft aufgebracht werden soll, vorzugsweise auch im Stilparameter festgelegt.
  • Eine auf das Benutzerobjekt 34 aufgebrachte Rückstellkraft zeigt immer zurück in Richtung einer Ursprungsposition 0 (oder "neutralen Position") des Benutzerobjekts entlang eines Freiheitsgrades. Die Ursprungsposition für einen Steuerhebel kann beispielsweise die Mittelposition des Steuerhebels sein, wie in den 7 und 8 gezeigt. Der Betrag der Rückstellkraft, der durch den Betragsbefehlsparameter festgelegt wird, bleibt im Allgemeinen in beiden Richtungen für den Bereich 316 entlang des Freiheitsgrades des Benutzerobjekts konstant. Der maximale Kraftbetrag F ist vorzugsweise auf etwa 75 % der maximalen möglichen Ausgangskraft in einem ausgewählten Freiheitsgrad begrenzt, so dass Rucke und Schwingungen auf die Rückstellempfindung überlagert werden können (nachstehend beschrieben). Wenn das Objekt in Richtung der Ursprungsposition bewegt wird, ist die aufgebrachte Kraft konstant, bis das Benutzerobjekt innerhalb eines lokalisierten Bereichs R um die Ursprungsposition bewegt wird. Wenn sich das Benutzerobjekt im lokalisierten Bereich R befindet, fällt die aufgebrachte Kraft schnell auf Null oder einen kleinen Wert. Folglich sieht das Rückstellkraftprofil eine konstante "Rückstellempfindung vor, die das Benutzerobjekt wieder in die Ursprungsposition drückt, wenn sich das Objekt im Bereich 316 befindet. Diese Rückstellkräfte vermindern sich dann oder verschwinden, wenn sich das Objekt der Ursprungsposition nähert und diese erreicht.
  • In 10c ist die Rückstellkraft ähnlich zur Kraft in 10a gezeigt, außer dass die aufgebrachte Kraft in einem erweiterten Bereich 318 um die Ursprungsposition etwa Null ist. Der Bereich 318 ist als "Unempfindlichkeitsbereich" bekannt und ermöglicht dem Benutzer, eine gewisse Freiheit zu haben, um das Objekt 34 um einen kurzen Abstand um den Ursprung zu bewegen, bevor Kräfte aufgebracht werden. Eine Rückstellkraftempfindung kann sehr gut in einem Ratensteuerparadigma auf die Situation angewendet werden, dass eine Wand oder irgendein anderes Hindernis getroffen wird, während ein simuliertes Fahrzeug gesteuert wird.
  • Die 11a11c sind Graphen, die Profile der Kraft als Funktion der Verlagerung für eine Rückstellfederkraft darstellen. Anstatt einen konstante Betrag über einen Großteil ihrer positiven oder negativen Verlagerung aufrechtzuerhalten, wie durch die Rückstellkraft von 10a10c vorgesehen, ändert sich eine Rückstellfederkraft linear über einen merklichen Teil der Verlagerung des Benutzerobjekts und ist zum Abstand des Objekts 34 von der Ursprungsposition 0 proportional. Eine Rückstellfederkraft, die auf das Benutzerobjekt aufgebracht wird, zeigt immer zurück in Richtung der neutralen Position entlang eines Freiheitsgrades. Der Graph 320 von 11a zeigt den bidirektionalen Fall und der Graph 322 von 11b zeigt den unidirektionalen Fall. Ein Unempfindlichkeitsbereich, der durch einen Unempfindlichkeitsbereichsparameter festgelegt wird, ist um die Ursprungsposition vorgesehen, wie im Graphen 324 von 11c gezeigt. Die Rückstellfederkraft kann einen Federkoeffizientenparameter aufweisen, um eine gewünschte "Steifigkeit" des Objekts 34 zu beschreiben.
  • Die träge Kraft erzeugt eine Dämpfungskraft am Benutzerobjekt 34 mit einem Betrag, der zur Geschwindigkeit des Benutzerobjekts, wenn es vom Benutzer bewegt wird, proportional ist. Ein Beispiel dieser Art von Dämpfungskraft wurde vorstehend mit Bezug auf Schritt 82 von 4 beschrieben. Der Grad an "Viskosität" der trägen Kraft kann durch einen viskosen Dämpfungskoeffizienten festgelegt werden, der als Prozentsatz eines maximalen Dämpfungskoeffizienten ausgedrückt werden kann. Die träge Festhängkraft eignet sich besonders für Ratensteuerungsanwendungen, um beispielsweise die Steuerung eines sehr schweren Fahrzeugs zu simulieren, das schlecht auf die Bewegung des Benutzerobjekts reagiert. Die instabile Kraft erzeugt eine umgekehrte Pendelstil-Instabilität. Alternativ wird die instabile Kraft an einer Feder mit einer negativen Federkonstante (einer instabilen oder divergierenden Feder) modelliert. Eine Kraft wird auf das Benutzerobjekt in einer Richtung von der Ursprungsposition des Objekts weg aufgebracht und wird erhöht, wenn das Benutzerobjekt weiter von der Ursprungsposition weg bewegt wird. Dies erzeugt eine Kraft, die es schwierig macht, dass der Benutzer das Objekt in die Ursprungsposition bringt. Diese Kraft kann als weitere mit einem Fahrzeug in Beziehung stehende Empfindung verwendet werden und könnte eine Rückstellfederkraft ersetzen, wenn beispielsweise eine Führungssteuerung eines simulierten Fahrzeugs beschädigt ist.
  • Bei alternativen Ausführungsbeispielen können die vorstehend beschriebenen Bedingungskräfte unter Verwendung von nur einem allgemeinen Hauptrechnerbefehl mit einer Anzahl von Parametern, um die Eigenschaften der Bedingungskräfte zu steuern, befohlen werden.
  • Die Bedingungsbefehle können im Hintergrund vorgesehen werden, während Überlagerungsbefehle zusätzlich zu oder "über" den Bedingungskräften angewendet werden. Eine träge Dämpfungskraft kann beispielsweise als Hintergrundkraft zum Benutzerobjekt geliefert werden und eine "Ruck"-Überlagerungskraft kann über der trägen Kraft befohlen werden, um eine schnelle, ruckartige Bewegung am Benutzerobjekt für einige Sekunden vorzusehen. Überlagerungskräfte können natürlich auch ausschließlich aufgebracht werden, wenn keine anderen Kräfte aufgebracht werden, oder können andere, vorher befohlene Kräfte aufheben, falls erwünscht. Die in 9 gezeigten Beispiel-Überlagerungskräfte werden nachstehend beschrieben.
  • 12 ist ein Graph 326, der ein Vektorkraftmodell darstellt. Eine Vektorkraft ist ein Überlagerungsbefehl und kann folglich zusätzlich zu den vorstehend beschriebenen Bedingungskräften angewendet werden. Es handelt sich um eine allgemeine Kraft, die auf den Steuerhebel in einer gegebenen Richtung aufgebracht wird, die durch einen Richtungsbefehlsparameter festgelegt wird. 12 zeigt eine zweidimensionale Darstellung der Vektorkraft in einer Beispielrichtung in der X-Y-Ebene eines Benutzerobjekts mit zwei Freiheitsgraden.
  • Die 13a13b sind Graphen, die Profile der Kraft als Funktion der Zeit für eine Schwingungskraft darstellen. 13a ist ein Graph 328, der eine bidirektionale Schwingungskraft zeigt, während 13b ein Graph 330 ist, der eine unidirektionale Schwingungskraft zeigt. Der in 9 gezeigte Schwingungsbefehl nimmt Betrags-, Frequenz-, Stil-, Richtungs- und Dauerbefehlsparameter an. Der Frequenzparameter kann als Prozentsatz einer maximalen Frequenz implementiert werden und ist zu einem Zeitintervall einer Periode TP umgekehrt proportional. Der Richtungsbefehlsparameter kann als Winkel oder Freiheitsgrad festgelegt werden. Der Stilparameter kann angeben, ob die Schwingungskraft unidirektional oder bidirektional ist. Außerdem kann ein Tastverhältnisparameter bei alternativen Ausführungsbeispielen vorgesehen werden, der den Prozentsatz eines Zeitraums angibt, in dem die Schwingungskraft aufgebracht wird. Ein Befehlsparameter kann auch enthalten sein, um die "Form" oder das Profil der Schwingungswellenform in der Zeitachse festzulegen, wobei eine von einer vorbestimmten Anzahl von Formen ausgewählt werden kann. Die Kraft könnte beispielsweise als sinusförmige Kraft, als sägezahnförmige Kraft, als Rechteckwellenformkraft usw. festgelegt werden.
  • Ein Taumelkraftparadigma ist eine weitere Überlagerungskraft, die vom Hauptrechner 12 befohlen werden kann. Diese Kraft erzeugt eine zufällige (oder für den Benutzer scheinbar zufällige) Kraftempfindung außer dem Gleichgewicht am Benutzerobjekt. Sie kann beispielsweise eine unberechenbare Steuerung für ein beschädigtes Fahrzeug simulieren. Ein Stilparameter könnte auch eine Art von Taumelkraft von einer vorbestimmten Liste von verschiedenen Arten festlegen.
  • Die Ruckkraft ist typischerweise eine kurze Kraft mit großem Betrag, die am Benutzerobjekt ausgegeben wird, und kann beispielsweise verwendet werden, um den Benutzer über ein Ereignis oder ein simuliertes Objekt in der Computerumgebung zu benachrichtigen. Die Ruckkraft kann als Überlagerungskraft verwendet werden, die zusätzlich zu irgendwelchen gültigen Bedingungskräften gespürt werden kann. Typische Parameter umfassen den Betrag der Kraft des Rucks, die Dauer des Rucks und die Richtung (en) oder Freiheitsgrad(e), in denen der Ruck aufgebracht wird, welche als Winkel oder spezielle Freiheitsgrade festgelegt werden können.
  • Die Tastenkraft ist keine tatsächliche Kraft, sondern kann als Befehl zum Auslösen anderer Kräfte verwendet werden, wenn eine Eingabevorrichtung 39 vom Benutzer aktiviert wird. In vielen Spielsituationen kann es beispielsweise vorteilhaft sein, eine Kraft als direkte Reaktion auf das Drücken einer Taste oder einer anderen Eingabevorrichtung 39 an der Schnittstellenvorrichtung 14 auszulösen, anstatt die Kraft durch einen Hauptrechnerbefehl nach der Verarbeitung der gedrückten Taste am Hauptrechner 12 zu erzeugen.
  • Eine übliche Kraft zur Verwendung in Verbindung mit einem Tastenbefehl ist beispielsweise die Ruckkraft. Ein spezieller Befehl, z.B. BUTTON_JOLT, kann geliefert werden, um eine Ruckkraft zu veranlassen, sobald eine festgelegte Taste gedrückt wird, und die Tasten- und Ruckbefehlsparameter umfasst. Wenn ein Tastenruckbefehl vom Mikroprozessor 26 empfangen wird, kann der Mikroprozessor eine Tastenprüfung als Hintergrundprozess abarbeiten, bis ihm befohlen wird, den Tastenhintergrundprozess zu beenden. Wenn der Mikroprozessor 26 anhand der Sensordaten feststellt, dass der Benutzer eine Taste gedrückt hat, kann die Ruckkraft folglich beliebigen existierenden Kräften, die ausgegeben werden, überlagert werden.
  • Der Tastenbefehl aktiviert den Mikroprozessor 26, um eine Kraft auszugeben, wenn die andere Eingabevorrichtung 39 aktiviert wurde. Der Tastenbefehl kann eine Anzahl von Befehlsparametern annehmen, einschließlich beispielsweise Tasten- und Frequenzparameter von automatischer Aktivierung (zusätzlich zu irgendwelchen Befehlsparametern, die für die gewünschte Kraft, die ausgegeben werden soll, wenn die Taste gedrückt wird, spezifisch sind). Der Tastenparameter wählt die spezielle(n) Taste(n) aus, die der Mikroprozessor 26 prüft, ob sie durch den Benutzer aktiviert werden, und die die gewünschten Kräfte liefern. Ein Steuerhebel kann beispielsweise mehrere Tasten aufweisen und der Softwareentwickler kann eine Kraft nur dann liefern wollen, wenn eine spezielle dieser Tasten gedrückt wird. Ein Dauerparameter kann festlegen, wie lange der Ruck dauert, nachdem die Taste gedrückt wird. Der Frequenzparameter für "automatische Aktivierung" legt die Frequenz einer sich wiederholenden Kraft fest, wenn der Benutzer eine Taste niederhält. Wenn der Benutzer beispielsweise eine spezielle Taste niederhält, kann der Mikroprozessor automatisch eine Ruckkraft wiederholen, nachdem ein vorbestimmtes Zeitintervall vergangen ist, nachdem der Benutzer die Taste zum ersten Mal gedrückt hat. Der Parameter für automatische Aktivierung kann auch wahlweise festlegen, ob das Merkmal der automatischen Aktivierung für eine spezielle Taste verwendet wird, und das gewünschte Zeitintervall festlegen, bevor die sich wiederholenden Kräfte aufgebracht werden.
  • 14 ist eine Tabelle 332, die eine Anzahl von bevorzugten Positionssteuer-Hauptrechnerbefehlen zeigt, die beim Ausführungsbeispiel von 5 verwendet werden können. Hierin bezieht sich "Positionssteuerung" auf eine Abbildung eines Benutzerobjekts, bei der die Verlagerung des Steuerhebelgriffs oder eines anderen Benutzerobjekts direkt die Verlagerung einer vom Computer simulierten Entität oder eines vom Computer simulierten Objekts vorgibt. Die Abbildung kann einen willkürlichen Skalierungsfaktor aufweisen oder sogar nicht-linear sein, aber die grundlegende Beziehung zwischen den Benutzerobjektverlagerungen und den Computerobjekt- oder -entitätsverlagerungen sollte vorliegen. Unter einer Positionssteuerungsabbildung bewegt sich die vom Computer gesteuerte Entität nicht, wenn nicht das Benutzerobjekt in Bewegung ist; ein statisches Benutzerobjekt gibt statische Befehle vom Hauptrechner 12 zum Mikroprozessor 26 vor.
  • Die Positionssteuerung ist keine populäre Abbildung für herkömmliche Computerspiele, sondern wird in anderen Anwendungen wie z.B. den hierin offenbarten Ausführungsbeispielen der graphischen Benutzerschnittstelle (GUI) wirksam verwendet. Die Positionssteuerung ist eine intuitive und wirksame Metapher für Kraftrückkopplungswechselwirkungen, da sie vielmehr eine direkte physikalische Abbildung als ein abstraktes Steuerparadigma ist. Mit anderen Worten, da das Benutzerobjekt dieselben physikalischen Bedienungen wie die innerhalb des Computers gesteuerte Entität erfährt, ermöglicht die Positionssteuerung, dass physikalische Computersimulationen direkt als realistische Kraftrückkopplungsempfindungen reflektiert werden. Beispiele der Positionssteuerung in Computerumgebungen könnten die Steuerung eines Schlägers in einem Tennisspiel vom Ping-Pong-Stil oder die Steuerung eines Cursors in einer GUI oder einer Windows-Desktop-Umgebung sein. Im Gegensatz zu den fahrzeugzentrischen Kräften der Ratensteuerung entspricht die Positionssteuerungs-Kraftrückkopplung ungefähr Kräften, die direkt vom Benutzer wahrgenommen werden würden. Diese sind "benutzerzentrische" Kräfte.
  • Nun werden Beschreibungen für verschiedene Arten von Positionssteuerungskräften 334 vorgesehen, wie in Tabelle 332 angegeben, die vom Mikroprozessor 26 aus Hauptrechnerbefehlen implementiert werden können. Diese Kräfte umfassen: Vektor, Nut, Vertiefung, Textur, Barriere, Feld, Schläger und Tastenreflexruck. Viele der Beispiele 336 von Hauptrechnerbefehlen, die diesen Kräften entsprechen, verwenden Betrags- und Stilparameter, wie mit Bezug auf die Ratensteuerparadigmen erörtert. Wie bei den Ratensteuerbefehlen weisen Befehlsparameter mit demselben Namen im Allgemeinen dieselben Eigenschaften für verschiedene Hauptrechnerbefehle auf. Der Dauerparameter wird jedoch typischerweise für Positionssteuerbefehle nicht so sehr wie für Ratensteuerbefehle verwendet, da die Dauer der Positionssteuerkräfte typischerweise in Abhängigkeit von der aktuellen Position des Benutzerobjekts angewendet wird. Die Positionssteuerkraftmodelle bleiben folglich typischerweise in Kraft, bis der Hauptrechner 12 einen neuen Hauptrechner-Kraftbefehl oder einen Löschbefehl ausgibt. Bei alternativen Ausführungsbeispielen kann ein Dauerparameter verwendet werden.
  • Bevorzugte Parametrisierungen für die beschriebenen Positionssteuerbefehle sind in 14 zusammengefasst. Alle nachstehend aufgelisteten Kräfte können zusätzliche Befehlsparameter umfassen, wie z.B.
  • Unempfindlichkeitsbereichsparameter, oder andere Eigenschaften in die in 14 aufgelisteten Parameter integrieren. Ähnlich zu den in 9 gezeigten Hauptrechnerbefehlen umfassen die Hauptrechnerbefehle 336 vorzugsweise einen Befehlsteil 338 und eine Anzahl von Befehlsparametern 340. Die Befehle 336 geben die Art von Kraft an, die der Hauptrechner 12 dem Prozessor 26 zu implementieren befiehlt. Dieser Befehlsteil kann einen entsprechenden Kraftempfindungsprozess aufweisen, den der Prozessor 26 aus dem Speicher 27 abrufen und implementieren kann. Die Befehlsteile 338 können in theoretisch jeglicher Form festgelegt werden.
  • Eine Vektorkraft ist eine allgemeine Kraft mit einem Betrag und einer Richtung. Siehe 12 für eine Polardarstellung der Vektorkraft. Die meisten Positionssteuerempfindungen werden vom Programmierer/Entwickler unter Verwendung eines Vektorkraftbefehls und von geeigneten Befehlen und Programmiergebilden erzeugt. Ein Dauerparameter ist typischerweise nicht erforderlich, da der Hauptrechner 12 oder Mikroprozessor 26 die Kraft auf der Basis von Benutzerobjektbewegungen und nicht der Zeit beenden oder modifizieren kann.
  • 15 ist ein Graph 342, der eine Beziehung der Kraft als Funktion der Verlagerung für eine Nutkraft der vorliegenden Erfindung zeigt. Die Nutkraft sieht eine lineare Arretierungsempfindung entlang eines gegebenen Freiheitsgrades vor, die durch Rampen 344 gezeigt ist. Das Benutzerobjekt fühlt sich an, als ob es in einer "Nut" eingefangen wird, wobei eine Rückstellkraft entlang des Freiheitsgrades besteht, um den Stab in der Nut zu halten. Diese Rückstellkraftnut ist um eine mittlere Nutposition C zentriert, die sich an der aktuellen Stelle des Benutzerobjekts befindet, wenn der Hauptrechnerbefehl empfangen wurde. Alternativ kann die Stelle der mittleren Nutposition von einem Befehlsparameter entlang eines oder mehrere Freiheitsgrade festgelegt werden. Wenn der Benutzer versucht, das Benutzerobjekt aus der Nut zu bewegen, wird folglich eine Widerstandskraft aufgebracht.
  • Der Betrags- (Steifigkeits-) Parameter legt das Ausmaß der Kraft oder des Widerstandes, die/der aufgebracht wird, fest. Wahlweise kann ein "Ausschnapp"-Merkmal innerhalb des Nutkraftempfindungsprozesses implementiert werden, wobei die Nutkräfte abschalten, wenn das Benutzerobjekt von der Nut um einen gegebenen Ausschnappabstand abweicht, der als Abstand S gezeigt ist. Folglich würde der Mikroprozessor 26 einen Nutbefehl mit einem Schnappabstandsbetrag empfangen. Wenn der Mikroprozessor erfasst, dass sich das Benutzerobjekt außerhalb dieses Schnappabstandes bewegt, schaltet er die Nutkräfte aus. Dieses Ausschnappmerkmal kann gleichermaßen gut vom Hauptrechner 12 implementiert werden, der einen Löschbefehl sendet, um die Kräfte abzuschalten. Ein Unempfindlichkeitsbereich DB kann auch vorgesehen werden, um zu ermöglichen, dass sich das Benutzerobjekt nahe der mittleren Nutposition C frei bewegt, die mit einem Unempfindlichkeitsbereichs-Befehlsparameter festgelegt wird. Ein Stilbefehlsparameter gibt die Orientierung der Nut entlang eines oder mehrerer Freiheitsgrade (z.B. horizontal, vertikal, diagonal) an. Horizontale und vertikale Nuten können beispielsweise nützlich sein, um Kräfte für Bildlaufleisten in Fenstern vorzusehen. Ein Benutzer, der einen Cursor in einer graphischen Benutzerschnittstelle bewegt, kann Nutkräfte spüren, die den Cursor und das Benutzerobjekt in Richtung der Mitte der Bildlaufleiste bewegen. Der Unempfindlichkeitsbereich gibt dem Benutzer Raum, um den Cursor innerhalb des Bildlaufleistenbereichs zu bewegen. Der Ausschnappabstand kann verwendet werden, um den Cursor/das Benutzerobjekt von Kräften zu befreien, sobald der Cursor aus dem Bildlaufleistenbereich bewegt wird.
  • Ein Divot besteht im Wesentlichen aus zwei (oder mehr) senkrechten Nuten, die Rückstellkräfte in mehr als einem Freiheitsgrad bereitstellen. Dies stellt die Empfindung einer Punktarretierung entlang eines gegebenen Freiheitsgrades bereit. Wenn das Divot beispielsweise in zwei Freiheitsgraden vorgesehen ist, dann fühlt sich das Benutzerobjekt an, als ob es in einer kreisförmigen Vertiefung eingefangen worden ist. Das Benutzerobjekt wird an einem Punkt festgehalten, an dem eine Rückstellkraft entlang beider Achsen besteht, um das Benutzerobjekt an dem Punkt zu halten. Das Ausschnappmerkmal der Nutkraft kann auch für das Divot implementiert werden. Außerdem kann das Unempfindlichkeitsbereichsmerkmal der Nut für den Divotbefehl vorgesehen werden.
  • Eine Texturkraft simuliert eine Oberflächeneigenschaft, wie vorstehend mit Bezug auf 4 beschrieben. Eine Textur ist eine räumlich variierende Kraft (im Gegensatz zu einer Schwingung, einer zeitlich variierenden Kraft), die die Kraft simuliert, die beispielsweise gespürt wird, wenn ein Stab über ein Gitter bewegt wird. Andere Arten von Texturen können auch simuliert werden. Das Benutzerobjekt muss bewegt werden, um die Texturkräfte zu spüren, d.h. jeder "Höcker" des Gitters weist eine spezielle Position im Freiheitsgrad auf. Die Texturkraft weist mehrere Eigenschaften auf, die durch einen Programmierer/Entwickler unter Verwendung des Hauptrechnerbefehls und von Befehlsparametern festgelegt werden können. Diese Befehlsparameter umfassen vorzugsweise einen Betrag, einen Raster und einen Stil. Der Betrag legt das Ausmaß der Kraft fest, das auf das Benutzerobjekt bei jedem "Höcker" des Gitters aufgebracht wird. Der Raster ist grundsätzlich der Abstand zwischen jedem der Gitterhöcker. Der Stilbefehlsparameter kann eine Orientierung der Textur festlegen. Der Stil kann beispielsweise ein horizontales Gitter, ein vertikales Gitter oder ein diagonales Gitter (oder eine Überlagerung dieser Gitter) festlegen. Ferner kann der Stilparameter festlegen, ob die Textur bidirektional oder unidirektional entlang eines Freiheitsgrades gespürt wird. Alternativ können zusätzliche Befehlsparameter vorgesehen werden, um die Position der "Höcker" der Texturkraft zu steuern. Beispielsweise kann eine Information enthalten sein, um den Abstand zwischen Höckern zu befehlen, um ihn exponentiell über einen Abstand zu verändern oder gemäß einer festgelegten Formel zu verändern. Alternativ könnte sich der Texturabstand zufällig ändern. Bei noch weiteren Ausführungsbeispielen können die Befehlsparameter eines von mehreren verfügbaren Standard-Texturmustern festlegen, die der Mikroprozessor 26 aus dem Speicher abrufen kann.
  • Eine Barrierenkraft simuliert, wenn sie befohlen wird, eine Wand oder ein anderes Hindernis, das an einer Stelle im Benutzerobjektraum angeordnet ist, und wurde vorstehend mit Bezug auf 4 beschrieben. Der Hauptrechnerbefehl kann die Härte der Barriere (Betrag der aufgebrachten Kraft), den Ort der Barriere entlang des Freiheitsgrades und den Schnappabstand oder die Dicke der Barriere festlegen. Eine Barriere kann unter Verwendung einer Federkonstante auch mit Nachgiebigkeit oder Elastizität versehen werden. Horizontale Barrieren und vertikale Barrieren können als separate Hauptrechnerbefehle vorgesehen werden, falls erwünscht. Wie im Graphen 346 von 16 angegeben, weist eine Barrierenkraft nur eine endliche Dicke auf. Die Kraft nimmt steil zu, wenn das Benutzerobjekt näher in die Barriere bewegt wird (am Punkt B vorbei). Der Durchschnappabstand legt die Größe des Bereichs fest, in dem die Barriere vom Benutzer gespürt wird. Wenn das Benutzerobjekt in die Barriere bewegt wird und dann an der Dicke der Barriere vorbei bewegt wird, wird die Barrierenkraft abgeschaltet. Die Barrierenkraft kann als hartes Hindernis wirken, wobei der Mikroprozessor einen maximalen Kraftbetrag an das Benutzerobjekt 34 liefert, oder als Höcker oder weiche Barriere wirken, wobei ein kleinerer Kraftbetrag angewendet wird (wie durch den Betragsbefehlsparameter festgelegt). Die Barriere kann für einen ausgedehnten Zeitraum bleiben, wenn sie nicht entfernt oder an eine neue Stelle bewegt wird. Mehrere Barrieren können auch der Reihe nach entlang eines Freiheitsgrades vorgesehen werden.
  • Alternativ kann die Barrierenkraft durch Senden eines Hauptrechnerbefehls mit nur zwei Befehlsparametern, Härte und Ort, geliefert werden. Der Härteparameter kann die Höhe und Steigung der Widerstandskraft festlegen. Wie im Graphen 348 von 16 gezeigt, kann sich das Benutzerobjekt entlang der Abstandsachse von links nach rechts bewegen. Das Benutzerobjekt spürt eine Widerstandskraft, wenn es am Punkt B auf die Barriere trifft. Nachdem das Benutzerobjekt zum Punkt S (dem Schnappabstand) bewegt wurde, wird die Kraft auf das Benutzerobjekt in der entgegengesetzten Richtung (eine Kraft mit negativem Betrag) aufgebracht, die abnimmt, wenn das Benutzerobjekt in derselben Richtung bewegt wird. Dies simuliert einen Höcker oder Hügel, wobei die Kraft widerstandsbehaftet ist, bis das Benutzerobjekt bis zur Oberseite des Höckers bewegt wird, wo die Kraft zu einer Unterstützungskraft wird, wenn das Objekt die andere Seite des Höckers hinab bewegt wird.
  • Eine Kraft vom Kraftfeldtyp zieht das Benutzerobjekt bezüglich einer speziellen Position an oder stößt es ab. Diese Kraft kann durch Befehlsparameter wie z.B. einen Feldbetrag und die spezielle Feldursprungsposition, bezüglich der das Kraftfeld aufgebracht wird, definiert werden. Ein Richtungsparameter kann enthalten sein, um ein Anziehungsfeld oder Abstoßfeld anzugeben. Das Kraftfeld kann beispielsweise ein Anziehungsfeld sein, um eine Schwerkraft zwischen der Feldursprungsposition und einem vom Benutzer gesteuerten Cursor oder graphischen Objekt zu simulieren. Obwohl man sich die Feldursprungsposition als Gravitationsmasse oder als elektrische Ladung vorstellen kann, muss die Anziehungskraft nicht vom umgekehrten Quadrat der Verschiebung von der speziellen Position abhängen; die Kraft kann beispielsweise von einem Inversen der Verschiebung abhängen. Das Anziehungskraftfeld versucht auch, das Benutzerobjekt in der Feldursprungsposition zu halten, sobald sich das Benutzerobjekt in diese Position bewegt hat. Ein Abstoßfeld arbeitet ähnlich, außer dass es das Benutzerobjekt von der festgelegten Feldursprungsposition wegdrückt. Außerdem können Reichweiten als zusätzliche Befehlsparameter festgelegt werden, um die Wirkung eines Kraftfeldes auf eine spezielle Abstandsreichweite um die Feldursprungsposition zu begrenzen.
  • Die 17a17i sind schematische Darstellungen eines "Schläger"-Computerobjekts 350, das mit einem "Ball"-Computerobjekt oder einem ähnlichen Objekt 352 in Wechselwirkung steht. Diese Computerobjekte können auf dem Anzeigebildschirm 20 durch den Hauptrechner 16 angezeigt werden. Die Kraftwechselwirkungen zwischen dem Ball und dem Schläger können durch einen Softwareentwickler unter Verwendung eines Hauptrechnerbefehls gesteuert werden, wie nachstehend erläutert. Beim beschriebenen Beispiel wird ein Schlägerobjekt 350 durch einen Spieler durch ein Positionssteuerparadigma derart gesteuert, dass die Bewegung des Schlägerobjekts 350 direkt auf die Bewegung des Benutzerobjekts 34 abgebildet wird. Bei alternativen Ausführungsbeispielen können das Ballobjekt 352 oder beide Objekte durch Spieler gesteuert werden.
  • Die 17a17h zeigen, wie das Schlägerobjekt 350 mit einem sich bewegenden Ballobjekt 352 in Wechselwirkung tritt, wenn das Ballobjekt 352 mit dem Schlägerobjekt zusammenstößt. In 17a trifft der Ball 352 zuerst auf den Schläger 350 auf. Vorzugsweise wird eine Trägheitskraft auf das Benutzerobjekt 34 in der entsprechenden Richtung aufgebracht. In den 17b und 17c bewegt sich der Ball 352 in den nachgiebigen Schläger oder die nachgiebige "Schlinge". Vorzugsweise wird eine Kraft auf der Basis einer simulierten Masse des Balls 352 vom Benutzer über das Benutzerobjekt 34 gespürt, die für die simulierte Geschwindigkeit des Balls (und/oder des Schlägers), die simulierte Nachgiebigkeit des Schlägers (und/oder des Balls) und die Stärke und Richtung der simulierten Schwerkraft geeignet ist. Diese Faktoren (und andere gewünschte physikalische Faktoren) können vorzugsweise unter Verwendung eines Hauptrechnerbefehls mit den geeigneten Parametern festgelegt werden. Der folgende Hauptrechnerbefehl kann beispielsweise verwendet werden: SCHLÄGER (B mass, B vel x, B vel y, Schwerkraft, Richtung, Nachgiebigkeit X, Nachgiebigkeit Y, Stil) wobei der Befehlsparameter B mass die simulierte Masse des Balls angibt, B vel x und B vel y die Geschwindigkeit des Balls sind, Schwerkraft die Stärke der Schwerkraft ist, Richtung die Richtung der Schwerkraft ist und Nachgiebigkeit X und Nachgiebigkeit Y die simulierte Nachgiebigkeit oder Steifigkeit des Schlägerobjekts 34 sind. Andere Parameter können auch enthalten sein, um andere physikalische Aspekte der Computerumgebung und Wechselwirkung von Objekten zu steuern. Eine simulierte Masse des Schlägers kann beispielsweise auch festgelegt werden. Der Ball 352 kann auch als komprimiertes Objekt, wenn er auf den Schläger 350 auftrifft, beispielsweise mit verringerter Höhe und ovaler Form, angezeigt werden. Außerdem können auch Dämpfungsparameter in den x- und y-Achsen im Schlägerbefehl enthalten sein, um eine Dämpfungskraft zum Zusammenstoß zwischen dem Ball und dem Schläger zusätzlich zur Nachgiebigkeits- (Feder-) Kraft hinzuzufügen. Es könnte auch ermöglicht werden, dass die Parameter wie z.B. die Nachgiebigkeit und/oder Dämpfung des Schlägers durch den Benutzer mit einer anderen Eingabe 39 oder einem dritten Freiheitsgrad des Benutzerobjekts 34 eingestellt werden. Der Stilparameter des Schlägerbefehls könnte eine von mehreren verschiedenen vorbestimmten Schlägerkonfigurationen auswählen, die zur Verfügung stehen und beispielsweise im Speicher 27 gespeichert sind. Die Konfigurationen können verschiedene Schlägerlängen, -breiten, -nachgiebigkeiten oder andere angezeigte und/oder Krafteigenschaften eines Schlägers aufweisen.
  • In 17d hat der Ball einen Punkt des Schlägers 34 mit maximaler Flexibilität erreicht und kann sich nicht mehr in derselben Richtung bewegen. Wie in den 17e bis 17g gezeigt, wird der Ball aufgrund der Nachgiebigkeit des Schlägers in die entgegengesetzte Richtung getrieben. Außerdem kann der Benutzer vorzugsweise eine Kraft auf das Benutzerobjekt 34 ausüben, um den Ball in einer bestimmten Richtung zu lenken und mehr Geschwindigkeit zur Bewegung des Balls hinzuzufügen. Dies ermöglicht dem Benutzer einen feinen Grad an Steuerung und ermöglicht eine signifikante Anwendung von Geschicklichkeit beim Lenken des Balls in einer gewünschten Richtung. Der Kraftrückkopplungsschläger ist folglich eine verbesserte Komponente von Videospielen vom "Ping-Pong"-Typ und anderen ähnlichen Videospielen. Außerdem kann sich der Schläger 350 wahlweise in der entgegengesetzten Richtung biegen, wie in 17h gezeigt. Eine Schnittstellenvorrichtung, die zwei lineare (X und Y) Freiheitsgrade für das Benutzerobjekt 34 sowie einen dritten Dreh- ("Umdrehungs"-) Freiheitsgrad um die Z-Achse (oder C-Achse in 6) vorsieht, ist für die Schläger-Ball-Implementierung durchaus geeignet.
  • Ein schematisches Modell der Kräfte, die zwischen dem Ball 352 und dem Schläger 350 in Wechselwirkung stehen, ist in 17i gezeigt. Eine Federkraft, die durch eine Federkonstante K angegeben ist, wird in beiden Freiheitsgraden X und Y bereitgestellt, um die Elastizität des Schlägers 350 anzugeben; g ist eine Gravitationsrichtung. Außerdem wird auch eine Dämpfungskraft, die durch die Dämpfungskonstante B angegeben ist, vorgesehen, um den Ball 352 zu verlangsamen, sobald er den Schläger 350 berührt. Die Feder- und Dämpfungskräfte können auch in einem Freiheitsgrad aufgebracht werden.
  • Der Schlägersteueralgorithmus ist ein dynamischer Algorithmus, bei dem der Mikroprozessor 26 Wechselwir kungskräfte berechnet, während ein Ball den Schläger komprimiert und sich dann vom Schläger löst. Der Schlägerbefehl wird vom Hauptrechner 12 gesandt, wenn der Ball den Schläger berührt. Der Schlägerbefehl meldet den Ort des Balls an den Hauptrechner, so dass der Hauptrechner die auf dem Anzeigebildschirm 20 angezeigte Graphik während des Wechselwirkungszeitraums aktualisieren kann. Bei derzeit bevorzugten Ausführungsbeispielen müssen die Aktualisierungen nur mit etwa 60 Hz zum Hauptrechner geliefert werden, da die meisten Anzeigen 20 nur mit dieser Rate anzeigen können. Die Kräfte sollten jedoch mit etwa 500 Hz oder mehr berechnet und ausgegeben werden, um ein realistisches "Gefühl" für die Wechselwirkung bereitzustellen. Folglich kann der lokale Mikroprozessor die Kräfte schnell berechnen, während er die Sensormesswerte des Schlägers gelegentlich an den Hauptrechner mit einer langsameren Rate meldet. Andere Arten von Videospiel- oder Simulationswechselwirkungen können auch mit einem Hauptrechnerbefehl hoher Ebene auf eine ähnliche Weise befohlen werden. Außerdem kann der Hauptrechner 12 bei alternativen Ausführungsbeispielen die Stellglieder 30 direkt steuern, um die Schläger- und Ball-Kraftrückkopplung zu implementieren, ohne irgendwelche Hauptrechnerbefehle hoher Ebene zu senden. Ähnliche Schläger-Ball-Wechselwirkungen und -Kräfte können auch zwischen Wechselwirkungen anderer Arten von graphischen Objekten, wie z.B. zwischen einem Cursor in einer GUI und einem anderen Objekt oder einer anderen Oberfläche, vorgesehen werden.
  • 17j ist eine schematische Darstellung einer 2-D-Implementierung von angezeigten graphischen Objekten auf dem Anzeigebildschirm 20, die mit dem vorstehend beschriebenen Schläger-Hauptrechnerbefehl implementiert werden kann oder in einer GUI oder anderen graphischen Umgebung implementiert werden kann. Ein Spielfeld wird angezeigt, in dem eine Handlung stattfinden soll, und zwei Tore 368 und 370 sind auf dem Spielfeld vorgesehen. Zwei Schläger 360 und 362 werden angezeigt, die im Spielfeld herumbewegt werden. Die Schläger 360 und 362 sind als vertikal ausgerichtete Segmente mit einer Länge und einer relativ kleinen Breite angezeigt, können jedoch in anderen Ausführungsbeispielen ganz anders orientiert und/oder geformt sein. Andere geometrische Formen, Bilder von Tennisschlägern oder Bilder einer Person, die einen Tennisschläger hält, können beispielsweise anstelle der Schläger verwendet werden. Die Schläger 202 und 204, der Ball 206, die Tore 201 und 203 und beliebige andere vom Computer erzeugten Objekte, die in der Simulation enthalten sind, werden hierin allgemein als "graphische Objekte" bezeichnet.
  • Bei einem Ausführungsbeispiel kann der Schläger 360 durch das Hauptrechnersystem 12 gesteuert werden und der Schläger 362 kann durch den Benutzer durch physikalisches Bedienen des Benutzerobjekts gesteuert werden. Der Ball 352 kann auf dem Anzeigebildschirm 20 gemäß simulierten physikalischen Parametern wie z.B. Geschwindigkeit, Beschleunigung, Schwerkraft, Nachgiebigkeit von Objekten und anderen Parametern bewegt werden, wie vorher erörtert. Wenn der Ball 352 mit dem Schläger 362 zusammenstößt, biegt sich der Schläger und der Benutzer spürt die Zusammenstoßkraft. Wenn sich der Ball 352 beispielsweise in der Richtung 364 bewegt, spürt der Benutzer dann eine Kraft in den äquivalenten Freiheitsgraden des Benutzerobjekts 34. Bei einigen Ausführungsbeispielen können sowohl der Schläger 362 als auch der Ball 364 in der Richtung 364 bewegt werden, um zu simulieren, dass der Schläger durch den Ball zurückgeschoben wird. 17k zeigt ein ähnliches Ausführungsbeispiel, bei dem die perspektivische Ansicht einer ersten Person (oder eine simulierte 3-D-Ansicht) der graphischen Objekte auf dem Anzeigebildschirm 20 gezeigt ist, wobei der Ball 352 eine Kugel ist.
  • Der Benutzer kann das Benutzerobjekt auch so bewegen, dass sich der Schläger in einer Richtung 366 bewegt. Der Benutzer fühlt folglich, als ob er das Gewicht des Balls wie in einer Schlinge trägt. Der Ball wird dann vom Schläger gelöst und bewegt sich in Richtung des anderen Schlägers 360. Wie gut bekannt ist, könnte ein Ziel in einem solchen Spiel darin bestehen, den Ball in das gegnerischen Tor zu lenken. Folglich kann der Benutzer versuchen, den Ball in das Tor 368 zu lenken, und der Hauptrechner kann den Schläger 360 steuern, um den Ball in das Tor 370 zu lenken. Die Schläger 360 und 362 werden verwendet, um den Ball von der Bewegung in das verteidigte Tor abzuhalten und den Ball zum gewünschten Tor zurückzulenken. Durch Bewegen des Schlägers in einer Kombination der Richtung 366 und einer Auf- und Abbewegung kann der Benutzer die Bewegung des Balls mit einem feinen Grad steuern, was folglich ermöglicht, dass die Geschicklichkeit eines Spielers die Spielergebnisse in einem größeren Grad beeinflusst als bei vorherigen Spielen ohne Kraftrückkopplung. Außerdem können andere Merkmale enthalten sein, um die Richtung des Balls und die vom Benutzer gespürten Kräfte weiter zu beeinflussen. Die Orientierung des Schlägers kann beispielsweise durch Drehen des Schlägers um einen Mittelpunkt des Schlägers geändert werden. Diese Drehung könnte durch einen "Umdrehungs"-Freiheitsgrad des Benutzerobjekts um eine Achse C festgestellt werden, wie vorstehend mit Bezug auf die 6 und 7 beschrieben. Die Kraftrückkopplung könnte folglich geeignet in diesem Umdrehungsfreiheitsgrad aufgebracht werden. Andere Merkmale können auch bereitgestellt werden, wie z.B. Ermöglichen, dass ein Ball an einem Schläger "festhängt" oder eingefangen wird, wenn die zwei Objekte zusammenstoßen und/oder wenn eine Taste vom Benutzer gedrückt wird. Der Benutzer könnte dann die Taste aktivieren oder loslassen, beispielsweise um den Ball zum gewünschten Zeitpunkt zu lösen.
  • Bei einem weiteren Ausführungsbeispiel kann der Schläger 360 vielmehr durch einen weiteren Benutzer als den Hauptrechner 12 gesteuert werden. Eine zweite Schnittstellenvorrichtung 14 kann beispielsweise mit einem anderen Eingangs/Ausgangs-Anschluss des Hauptrechners 12 verbunden werden und kann verwendet werden, um den Schläger 360 durch einen zweiten Benutzer zu steuern. Jeder Spieler würde daher die Kräfte an seinem jeweiligen Schläger vom Ball, der durch den anderen Spieler gelenkt wird, spüren. Wenn die zwei Schläger 360 und 362 miteinander in Kontakt gebracht werden würden, könnte außerdem jeder Spieler die direkte Kraft des anderen Spielers an jedem Benutzerobjekt des Spielers spüren. Das heißt, die Kraft eines ersten Benutzers an seinem Benutzerobjekt würde verursachen, dass sich sein Schläger 362 in den anderen Schläger 360 bewegt, was dann verursachen würde, dass sowohl der erste als auch der zweite Benutzer die Zusammenstoßkraft spüren. Wenn ermöglicht werden würde, dass der erste Schläger 362 den anderen Schläger 360 über den Bildschirm schiebt, dann würde der zweite Benutzer die Schubkraft des ersten Benutzers spüren. Der erste Benutzer würde ähnliche Kräfte vom zweiten Benutzer spüren. Dies erzeugt den Effekt, als ob jeder Spieler den anderen Spieler direkt schieben würde. Solche Schub- oder "Kriegszug"-Spiele zwischen zwei Benutzern können mehrere verschiedene Ausführungsbeispiele annehmen.
  • Ferner muss die zweite Schnittstellenvorrichtung 14 nicht mit dem Computer 12 verbunden sein. Statt dessen kann der Hauptrechner 12 mit einem zweiten Hauptrechner über eine direkte oder Netzwerkschnittstelle gekoppelt sein, wie es Fachleuten gut bekannt ist. Die Bewegung eines ersten Benutzerobjekts würde folglich vom ersten Hauptrechner zum zweiten Hauptrechner übertragen werden, welcher dann Kräfte am zweiten Benutzerobjekt gebieten würde; und umgekehrt. Das Ausführungsbeispiel von 17k ist für ein solches Ausführungsbeispiel geeignet, bei dem jeder Benutzer den Schläger 362 als Schläger unter seiner eigenen Steuerung auf seinem eigenen Anzeigebildschirm 20 und den Schläger 360 als Schläger des anderen Spielers betrachten kann.
  • Dies schließt die Beschreibung von Positionssteuerparadigmen ab.
  • Außerdem steht für den Hauptrechner vorzugsweise ein Löschbefehl zur Verfügung. Dieser Befehl kann einen Parameter umfassen, der spezielle Freiheitsgrade festlegt und ermöglicht, dass der Hauptrechner alle Kräfte in den festgelegten Freiheitsgraden aufhebt. Dies ermöglicht, dass Kräfte entfernt werden, bevor andere Kräfte aufgebracht werden, wenn der Programmierer die Kräfte nicht überlagern will. Ein Konfigurations-Hauptrechnerbefehl kann auch geliefert werden, um die Schnittstellenvorrichtung 14 anfänglich einzurichten, um spezielle Kommunikationsparameter zu empfangen und festzulegen, welche Eingabe und Ausgabe für eine spezielle Anwendung verwendet werden, z.B. kann der Hauptrechner dem lokalen Mikroprozessor 26 befehlen, eine spezielle Information an den Hauptrechner zu melden, und wie oft die Information gemeldet werden soll. Der Hauptrechner 12 kann beispielsweise dem Mikroprozessor 26 befehlen, Positionswerte von speziellen Freiheitsgraden, Tastenzustände von speziellen Tasten der Schnittstellenvorrichtung 14 zu melden, und in welchem Grad Fehler, die auftreten, an den Hauptrechner gemeldet werden sollen. Ein "Anforderungsinformations"-Befehl kann auch vom Hauptrechner 12 zur Schnittstellenvorrichtung 14 gesandt werden, um eine in der Schnittstellenvorrichtung 14 zum Zeitpunkt der Herstellung gespeicherte Information, wie z.B. eine Seriennummer, eine Modellnummer, eine Stilinformation, Kalibrierungsparameter und -Informationen, die Auflösung von Sensordaten, die Auflösung der Kraftsteuerung, die Reichweite der Bewegung entlang der bereitgestellten Freiheitsgrade, eine Verkäuferidentifikation, die Vorrichtungsklasse und eine Leistungsverwaltungsinformation usw., zu empfangen.
  • Außerdem können die vorstehend beschriebenen Kräfte überlagert werden. Der Hauptrechner kann einen neuen Hauptrechnerbefehl senden, während ein vorheriger Hauptrechnerbefehl noch in Kraft ist. Dies ermöglicht, dass Kräfte, die auf das Benutzerobjekt aufgebracht werden, von verschiedenen Steuerbefehlen kombiniert werden. Der Mikroprozessor 26 oder Hauptrechner kann verhindern, dass bestimmte Befehle, die sich widersprechende Wirkungen aufweisen, überlagert werden (wie z.B. eine Rückstellkraft und eine Rückstellfeder). Der letzte gesandte Hauptrechnerbefehl kann beispielsweise vorherige Befehle außer Kraft setzen, wenn diese vorherigen Befehle mit dem neuen Befehl in Konflikt stehen. Oder den in Konflikt stehenden Befehlen können Prioritäten zugewiesen werden und der Befehl mit der höchsten Priorität setzt die anderen in Konflikt stehenden Befehle außer Kraft.
  • Es sollte beachtet werden, dass die vorstehend beschriebenen Hauptrechnerbefehle hoher Ebene und Befehlsparameter lediglich Beispiele zum Implementieren der Kräfte der vorliegenden Erfindung sind. Befehlsparameter, die separat beschrieben werden, können beispielsweise zu einzelnen Parametern mit verschiedenen Teilen kombiniert werden. Die gezeigten unterschiedlichen Befehle können auch auf verschiedene Weisen kombiniert oder getrennt werden, wie vorstehend mit dem Beispiel des Bedingungsbefehls zum Vorsehen von mehreren Ratensteuerungs-Bedingungskräften gezeigt.
  • Zusätzlich zu üblichen Schnittstellenvorrichtungen mit einem oder zwei rechteckigen oder sphärischen Freiheitsgraden wie z.B. Standard-Steuerhebeln können andere Schnittstellenvorrichtungen mit drei oder mehr Freiheitsgraden versehen werden. Wenn der dritte Freiheitsgrad um eine Achse entlang des Stabes selbst liegt, können Fachleute dies "Umdrehung" oder "Verdrehung" nennen. Jeder Freiheitsgrad eines Benutzerobjekts kann seinen eigenen zweckgebundenen Hauptrechnerbefehl hoher Ebene aufweisen. Durch unabhängiges Zuordnen von Hauptrechnerbefehlen hoher Ebene zu jedem Freiheitsgrad können viele mögliche Kombinationen von Positionssteuerung, Ratensteuerung und anderen abstrakten Abbildungen mit Schnittstellenvorrichtungen implementiert werden. Mehrere Steuerparadigmen können auch in einem einzelnen Freiheitsgrad vermischt werden. Ein Steuerhebel kann beispielsweise eine Positionssteuerung für kleine Abweichungen vom Ursprung in einem Freiheitsgrad und eine Ratensteuerung für große Abweichungen vom Ursprung im gleichen Freiheitsgrad aufweisen. Ein solches gemischtes Steuerparadigma kann als lokales Positions-/globales Ratensteuer-Paradigma bezeichnet werden.
  • 18 verkörpert eine schematische Darstellung des Anzeigebildschirms 20, der eine graphische Benutzerschnittstelle (GUI) 500 anzeigt, die zur Kommunikation mit einem Betriebssystem verwendet wird, das vom Computersystem 12 implementiert wird. Ein bevorzugtes Ausführungsbeispiel der vorliegenden Erfindung implementiert Kraftrückkopplungstechnologien, um eine graphische Benutzerschnittstelle mit physikalischen Empfindungen zu verschönern. Durch Kommunikation mit der Kraftrückkopplungs-Schnittstellenvorrichtung 14 oder einer ähnlichen Vorrichtung, die für den Benutzer eine Kraftrückkopplung vorsieht, kann der Computer 12 nicht nur eine visuelle und akustische Information, sondern auch physikalische Kräfte für den Benutzer darstellen. Diese physikalischen Kräfte können sorgfältig entworfen werden, um die manuelle Leistung zu verbessern, indem beispielsweise die Schwierigkeit von erforderlichen "Ziel"-Aufgaben verringert wird. Solche Kraftrückkopplungsempfindungen können verwendet werden, um die Wechselwirkung mit Computerbetriebssystemen für alle Benutzer zu erleichtern. Außerdem erhalten diejenigen Benutzer, die unter einer spastischen Handbewegung und anderen die Geschicklichkeit schwächenden Bedingungen leiden, durch das Hinzufügen dieser Kraftrückkopplungsempfindungen eine große Belohnung.
  • Das Hinzufügen von computererzeugten Kraftrückkopplungsempfindungen zu einer Windows-Betriebssystemumgebung kann die manuelle Leistung auf mindestens zwei Weisen verbessern. Erstens können physikalische Kräfte verwendet werden, um haptische Sinnesandeutungen am Benutzerobjekt 34 vorzusehen, die das Wahrnehmungsverständnis eines Benutzers für die räumliche "Landschaft" der GUI, die auf dem Anzeigebildschirm 20 dargestellt wird, erhöhen. Empfindungen von physikalischen Höckern oder Texturen, die auf das Benutzerobjekt 34 aufgebracht werden, wenn der Benutzer einen Cursor über den Bildschirm bewegt, können beispielsweise verwendet werden, um dem Benutzer anzugeben, dass er den Cursor innerhalb eines gegebenen Bereichs positioniert hat oder eine spezielle Grenze überquert hat.
  • Zweitens können vom Computer erzeugte Kräfte verwendet werden, um physikalische Einschränkungen oder unterstützende Vorspannungen vorzusehen, die dem Benutzer tatsächlich helfen, den Cursor an einem gegebenen Ziel, das auf dem Bildschirm 20 innerhalb der GUI 500 angezeigt wird, zu erfassen und zu halten. Ein Anziehungskraftfeld kann beispielsweise verwendet werden, um das Benutzerobjekt 34 und folglich den durch das Benutzerobjekt 34 gesteuerten Cursor an die Stelle, die einem gegebenen Ziel wie z.B. einem Bildsymbol zugeordnet ist, physikalisch anzuziehen. Unter Verwendung eines solchen Anziehungsfeldes muss ein Benutzer einfach einen Cursor auf dem Bildschirm nahe an das gewünschte Ziel bewegen und die Kraftrückkopplungs-Schnittstellenvorrichtung 14 unterstützt den Benutzer beim Bewegen des Cursors zum Ziel. Viele weitere abstrakte Kraftrückkopplungsempfindungen können verwendet werden, um die breite Vielfalt von Metaphern auf GUI-Basis zu verbessern und zu verschönern.
  • Hierin werden die manuellen Aufgaben des Benutzers, um einen auf dem Bildschirm 20 angezeigten Cursor durch physikalisches Bedienen des Benutzerobjekts 34 (auch als "physikalisches Objekt" bezeichnet) zu bewegen, um den Cursor zu einem gewünschten Ort oder angezeigten Objekt zu steuern, als "Ziel"-Aktivitäten beschrieben. "Ziele", wie hierin angeführt, sind definierte Bereiche in der GUI 500, zu denen ein Cursor durch den Benutzer bewegt werden kann, denen eine oder mehrere Kräfte zugeordnet sind und die typischerweise graphischen Objekten der GUI 500 zugeordnet sind. Solche Ziele können beispielsweise graphischen Objekten wie z.B. Bildsymbolen, Balkenmenüpunkten und Schaltflächen zugeordnet sein. Ein Ziel ist gewöhnlich als exakte Abmessungen seines zugehörigen graphischen Objekts definiert und wird auf sein zugehöriges graphisches Objekt überlagert und an dieses "angehängt", so dass das Ziel eine konstante räumliche Position bezüglich des graphischen Objekts besitzt (d.h. wenn das graphische Objekt bewegt wird, bewegt sich sein Ziel auch im gleichen Abstand und in der gleichen Richtung). Gewöhnlich sind "graphische Objekte" diejenigen Bilder, die auf dem Anzeigebildschirm erscheinen, die der Benutzer mit einem Cursor auswählen kann, um eine Betriebssystemfunktion zu implementieren, wie z.B. Anzeigen von Bildern, Ausführen eines Anwendungsprogramms oder Durchführen einer anderen Computerfunktion. Der Einfachheit halber kann sich der Begriff "Ziel" auf das ganze graphische Objekt, dem das Ziel zugeordnet ist, beziehen. Somit wird ein Bildsymbol oder Fenster selbst häufig hierin als "Ziel" bezeichnet. Allgemeiner muss jedoch ein Ziel nicht den exakten Abmessungen des dem Ziel zugeordneten graphischen Objekts folgen. Ein Ziel kann beispielsweise entweder als exakter angezeigter Bereich eines zugehörigen graphischen Objekts definiert sein oder das Ziel kann nur als Teil des graphischen Objekts definiert sein. Das Ziel kann auch eine andere Größe und/oder Form aufweisen als sein zugehöriges graphisches Objekt und kann sogar in einem Abstand von seinem zugehörigen graphischen Objekt weg angeordnet sein. Der ganze Bildschirm oder Hintergrund der GUI 500 kann auch als "Ziel" betrachtet werden, das Kräfte am Benutzerobjekt 34 bereitstellen kann. Außerdem kann ein einzelnes graphisches Objekt mehrere Ziele aufweisen, die ihm zugeordnet sind. Ein Fenster könnte beispielsweise ein Ziel, das seinem ganzen Bereich zugeordnet ist, und ein separates Ziel, das der Titelleiste oder der Eckenschaltfläche des Fensters zugeordnet ist, aufweisen.
  • Beim Bewegen des Cursors zum gewünschten Ziel hält der Benutzer typischerweise den Cursor am erfassten Ziel, während er eine "Befehlsgeste" bereitstellt, die einer physikalischen Handlung wie z.B. Drücken einer Taste, Pressen eines Auslösers, Herabdrücken eines Pedals oder der Durchführung irgendeiner anderen Geste zum Befehlen der Ausführung einer speziellen Betriebssystemfunktion, die dem graphischen Objekt/Ziel zugeordnet ist, zugeordnet ist. Beim bevorzugten Ausführungsbeispiel kann die Befehlsgeste als weitere Eingabe 39 bereitgestellt werden, wie in 1 gezeigt. Das "Klicken" (Drücken) einer physikalischen Taste, die an einer Maus oder einem Steuerhebel angeordnet ist, während sich der Cursor auf einem Bildsymbol befindet, ermöglicht beispielsweise, dass ein Anwendungsprogramm, das dem Bildsymbol zugeordnet ist, ausgeführt wird. Ebenso ermöglicht ein Klick einer Taste, während sich der Cursor auf einem Teil eines Fensters befindet, dem Benutzer, das Fenster durch Bewegen des Benutzerobjekts über den Bildschirm zu bewegen oder zu "ziehen". Die Befehlsgeste kann verwendet werden, um Kräfte zu modifizieren, oder für andere Funktionen bei der vorliegenden Erfindung ebenso verwendet werden. Eine Taste am Benutzerobjekt kann beispielsweise dazu ausgelegt sein, die in einem bestimmten Bereich oder Ziel in der GUI 500 aufgebrachten Kräfte zu entfernen.
  • Bei anderen Ausführungsbeispielen kann die "Befehlsgeste" durch Bedienen des physikalischen Objekts der Schnittstellenvorrichtung innerhalb vorgesehener Freiheitsgrade und/oder mit graphischen Objekten, die auf dem Bildschirm angezeigt werden, vorgesehen werden. Wenn ein Benutzerobjekt beispielsweise einen dritten Freiheitsgrad besitzt, wie z.B. eine lineare Parallelverschiebung entlang der Achse C von 6, dann kann die Bewegung in dieser Richtung eine Befehlsgeste angeben. Bei anderen Ausführungsbeispielen können graphische Objekte auf dem Bildschirm eine Befehlsgeste vorsehen, wenn sie von einem Benutzer bedient werden. Wenn beispielsweise ein Balkenmenü angezeigt wird, kann eine kleine Schaltfläche an oder nahe jedem Menüpunkt angezeigt werden. Der Benutzer könnte dann den Cursor auf die entsprechende Schaltfläche bewegen, um diesen Menüpunkt auszuwählen. Eine Seitenansicht einer Schaltfläche könnte auch angezeigt werden, wobei der Benutzer den Cursor in die Schaltfläche bewegt, um sie zu "drücken" und die Befehlsgeste vorzusehen. Eine Federkraft am Benutzerobjekt 34 kann dieser Druckbewegung zugeordnet sein, um das Gefühl einer mechanischen Taste bereitzustellen.
  • Die nachstehende Erörterung baut auf einem Konzept von GUI-Zielen, die in einer speziellen Hierarchie von Ebenen in Bezug zueinander enthalten sind, auf. Ein erstes Ziel, das innerhalb eines zweiten Ziels enthalten oder gruppiert ist, wird als "Kind" des zweiten Ziels betrachtet und liegt in der Hierarchie niedriger als das zweite Ziel. Der Anzeigebildschirm 20 kann beispielsweise zwei Fenster anzeigen. Fenster werden typischerweise als auf derselben Hierarchieebene betrachtet, da Fenster typischerweise nicht innerhalb anderer Fenster gruppiert werden. Ein Fenster das innerhalb eines Fensters mit höherer Ebene gruppiert ist, wie z.B. ein Fenster, das in einem Programmmanagerfenster (siehe 19) enthalten ist, wird jedoch als auf einer niedrigeren Ebene in der Hierarchie betrachtet als das Gruppierungsfenster. Innerhalb jedes Fensters können sich mehrere Bildsymbole befinden. Die Bildsymbole sind Kinder auf einer niedrigeren Hierarchieebene als das Fenster, das sie gruppiert, da sie innerhalb dieses Fensters gruppiert und diesem zugeordnet sind. Diese Zielkonzepte werden nachstehend klarer. Es sollte beachtet werden, dass ein Ziel "innerhalb" oder über einem anderen Ziel angezeigt werden kann und dennoch auf derselben Hierarchie liegen kann wie das andere Ziel. Ein Fenster kann beispielsweise innerhalb des äußeren Umfangs eines anderen Fensters angezeigt werden und dennoch immer noch innerhalb dieses anderen Fensters gruppiert sein, so dass die Fenster dieselbe Hierarchieebene aufweisen.
  • Die GUI ermöglicht dem Benutzer auf verschiedene Betriebssystemfunktionen, die von einem Betriebssystem implementiert werden, das auf dem Computersystem 12 läuft, zuzugreifen. Das Windows-Betriebssystem kann beispielsweise auf dem Computersystem 12 laufen, um Betriebssystemfunktionen zu implementieren. Die Betriebssystemfunktionen umfassen typischerweise, sind jedoch nicht begrenzt auf Peripheriegerät-Eingabe/Ausgabe-Funktionen (wie z.B. Schreiben oder Lesen von Daten auf bzw. von einer Platte oder einem anderen Peripheriegerät), Auswählen und Abarbeiten von Anwendungsprogrammen und anderen Programmen, die vom Betriebssystem unabhängig sind, Auswählen oder Verwalten von Programmen und Daten im Speicher, Betrachten/Anzeigen von Funktionen (wie z.B. Bildlauf eines Dokuments in einem Fenster, Anzeigen und/oder Bewegen eines Cursors oder Bildsymbols über den Bildschirm, Anzeigen oder Bewegen eines Fensters, Anzeigen von Menütiteln und -auswahlen usw.) und andere Funktionen, die vom Computersystem 12 implementiert werden. Der Einfachheit der Erörterung halber werden die Funktionen von Anwendungsprogrammen wie z.B. Textverarbeitungssystemen, Arbeitsblättern und anderen Anwendungen im Begriff "Betriebssystemfunktionen" zusammengefasst, obwohl die Funktionen eines Anwendungsprogramms gewöhnlich als vom Betriebssystem unabhängig betrachtet werden. Typischerweise machen Anwendungsprogramme von Betriebssystemfunktionen Gebrauch, um mit dem Benutzer zu kommunizieren; beispielsweise implementiert ein Textverarbeitungssystem eine Fensterfunktion eines Betriebssystems, um eine Textdatei in einem Fenster auf dem Anzeigebildschirm anzuzeigen. Eine Betriebssystemfunktion kann typischerweise durch die "Art" von graphischem Objekt ausgewählt werden; ein Bildsymbol kann beispielsweise im Allgemeinen ein Anwendungsprogramm ausführen, ein Fenster zeigt im Allgemeinen Sammlungen von anderen graphischen Objekten an, eine Schieberleiste rollt Bilder auf dem Bildschirm, ein Menüpunkt kann eine Vielfalt von Betriebssystemfunktionen in Abhängigkeit von seiner Bezeichnung durchführen, usw.
  • Außerdem sind andere Arten von Schnittstellen ähnlich zu GUIs und können bei der vorliegenden Erfindung verwendet werden. Ein Benutzer kann beispielsweise eine "Seite" im World Wide Web einrichten, die von einem entfernten Computer oder Server implementiert wird. Der entfernte Computer ist mit dem Hauptrechner 12 über ein Netzwerk wie z.B. das Internet verbunden und auf die Webseite kann von verschiedenen Benutzern über das Netzwerk zugegriffen werden. Die Seite kann graphische Objekte ähnlich den graphischen Objekten einer GUI, wie z.B. Bildsymbole, Balkenmenüs usw., sowie andere graphische Objekte, wie z.B. "Links", die auf eine andere Seite oder einen anderen Teil des World Wide Web oder ein anderes Netzwerk zugreifen, wenn sie ausgewählt werden, umfassen. Diese graphischen Objekte können Kräfte aufweisen, die ihnen zugeordnet sind, um das Auswählen von Objekten oder Funktionen und Informieren des Benutzers über die graphische Anordnung auf dem Bildschirm zu unterstützen. Bei einem solchen Ausführungsbeispiel kann die Geschwindigkeit der Datenübertragung zwischen dem Hauptrechner und einem Netzwerkknoten häufig langsam sein. Daher ist das Reflex-Ausführungsbeispiel, wie vorstehend mit Bezug auf 5 beschrieben, durchaus geeignet, da der lokale Mikroprozessor 26 Kraftempfindungsprozesse implementieren kann, die durch Befehle gesteuert werden, die vom entfernten Computer, welcher die Webseite implementiert, und/oder vom Hauptrechner 12 empfangen werden. Bei noch weiteren Ausführungsbeispielen kann eine simulierte dreidimensionale GUI bei der vorliegenden Erfindung implementiert werden, bei der eine isometrische oder perspektivische Ansicht einer GUI-Umgebung und ihrer graphischen Objekte angezeigt werden kann. Alternativ kann eine Ansicht einer "ersten Person" einer GUI-Schnittstelle implementiert werden, um einem Benutzer zu ermöglichen, Betriebssystemfunktionen innerhalb einer simulierten virtuellen 3-D-Umgebung auszuwählen.
  • Die GUI 500 wird vorzugsweise auf dem Hauptrechner 12 unter Verwendung von Programmbefehlen implementiert. Die Verwendung von Programmbefehlen zum Durchführen von Operationen auf einem Hauptrechner und Mikroprozessor ist Fachleuten gut bekannt und kann auf einem "maschinenlesbaren Medium" gespeichert werden. Hierin umfasst ein solches Medium beispielhaft einen Speicher wie z.B. RAM oder ROM, der mit dem Hauptrechner 12 gekoppelt ist, einen Speicher 27, Magnetplatten, ein Magnetband, optisch lesbare Medien wie z.B. CD-ROMs, einen Halbleiterspeicher wie z.B. PCMCIA-Karten usw. In jedem Fall kann das Medium die Form eines tragbaren Gegenstandes wie z.B. einer kleinen Platte, einer Diskette, Kassette usw. annehmen oder es kann die Form eines relativ größeren oder unbeweglichen Gegenstandes wie z.B. eines Festplattenlaufwerks annehmen.
  • In 18 zeigt der Anzeigebildschirm 20 eine GUI 500, die beispielsweise durch ein Microsoft Windows® Betriebssystem, ein Macintosh-Betriebssystem oder irgendein anderes verfügbares Betriebssystem, das eine GUI beinhaltet, implementiert werden kann. Bei dem gezeigten Beispiel enthält ein Programmmanagerfenster 501 verschiedene Bildsymbole 502, die durch das Fenster 501 gruppiert werden, die hier als "Haupt", "Start" und "Werkzeuge" bezeichnet sind, obwohl andere oder verschiedene Bildsymbole innerhalb des Fensters 501 gruppiert werden können. Eine Menüleiste 504 kann im Fenster 501 enthalten sein, welche ermöglicht, dass Balkenmenüs erscheinen, indem Menütitelziele 505 mit einem vom Benutzer gesteuerten graphischen Objekt 506 wie z.B. einem Cursor ausgewählt werden, der vom Benutzer über eine vom Benutzer bedienbare Vorrichtung wie z.B. das Benutzerobjekt 34 gesteuert wird. Ein Benutzer kann beispielsweise irgendeinen der Menütitel 505 "Datei", "Optionen", "Fenster" und "Hilfe" auswählen, um ein zugehöriges Balkenmenü von Menüpunkten anzuzeigen (in 19 gezeigt). Typischerweise ist auch eine Befehlsgeste wie z.B. ein Tastendruck oder eine andere Eingabe 39 (wie in 1) erforderlich, um ein Balkenmenü anzuzeigen, wenn der Cursor 506 an einem Menütitel 505 angeordnet ist. Bei alternativen Ausführungsbeispielen könnte ein Balkenmenü automatisch angezeigt werden (ohne eine Befehlsgeste), wenn der Cursor 505 am zugehörigen Menütitel 505 angeordnet ist. In der anschlieißenden Beschreibung werden die Begriffe "vom Benutzer gesteuertes graphisches Objekt" und "Cursor" austauschbar verwendet.
  • Die vorliegende Erfindung stellt eine Kraftrückkopplung für den Benutzer über das Benutzerobjekt 34 auf der Basis eines Orts, einer Geschwindigkeit, einer Beschleunigung, eines Verlaufs von einem oder mehreren dieser Werte und/oder anderer Eigenschaften des Cursors 506 innerhalb der Umgebung der GUI 500 bereit. Andere "Ereignisse" innerhalb der GUI können auch Kräfte liefern, wie vorstehend mit Bezug auf die 4 und 5 beschrieben. Verschiedene bevorzugte Ausführungsbeispiele von verschiedenen Kräften oder "Kraftempfindungen", die auf das Benutzerobjekt 34 aufgebracht werden, werden nachstehend beschrieben. wie vorstehend bei den Ausführungsbeispielen der 4 und 5 beschrieben, kann der Hauptrechner ein Signal zum lokalen Prozessor 26 (oder direkt zu den Stellgliedern 30) liefern, um verschiedene Kraftempfindungen auf das Benutzerobjekt 34 aufzubringen. Diese "Kraftempfindungen" können Kräfte mit einem einzelnen Betrag in einer Richtung sein oder sie können eine Wechselwirkung oder Folge von Kräften sein, beispielsweise um die Empfindung einer Textur, einer Dämpfungskraft, einer Barriere usw. zu erzeugen. Die Begriffe "Kraft" und "Kraftempfindung" (d.h. "Art" von Kraft) werden hierin austauschbar verwendet, wobei angenommen wird, dass einzelne Kräfte und/oder Folgen/Wechselwirkungen von Kräften vorgesehen werden können.
  • Bei einem bevorzugten Ausführungsbeispiel von 18 hängt die Kraftrückkopplung von einem Abstand zwischen dem Cursor 506 und einem Ziel wie z.B. einem Fenster 501 unter Verwendung von einem der vorstehend erwähnten Kraftmodelle ab. Der Abstand kann von einem oder mehreren Punkten innerhalb des Fensters 501 oder seinem Umfang gemessen werden. Wie in 18 dargestellt, wird das Fenster 501 als Ziel höchster Ebene betrachtet, das in der GUI 500 angezeigt wird (tatsächlich wird vorzugsweise der gesamte Bildschirmbereich der GUI 500 als Ziel höchster Ebene betrachtet, wie nachstehend beschrieben). Die Bildsymbole 502 und Menüleiste 504 sind Ziele, die in der Hierarchie eine niedrigere Ebene besitzen. In anderen Situationen könnte das Fenster 501 in einem Ziel mit höherer Ebene gruppiert sein und die Bildsymbole 502 und die Menüleiste 504 könnten zusätzliche Ziele umfassen, die in der Hierarchie niedriger liegen als die Bildsymbole und die Menüleiste. Alternativ können die Bildsymbole 502 und die Menüleiste 504 auf derselben Hierarchieebene liegen wie das Fenster 501, wenn beispielsweise die Bildsymbole 502 außerhalb des Fensters 501 angeordnet wären und auf dem "Desktop" betrachtet werden würden, d.h. nicht in irgendeinem speziellen Fenster gruppiert wären. Außerdem ist keines der zugehörigen Ziele auf dieselbe Größe oder Form wie ihre entsprechenden graphischen Objekte eingeschränkt, z.B. kann ein Ziel als spezieller Teil eines graphischen Objekts festgelegt sein.
  • Hierin wird angenommen, dass ein Positionssteuerparadigma durch die GUI 500 und Schnittstellenvorrichtung 14 implementiert wird. Die Position des Cursors 506 steht beispielsweise direkt mit der Position des Benutzerobjekts 34 in den bereitgestellten Freiheitsgraden des Benutzerobjekts in Zusammenhang. Wenn der Cursor 506 auf dem Bildschirm 20 nach links bewegt wird, bewegt sich das Benutzerobjekt 34 folglich in einer entsprechenden Richtung. Der Abstand, um den sich das Benutzerobjekt 34 bewegt, kann nicht derselbe Abstand sein, um den sich der Cursor 506 auf dem Bildschirm 20 bewegt, aber er steht typischerweise durch eine vorbestimmte Funktion in Beziehung. Wenn die Position des Cursors 506 hierin beschrieben wird, wird angenommen, dass die Position des Benutzerobjekts 34 innerhalb der bereitgestellten Freiheitsgrade mit der Position des Cursors korreliert. Wenn Kräfte hierin als sich auf den Cursor 506 "auswirkend", diesen "beeinflussend" oder auf diesen "aufgebracht" beschrieben werden, sollte angenommen werden, dass diese Kräfte tatsächlich durch die Stellglieder 30 auf das Benutzerobjekt 34 aufgebracht werden, was sich wiederum auf die Position des Cursors 506 auswirkt.
  • Bei alternativen Ausführungsbeispielen kann ein Ratensteuerparadigma in der GUI 500 verwendet werden. Ein Benutzer kann beispielsweise einen Steuerhebel in einer Richtung schieben, um zu bewirken, dass sich der Cursor in dieser Richtung bewegt, wobei gilt, je weiter der Steuerhebel in dieser Richtung bewegt wird, desto schneller bewegt sich der Cursor über den Bildschirm (in einer Implementierung der Ratensteuerung). bei einem solchen Ausführungsbeispiel könnte der Benutzer den Steuerhebel beispielsweise aus der Ursprungsposition bewegen und dann die Bewegung des Steuerhebels stoppen und der Cursor würde sich weiterhin mit konstanter Geschwindigkeit über den Bildschirm bewegen. Kräfte können auf das Benutzerobjekt 34 in Abhängigkeit von der Position des Cursors 506 ähnlich zum Positionssteuer-Ausführungsbeispiel aufgebracht werden. Ein weiteres Beispiel, bei dem ein Ratensteuerparadigma geeignet wäre, ist der tastenartige Stab oder Knopf, der zwischen Tasten der Tastatur an vielen tragbaren Computern angeordnet ist und der eine Ratensteuerung verwendet, um einen Cursor innerhalb einer GUI zu bewegen.
  • Bei einem bevorzugten Ausführungsbeispiel können die Hauptrechnerbefehle, wie vorstehend mit Bezug auf die 917 beschrieben, verwendet werden, um die verschiedenen Kräfte bereitzustellen, die für die Umgebung einer GUI 500 verwendet werden. Die "Reflex"-Betriebsart zur Verwendung des Hauptrechners 12 nur für Überwachungsbefehle hoher Ebene können beim Verlängern der Reaktionszeit für auf das Benutzerobjekt aufgebrachte Kräfte hilfreich sein, was beim Erzeugen einer realistischen und genauen Kraftrückkopplung wesentlich ist. Es kann beispielsweise zweckmäßig sein, dass der Hauptrechner 12 eine "räumliche Darstellung" zum Mikroprozessor 26 sendet, die Daten sind, die die Anordnung aller graphischen Objekte, die in der GUI angezeigt werden, welchen Kräfte zugeordnet sind, und die Arten dieser graphischen Objekte beschreiben (im Webseiten-Ausführungsbeispiel kann die Anordnung/Art von graphischen Objekten vom entfernten Computer, der die Seite bereitstellt, heruntergeladen werden). Der Mikroprozessor kann eine solche räumliche Darstellung im Speicher 27 speichern. Außerdem kann der Mikroprozessor 26 mit den erforderlichen Befehlen oder Daten versorgt werden, um die Sensormesswerte mit der Position des Cursors auf dem Anzeigebildschirm zu korrelieren. Der Mikroprozessor könnte dann unabhängig vom Hauptrechner 12 Sensormesswerte prüfen, Cursor- und Zielpositionen ermitteln und Ausgangskräfte ermitteln. Der Hauptrechner könnte Betriebssystemfunktionen (wie z.B. Anzeigen von Bildern) implementieren, wenn es geeignet ist, und Quittungsaustauschsignale mit niedriger Geschwindigkeit können zwischen dem Prozessor 26 und dem Hauptrechner 12 übertragen werden, um die Mikroprozessor- und Hauptrechnerprozesse zu korrelieren. Der Speicher 27 kann auch eine permanente Form von Speicher, wie z.B. ein ROM oder EPROM, sein, der vorbestimmte Kraftempfindungen (Kraftmodelle, Werte, Reflexe usw.) für den Mikroprozessor 26 speichert, die speziellen Arten von graphischen Objekten zugeordnet werden sollen.
  • Andere Verfahren neben der Verwendung des Reflex-Ausführungsbeispiels können auch verwendet werden, um die Kräfte innerhalb der GUI-Umgebung bereitzustellen. Der Hauptrechner 12 kann beispielsweise direkt mit den Sensoren 28 und Stellgliedern 30 der Schnittstellenvorrichtung 14 durch eine schnelle Kommunikationsschnittstelle verbunden sein, um die Kraftrückkopplung am Benutzerobjekt 34 zu steuern, wobei somit die Notwendigkeit für den lokalen Mikroprozessor 26 beseitigt wird.
  • Beim beschriebenen Ausführungsbeispiel weisen Ziele wie z.B. das Fenster 501, Bildsymbole 502 und Menütitel 505 Kraftfelder auf, die ihnen zugeordnet sind, um die Fähigkeit des Benutzers, den Cursor 506 zu den Zielen oder um diese zu bewegen, zu beeinflussen und zu verbessern. Die Bildsymbole 502 können beispielsweise eine ihnen zugeordnete Anziehungskraft aufweisen. Diese Anziehungskraft entspringt an einem gewünschten Punkt I innerhalb jedes Bildsymbols 502, der sich in der Mittelposition des Bildsymbols befinden kann. Alternativ kann sich der Punkt I in einem anderen Bereich des Bildsymbols 502 befinden, wie z.B. nahe dem Umfang des Bildsymbols. Ebenso weist das Fenster 501 vorzugsweise eine Anziehungskraft auf, die diesem zugeordnet ist und die an einem Punkt W innerhalb des Fensters 501 entspringt, welcher in der Mitte des Fensters liegen kann. Die Punkte I und W werden als "Feldursprungspunkte" betrachtet. Alternativ können Kraftfelder an einem Punkt oder Bereich, der auf dem Bildschirm nicht gezeigt ist, entspringen. Diese Anziehungskräfte sind als "externe Kräfte" bekannt, da sie den Cursor 506 beeinflussen, wenn der Cursor außerhalb der Ziele angeordnet ist. Externe und interne Kräfte von Zielen werden mit Bezug auf 20a genauer beschrieben.
  • Bei alternativen Ausführungsbeispielen muss der Feldursprung kein Punkt sein, sondern kann ein Bereich oder eine andere definierte Fläche sein. Wie in 18 gezeigt, kann beispielsweise die gesamte Fläche eines Bildsymbols 502a als "Feldursprungsbereich" für eine Anziehungskraft betrachtet werden. Bei einem solchen Ausführungsbeispiel kann der Cursor frei in einer bestimmten Dimension bewegt werden können, wenn er sich innerhalb eines Bereichs befindet, der durch die Grenzen des Ziels definiert ist. Wenn sich der Cursor 506 beispielsweise im Bereich R1 befindet, der durch die oberen und unteren Grenzen des Bildsymbols 502a definiert ist, dann könnten horizontale Kräfte den Cursor in Richtung des Bildsymbols 502a anziehen, aber keine vertikalen Kräfte würden aufgebracht werden. Wenn sich der Cursor 506 im Bereich R2 befindet, der durch die linken und rechten Grenzen des Bildsymbols 502a definiert ist, dann könnten sich nur vertikale Anziehungskräfte auf den Cursor auswirken.
  • Die dem Fenster 501 und den Bildsymbolen 502 zugeordneten Anziehungskräfte werden auf das Benutzerobjekt 34 aufgebracht, um die Bewegung des Benutzerobjekts 34 und des Cursors 506 zu beeinflussen. Folglich verursacht eine dem Fenster 501 zugeordnete Anziehungskraft, dass der Hauptrechner 12 den Stellgliedern 30 der Schnittstellenvorrichtung 14 befiehlt, geeignete Kräfte auf das Benutzerobjekt 34 aufzubringen, um das Benutzerobjekt zu bewegen oder vorzuspannen. Kräfte werden auf das Benutzerobjekt 34 in einer Richtung aufgebracht, so dass der Cursor 506 entsprechend in einer Richtung zum Feldursprungspunkt W des Fensters 501 hin bewegt wird. Es sollte beachtet werden, dass die Kräfte für das Benutzerobjekt 34 nicht tatsächlich das Benutzerobjekt in der entsprechenden Richtung bewegen müssen; wenn beispielsweise passive Stellglieder verwendet werden, kann das Benutzerobjekt durch die Stellglieder nicht physikalisch bewegt werden. In diesem Fall können Widerstandskräfte aufgebracht werden, so dass das Benutzerobjekt 34 leichter durch den Benutzer in der entsprechenden Richtung bewegt wird und blockiert wird oder einen Widerstand spürt, wenn es in anderen Richtungen, vom Punkt W weg oder tangential zu diesem bewegt wird (Ausführungsbeispiele mit passiven Stellgliedern werden mit Bezug auf 20c genauer beschrieben). Die auf das Benutzerobjekt 34 aufgebrachte Anziehungskraft, die den Cursor 506 in Richtung des Punkts W bewegen oder vorspannen würde, ist durch die gestrichelte Linie 507 in 18 dargestellt. Vorzugsweise wird die Kraft mit Bezug auf einen einzelnen Bezugspunkt des Cursors 506 aufgebracht, welcher im bevorzugten Ausführungsbeispiel der Spitzenpunkt T ist. Bei alternativen Ausführungsbeispielen kann sich der Bezugspunkt in der Mitte oder an einer anderen Stelle am Cursor 506 oder an einem anderen vom Benutzer gesteuerten graphischen Objekt befinden. Die Anziehungskräfte können beispielsweise mit einer 1/R- oder 1/R2-Beziehung zwischen dem Feldursprungspunkt W oder I und der Cursorspitze T berechnet werden, um die Schwerkraft zu simulieren, wie vorstehend mit Bezug auf 14 beschrieben.
  • Für andere Arten von Zielen können Abstoßfelder einem Feldursprungspunkt zugeordnet sein. Es kann beispielsweise erwünscht sein, zu verhindern, dass sich der Cursor 506 zu speziellen Bereichen oder Zielen auf dem Bildschirm innerhalb der GUI 500 bewegt oder auf diese zugreift. Diese Bereiche könnten Daten, die im Hintergrund verarbeitet werden, oder andere Daten, deren Auswahl durch den Cursor 506 nicht erwünscht ist, anzeigen. Wenn das Fenster 501 ein solches Ziel ist, kann beispielsweise ein Abstoßfeld in der entgegengesetzten Richtung zu der durch die Linie 507 dargestellten dem Fenster 501 zugeordnet sein und kann am Feldursprungspunkt W entspringen. Die Kraft würde das Benutzerobjekt 34 und den Cursor 506 vom Ziel wegbewegen, was es für den Benutzer schwieriger macht, den Cursor 506 auf das Ziel zu bewegen.
  • Beim bevorzugten Ausführungsbeispiel legt die Position des Cursors 506 fest, welche Feldkräfte sich auf den Cursor 506 und das Benutzerobjekt 34 auswirken. Wie anschließend genauer beschrieben, sind Zielen vorzugsweise interne und externe Kräften in Bezug auf den Cursor 506 zugeordnet. Vorzugsweise sind Anziehungskräfte externe Kräfte und wirken sich folglich auf das Benutzerobjekt 34 und den Cursor 506 nur dann aus, wenn der Cursor 506 außerhalb des Ziels angeordnet ist. Beim bevorzugten Ausführungsbeispiel wirken sich nur die externen Kräfte der Ziele höchster Ebene, die außerhalb des Cursors 506 liegen, auf den Cursor 506 und das Objekt 34 aus. In 18 wirkt sich folglich nur die Anziehungskraft des Fensters 501 auf den Cursor 506 und das Benutzerobjekt 34 aus, da die Bildsymbole 502 und Menütitel 505 auf einer niedrigeren Ebene in der Hierarchie liegen. Wenn der Cursor 506 innerhalb des Fensters 501 angeordnet wäre, würden sich nur die Anziehungsfelder der Bildsymbole 502 und Menütitel 505 auf den Cursor 506 und das Benutzerobjekt 34 auswirken und die Anziehungskraft 507 würde vorzugsweise entfernt werden. Diese Beziehung wird mit Bezug auf 20a genauer beschrieben. Bei alternativen Ausführungsbeispielen können die Kräfte von verschiedenen Zielen auf verschiedene Weisen kombiniert oder ausgeschlossen werden.
  • 19 stellt schematisch die GUI 500 dar, in der mehrere Fenster 501, 530 und 540 auf dem Anzeigebildschirm 20 angezeigt werden. Innerhalb des Fensters 501 sind Bildsymbole 502, eine Menüleiste 504, ein Fenster 518 und ein Balkenmenü 517 gruppiert; das Fenster 518 umfasst ein Bildsymbol 519. Innerhalb des Fensters 530 sind Bildsymbole 532 und eine Menüleiste 534 gruppiert. Das Fenster 540 umfasst Bildsymbole 542 und eine Menüleiste 544.
  • Alle drei Fenster 501, 530 und 540 liegen auf derselben Hierarchieebene. Bei einem bevorzugten Ausführungsbeispiel werden daher, wenn der Cursor 506 außerhalb des Umfangs aller drei Fenster angeordnet ist, wie gezeigt, der Cursor 506 und das Benutzerobjekt 34 durch eine Kombination der drei externen Anziehungskräfte, eine Anziehungskraft von jedem Fenster, beeinflusst. Diese Anziehungskräfte sind durch gestrichelte Linien (Vektoren) 520, 522 und 524 dargestellt. Die gestrichelte Linie 520 stellt die Anziehungskraft in einer Richtung zum Feldursprungspunkt W1 des Fensters 501 dar, die Linie 522 stellt die Anziehungskraft zum Feldursprungspunkt W2 des Fensters 530 dar und die Linie 524 stellt die Anziehungskraft zum Feldursprungspunkt W3 des Fensters 540 dar. Die Beträge dieser Kräfte hängen vorzugsweise von einer Formel wie z.B. dem Inversen des Abstandes zwischen jedem Ziel und dem Punkt T des Cursors ab. Diese Anziehungskräfte werden vorzugsweise als Vektoren aufsummiert, um eine resultierende gesamte Anziehungskraft in einer resultierenden Richtung mit einem resultierenden Betrag vorzusehen (nicht dargestellt). Folglich würden der Cursor 506 und das Benutzerobjekt 34 in der resultierenden Richtung bewegt oder vorgespannt werden, bis sie entweder den Ursprungspunkt des resultierenden Feldes erreichen oder bis eine Bedingung auftreten würde, um die auf den Cursor 506 aufgebrachten Kräfte zu ändern. Bei alternativen Ausführungsbeispielen können andere Verfahren verwendet werden, um Kraftvektoren von mehreren Zielen zu kombinieren. Andere Organisationen von Hierarchien können beispielsweise verwendet werden. Oder die Beträge von Kräften könnten nicht summiert werden, so dass der resultierenden Anziehungskraft ein vorbestimmter Betrag oder ein Betrag, der von den Arten von Zielen abhängt, die beigetragene Kräfte aufweisen, zugewiesen werden kann.
  • Keine Kräfte, die den Bildsymbolen 502, 532 und 542, den Menüleisten 504, 534 und 544, dem Balkenmenü 510, dem inneren Fenster 518 und auch nicht dem "Schieberegler" und der entsprechenden Bildlaufleiste 582 zugeordnet sind, wirken sich auf den Cursor 506 und das Benutzerobjekt 34 aus, während der Cursor 506 außerhalb der Fenster angeordnet ist, wie gezeigt. Die in 19 durchzuführende Hauptaufgabe ist die Aktivierung oder Auswahl eines speziellen Fensters, nicht des Inhalts eines Fensters. Folglich würde der Einschluss von Kräften, die durch Ziele innerhalb eines Fensters entstehen, die Fensterauswahl stören. Sobald der Cursor 506 innerhalb eines Fensters angeordnet ist, treten dann die den Zielen innerhalb des Fensters zugeordneten Kräfte in Aktion. Sobald der Cursor 506 beispielsweise innerhalb des Fensters 501 bewegt wird, wird die externe Anziehungskraft, die dem Fenster 501 zugeordnet ist, vorzugsweise entfernt und die externen Anziehungskräfte der Bildsymbole 502, des Fensters 518 und der Menütitel 505 werden aufgebracht. Die Anziehungskraft des Bildsymbols 519 innerhalb des Fensters 518 wird vorzugsweise nicht aufgebracht, da sie nicht auf der höchsten Hierarchieebene außerhalb des Cursors 506 liegt, d.h. das Bildsymbol 519 liegt auf einer niedrigeren Hierarchieebene als das Fenster 518.
  • Nur Kräfte, die externen Zielen höchster Ebene zugeordnet sind, wirken sich vorzugsweise auf den Cursor 506 aus. Ein Grund dafür besteht darin, dass, wenn Anziehungskräfte, die Zielen innerhalb eines Fensters zugeordnet sind, zur externen Kraft des Fensters hinzugefügt werden würden, dann ein Fenster mit mehreren Bildsymbolen andere Fenster "überwältigen" könnte, indem es einen viel größeren Betrag einer Anziehungskraft auf das Benutzerobjekt 34 ausübt als die anderen Fenster. Der Cursor 506 könnte dann in eine stetige Bewegung zum Fenster mit mehreren Bildsymbolen eingefangen werden. Wenn sich jedes Fenster gleichermaßen auf den Cursor 506 auswirkt, dann ist es für den Benutzer leichter, den Cursor zum gewünschten Fenster zu bewegen. Bei alternativen Ausführungsbeispielen kann natürlich, wenn es erwünscht wäre, dass ein Fenster mit mehr Zielen eine größere Kraft auf den Cursor 506 ausübt als Fenster mit weniger Zielen, dann eine solche Wirkung implementiert werden. Der Betrag der Kräfte bei einem solchen Ausführungsbeispiel könnte beispielsweise so begrenzt werden, dass der Benutzer immer noch alle Fenster, die in der GUI 500 angezeigt werden, auswählen könnte und dennoch der Benutzer geringfügig stärkere Kräfte von Fenstern mit einer größeren Anzahl von Bildsymbolen spüren würde.
  • Das vorstehend beschriebene Ausführungsbeispiel nimmt an, dass der Betrag der jedem Fenster zugeordneten externen Kraft am Cursor 506 auf dieselbe Weise berechnet wird. Bei anderen Ausführungsbeispielen kann sich jedoch der Betrag von Anziehungs- oder anderen Kräften, die Zielen zugeordnet sind, in Abhängigkeit von den Eigenschaften der Ziele unterscheiden oder es kann durch den Softwareprogrammierer oder Benutzer befohlen werden, dass er ein gewünschter Betrag ist. Die Größe der Fenster 501, 530 und 540 kann beispielsweise den Betrag der Anziehungskraft, die sich auf den Cursor 506 auswirkt, bestimmen. Wenn ein Benutzer ein Fenster auf eine kleinere Größe zieht, könnte die diesem Fenster zugeordnete Anziehungskraft proportional kleiner gemacht werden. Eine virtuelle "Masse" kann beispielsweise einem Ziel auf der Basis der Größe zugewiesen werden und die Masse kann mit dem Inversen des Abstandes zwischen dem Ziel und dem Cursor multipliziert werden, um die resultierende Anziehungskraft auszugleichen. Dem Cursor kann auch eine Masse zugewiesen werden, falls erwünscht, um reale physikalische Kräfte zwischen Objekten zu simulieren. Andere Merkmale oder Eigenschaften des Ziels, wie z.B. Farbe, Art, Form usw., könnten auch den Betrag der Kraft in Abhängigkeit davon steuern, wie der Programmierer oder Benutzer eine gewünschte GUI-Kraftumgebung einrichtet.
  • Außerdem kann ein Programmierer der GUI 500 oder eines Anwendungsprogramms, das unter der GUI läuft, vorzugsweise den Betrag der Kräfte steuern, die speziellen angezeigten Zielen (oder den "Massen" der Ziele) zugeordnet sind. Der Kraftfeld-Hauptrechnerbefehl und Befehlsparameter, die vorstehend beschrieben sind, können beispielsweise einen Betrag für spezielle angezeigte Fenster festlegen können. Jedem Ziel könnte folglich eine andere, vorbestimmte Kraft zugeordnet sein. Dies könnte ermöglichen, dass ein Softwareentwickler eine gewünschte Kraft festlegt, die einem speziellen Fenster für sein Anwendungsprogramm zugeordnet werden soll, welches unter der GUI 500 läuft. Außerdem könnte bei einigen Ausführungsbeispielen einem Benutzer der GUI 500 ermöglicht werden, spezielle Beträge von Kräften, die Zielen zugeordnet sind, festzulegen. Ein Menübefehl oder ein anderes Standardverfahren, um dem Benutzer zu ermöglichen, Kräfte speziellen Zielen zuzuordnen, kann implementiert werden.
  • 20a ist eine schematische Darstellung von angezeigten Zielen, welche die Konzepte von internen und externen Kräften der vorliegenden Erfindung, die Zielen zugeordnet sind, darstellt. Wie hierin angeführt, sind "externe Kräfte" diejenigen Kräfte, die einem Ziel zugeordnet sind, das sich auf den Cursor 506 auswirkt, wenn der Cursor 506 außerhalb dieses Ziels angeordnet ist, d.h. wenn der Cursor außerhalb des Umfangs des Ziels angeordnet ist. Im Gegensatz dazu sind "interne Kräfte" diejenigen Kräfte, die einem Ziel zugeordnet sind, das sich auf den Cursor 506 auswirkt, wenn der Cursor innerhalb des Ziels, d.h. innerhalb des Umfangs des Ziels, angeordnet ist. Jedes Ziel besitzt vorzugsweise externe Kräfte und interne Kräfte, die ihm zugewiesen sind, wie nachstehend beschrieben. Die internen Kräfte und/oder externen Kräfte, die einem Ziel zugeordnet sind, können natürlich als Null festgelegt werden, was diese Kräfte effektiv entfernt.
  • Die Zielbereiche 550, 552, 554, 556 und 558 werden in der GUI-Umgebung 500 angezeigt. Die Ziele 550, 552 und 554 liegen auf derselben Hierarchieebene und sind graphischen Objekten wie z.B. Fenstern oder Bildsymbolen zugeordnet. Ziele sind einem entsprechenden graphischen Objekt wie z.B. einem Bildsymbol "zugeordnet", was bedeutet, dass sie als Eigenschaft des Bildsymbols gekennzeichnet werden können. Das Ziel weist typischerweise dieselbe Größe auf wie das zugehörige graphische Objekt, kann jedoch bei anderen Ausführungsbeispielen als kleiner oder größer als das Objekt oder als mit einer anderen Form als das Objekt festgelegt sein. Die Ziele 556 und 557 sind innerhalb des Ziels 554 gruppiert und liegen folglich auf derselben Hierarchieebene zueinander, jedoch auf einer niedrigeren Hierarchieebene als die anderen Ziele 550, 552 und 554. Die Ziele 556 und 558 können beispielsweise Bildsymbolen, Fenstern, Menüs, Menüpunkten innerhalb eines Menüs 554 oder anderen innerhalb des Fensters 554 gruppierten Zielen zugeordnet sein. Rechteckige und kreisförmige Ziele sind in 20a gezeigt, obwohl andere Formen, selbst unregelmäßige, als Ziele vorgesehen sein können.
  • Die Punkte 560, 562 und 564 stellen mögliche Orte des Cursors 506 in der GUI 500 dar. Wie vorstehend mit Bezug auf die 18 und 19 erläutert, wirken sich externe Kräfte, die den Zielen 556 und 558 niedrigerer Ebene zugeordnet sind, nicht auf den Cursor 506 aus, wenn der Cursor außerhalb des Ziels 554 höherer Ebene angeordnet ist. Wenn sich der Cursor 506 am Punkt 560 außerhalb der Zielbereiche 550, 552 und 554 befindet, ist die Gesamtkraft am Cursor 506 daher gleich der Summe der externen Zielkräfte, die jedem Ziel 550, 552 und 554 zugeordnet sind. Als Beispiel können die zugehörigen Kräfte ein Anziehungs- (oder Abstoß-) Kraftfeld sein, wie vorstehend beschrieben. Die Kräfte würden folglich in einer Richtung zu den Feldursprungspunkten W1, W2 und W3 hin liegen, die als gestrichelte Linien 566, 567 und 569 gezeigt sind. Alternativ können die externen Kräfte eines oder eine beliebige Kombination der Kraftmodelle sein, die vorher mit Bezug auf die 9 und 14 beschrieben wurden. Eine externe Texturkraft oder eine externe Dämpfungskraft oder eine Kombination von diesen oder anderen Kräften kann beispielsweise aufgebracht werden. Außerdem können andere Kräfte oder Kraftmodelle als externe Kräfte zugewiesen werden. Es sollte beachtet werden, dass viele Arten von Kraftmodellen keinen Feldursprung erfordern wie bei den Beispielen der 18 und 19.
  • Außerdem werden vorzugsweise externe Zielreichweiten jeder externen Kraft zugewiesen, die jedem der Ziele 550, 552 und 554 zugeordnet ist. Diese externen Reichweiten legen einen externen Bereich von einem Zielpunkt P zur Reichweitengrenze fest, in der sich die externe Kraft auswirkt. Bei einem Ausführungsbeispiel kann der Zielpunkt P zum Festlegen von Reichweiten derselben Punkt wie der Feldursprungspunkt sein, wie für das Ziel 550 gezeigt. Die externe Reichweite 555 kann beispielsweise die Grenze eines festgelegten externen Bereichs 568 für das Ziel 550 darstellen, welche in einem vorbestimmten Abstand vom Punkt P liegt. Wenn der Cursor 506 innerhalb des externen Bereichs 568 vom Umfang des Ziels 550 bis zur externen Reichweite 555 angeordnet ist, dann ist die externe Kraft, die dem Ziel 550 zugeordnet ist, aktiv. Wenn der Cursor 506 außerhalb des Bereichs 568 liegt, dann ist die externe Kraft nicht aktiv. Die externe Zielkraft, die dem Zielbereich 550 zugeordnet ist, ist beispielsweise am Punkt 560 Null, da sich ihr externer Bereich 568 nicht bis zum Punkt 560 erstreckt. Durch Festlegen solcher Reichweiten wird die Verarbeitungszeit des lokalen Mikroprozessors 26 und/oder Hauptrechners 12 verringert, da die externen Kräfte nur berechnet und aufgebracht werden müssen, wenn sich der Cursor in diesen Bereichen befindet. Der externe Bereich 568 kann als Abstand vom Punkt P festgelegt werden oder kann alternativ bezüglich des Umfangs eines Ziels festgelegt werden oder kann eine vorbestimmte Form um seinen zugehörigen Zielbereich aufweisen. Außerdem kann eine Gesamtkraft, die sich aus den externen Kräften von mehreren Zielen ergibt, eine neu berechnete externe Reichweite aufweisen. Bei alternativen Ausführungsbeispielen kann dem Bereich außerhalb der externen Reichweite eines Ziels ein anderes Kraftmodell und/oder ein anderer Betrag anstatt Null zugewiesen werden.
  • Der Punkt 562 liegt innerhalb des Ziels 554 (intern im Ziel 554) und außerhalb der Ziele 556 und 558. Am Punkt 562 wäre die Gesamtkraft, die sich auf den Cursor 506 auswirkt, eine Kombination einer internen Zielkraft für das Ziel 554 und von externen Zielkräften für die Ziele 556 und 558. Der Cursor 506 ist von den externen Kräften der Ziele 550, 552 und 554"isoliert", da er sich innerhalb des Ziels 554 befindet. Die den Zielen 556 und 558 zugeordneten externen Kräfte sind zu den vorstehend beschriebenen externen Kräften ähnlich. Die dem Ziel 554 zugeordnete interne Kraft wirkt sich auf den Cursor 506 nur dann aus, wenn sich der Cursor innerhalb des Umfangs des Ziels befindet. Interne Zielkräfte des bevorzugten Ausführungsbeispiels werden nachstehend mit Bezug auf 20b beschrieben.
  • Der Punkt 564 liegt innerhalb des Ziels 556. Ein Cursor 506, der am Punkt 564 angeordnet ist, würde eine interne Kraft, die dem Ziel 556 zugeordnet ist, und keine anderen Kräfte erfahren. Es sind keine externen Kräfte vorhanden, die sich auf den Cursor 506 an diesem Ort auswirken, da keine Ziele einer niedrigeren Hierarchieebene im Ziel 556 gruppiert sind. Außerdem wird die interne Kraft des Ziels 554 entfernt, wenn der Cursor durch eine interne Kraft eines Ziels mit niedrigerer Hierarchieebene beeinflusst wird, was in diesem Fall die interne Kraft des Ziels 556 ist.
  • 20b ist eine schematische Darstellung eines einzelnen Ziels 570, dem interne und externe Kräfte zugeordnet sind. Beim bereitgestellten Beispiel kann dem Ziel 570 ein Menüpunkt, eine Schaltfläche, ein Bildsymbol oder ein Fenster zugeordnet sein. Eine Form des externen Bereichs, die durch die Reichweite 555 dargestellt ist, bezeichnet einen Bereich für eine dem Ziel 570 zugeordnete externe Kraft. Der Cursor 506 wird durch die externe Zielkraft für das Ziel 570 beeinflusst, wenn er sich innerhalb des externen Bereichs 568 befindet, der zwischen der gestrichelten Linie 572 und einem äußeren Umfang 575 des Ziels 570 festgelegt ist. Alternativ kann der externe Bereich zwischen der gestrichelten Linie 572 und einem inneren Umfang 577 des Ziels 570 festgelegt sein. Man erinnere sich daran, dass das einem graphischen Objekt zugeordnete Ziel nicht dieselbe Größe und Form besitzen muss wie das graphische Objekt, so dass ein Zielumfang innerhalb oder außerhalb des Umfangs des auf dem Bildschirm 20 angezeigten graphischen Objekts liegen kann.
  • Ein interner Zielbereich 574 kann einen Totbereich 576 und einen Einfangbereich 578 umfassen. Der Totbereich 576 ist als innerster, mittlerer Bereich des Ziels 570 festgelegt und erstreckt sich zu einem inneren Umfang 577. Im Totbereich wären Kräfte, die dem Totbereich zugeordnet sind ("Totbereichskräfte") und die auf den Cursor 506 aufgebracht werden, vorzugsweise Null, um eine im Wesentlichen freie Bewegung des Cursors innerhalb dieses Bereichs zu ermöglichen (auch beliebige externe Kräfte von beliebigen Zielen, die innerhalb des Ziels 570 enthalten sind, wären wirksam). Dieser Totbereich entspricht folglich den vorstehend mit Bezug auf die 9 und 14 erörterten Unempfindlichkeitsbereichen, wie auf die Rückstell- und Rückstellfederkräfte und die Nut/Divot-Kräfte angewendet.
  • Alternativ kann dem Totbereich 576 eine spezielle Kraft oder ein spezielles Kraftmodell zugeordnet sein. Eine Dämpfungskraft- oder Texturkraftempfindung kann beispielsweise vorgesehen werden, wenn der Cursor innerhalb dieses Bereichs angeordnet ist, wobei ein Kraftrückkopplungsbewusstsein für den Benutzer vorgesehen wird, dass sich der Cursor 506 innerhalb des Ziels 570 befindet. Andere Kraftmodelle können auch angewendet werden, wie z.B. die vorstehend mit Bezug auf die 9 und 14 beschriebenen Kräfte. Außerdem wird der gesamte angezeigte GUI-Teil 500 auf dem Bildschirm 20 vorzugsweise als Ziel betrachtet und eine Totbereichskraft wie z.B. eine Dämpfungskraft oder eine Texturkraft kann auf das Benutzerobjekt 34 aufgebracht werden, wenn sich der Zeiger 506 über den Hintergrund oder das Desktop der GUI bewegt. Eine solche Dämpfungskraft kann Benutzern mit einer Geschicklichkeitsunfähigkeit stark helfen und diesen Benutzern ermöglichen, den Zeiger 506 genauer zu bewegen. Oder einzelnen Fenstern können verschiedene Totbereichskräfte zugewiesen werden. Dieses Merkmal kann nützlich sein, um das "Gefühl" von verschiedenen Fenstern, die auf dem Bildschirm angezeigt werden, zu unterscheiden, wobei folglich die Verwirrung des Benutzers verringert wird. Ein Fenster kann beispielsweise eine Textur-Totbereichskraft von eng beabstandeten Höckern aufweisen, während ein anderes Fenster eine Textur-Totbereichskraft von weit beabstandeten Höckern aufweisen kann. Dies ermöglicht dem Benutzer nur durch das Gefühl der Totbereichstextur zu identifizieren, in welchem Fenster sich der Cursor befindet.
  • Der Einfangbereich 578 ist vorzugsweise an oder nahe dem Umfang des Ziels 570 vorgesehen. Die dem Einfangbereich 578 zugeordneten Kräfte werden auf den Cursor 506 aufgebracht, wenn der Cursor innerhalb des Einfangbereichs angeordnet ist oder durch diesen bewegt wird. Da der Einfangbereich typischerweise schmal ist, kann es manchmal schwierig sein, festzustellen, ob sich der Cursor innerhalb des Einfangbereichs befindet. Der Hauptrechner oder lokale Mikroprozessor 26 stellt beispielsweise den Ort des Cursors 506 (und des Benutzerobjekts 34) fest, indem er Abtastwerte von den Sensoren 28 nimmt. Wenn der Benutzer das Benutzerobjekt 34 sehr schnell bewegt, können die Messwerte von den Sensoren eine zu langsame Frequenz aufweisen, um Daten zu liefern, die zeigen, dass sich der Cursor innerhalb des Einfangbereichs befunden hat. Die Breite des Einfangbereichs 578 (d.h. der Abstand vom inneren Umfang 577 zum äußeren Umfang 575) kann folglich groß genug gemacht werden, so dass der Cursor innerhalb des Einfangbereichs erfasst werden kann, selbst wenn der Benutzer den Cursor schnell bewegt. Alternativ kann ein Verlauf von Sensormesswerten geprüft werden, um festzustellen, ob sich der Cursor vorher außerhalb (oder innerhalb) des Ziels 570 befunden hat und ob der Cursor anschließend innerhalb (oder außerhalb) des Ziels 570 liegt, was folglich angibt, dass der Cursor durch den Einfangbereich 578 gelaufen ist und dass eine Einfangkraft daher auf das Benutzerobjekt 34 aufgebracht werden sollte.
  • Beim bevorzugten Ausführungsbeispiel können sich zwei verschiedene Kräfte auf den Cursor 506 in Abhängigkeit davon auswirken, ob sich der Cursor vom Totbereich zum externen Bereich des Ziels bewegt hat (wobei er das Ziel 570 verlässt) oder umgekehrt (wobei er in das Ziel 570 eintritt). Wenn der Cursor vom Totbereich 576 zum externen Bereich 568 bewegt wird, wird eine "Austrittseinfangkraft" auf das Benutzerobjekt 34 aufgebracht. Die Austrittseinfangkraft ist vorzugsweise eine Barrieren- oder "Überschnapp"-Kraft, die am inneren Umfang 577 positioniert ist, welche vorzugsweise eine Federkraft umfasst, wie symbolisch durch Federn 579 in 20b dargestellt. Die Federkraft verursacht einen Federwiderstand gegen die Bewegung des Cursors 506 in der Austrittsrichtung, die als kleine Widerstandskraft in der Richtung zum Totbereich 576 hin beginnt und die zunimmt, wenn der Cursor näher zum äußeren Umfang 575 bewegt wird. Die Federkraft kann verursachen, dass sich der Cursor/das Benutzerobjekt zum Totbereich 576 zurückbewegt, wenn der Benutzer das Benutzerobjekt loslässt. Diese Barrierenkraft verhindert folglich, dass der Cursor leicht aus dem Ziel 570 "entkommt". Bei Ausführungsbeispielen mit passiven Stellgliedern kann eine Dämpfungsbarrierenkraft anstelle der Federkraft vorgesehen werden. Die Barrierenkraft kann nützlich sein, um den Cursor 506 innerhalb eines Bildsymbols, einer Bildlaufleiste oder eines Menütitels zu halten, so dass der Benutzer leichter die Operation auswählen kann, die durch das Bildsymbol usw. festgelegt ist. Durch Vorsehen einer Totbereichskraft von Null und einer Barrierenaustritts-Einfangkraft kann ein Benutzer den Cursor außerdem innerhalb des internen Bereichs eines Ziels bewegen und die Form des Ziels "spüren", was zur Sinneswahrnehmung von graphischen Objekten beiträgt. Der äußere Umfang 575 des Ziels 570 definiert vorzugsweise einen Schnappabstand (oder eine Schnappbreite) der Barriere, so dass, sobald der Cursor 506 über den Umfang 575 hinaus bewegt wird, diese Austrittseinfangkraft entfernt wird. Das Divot-Kraftmodell kann verwendet werden, wenn eine Einfangkraft auf allen vier Seiten des Umfangs des Ziels 570 erwünscht ist, und ein Nutkraftmodell kann verwendet werden, wenn Einfangkräfte nur in einer Dimension erwünscht sind.
  • Wenn der Cursor 506 in das Ziel 570 eintritt, wird eine "Eintrittseinfangkraft" auf das Benutzerobjekt 34 aufgebracht. Die Eintrittseinfangkraft ist vorzugsweise dieselbe Federkraft wie die Austrittseinfangkraft in der gleichen Richtung zum Totbereich 576 hin. Wenn der Cursor 506 zum ersten Mal in den Einfangbereich eintritt, beginnt die Federkraft somit sofort, das Benutzerobjekt/den Cursor in Richtung des Totbereichs zu schieben. Je näher der Cursor am Totbereich angeordnet ist, desto weniger Federkraft wird aufgebracht. Bei einigen Ausführungsbeispielen kann der Betrag der Eintrittsfederkraft auf einen vorbestimmten Wert oder Versatz begrenzt werden, um zu verhindern, dass sich der Cursor 506 aufgrund einer übermäßigen Anziehungskraft am Ziel 570 vorbeibewegt (über dieses "hinausschießt").
  • Alternativ kann ein Anziehungskraftfeld ähnlich den vorstehend beschriebenen externen Anziehungskraftfeldern als Eintrittseinfangkraft bereitgestellt werden. Bei einem solchen Ausführungsbeispiel muss die Bewegungsrichtung des Cursors 506 so festgelegt werden, dass bekannt ist, ob die Austrittseinfangkraft oder die Eintrittseinfangkraft bereitgestellt werden soll. Der Verlauf von Sensormesswerten kann geprüft werden, wie vorstehend beschrieben, um die Cursorrichtung zu ermitteln. Bei alternativen Ausführungsbeispielen können andere oder zusätzliche Arten von Eintrittseinfangkräften aufgebracht werden.
  • Außerdem kann eine andere "Trägheits"-Kraft auf das Benutzerobjekt 34 aufgebracht werden, wenn der Cursor 506 im Totbereich 576 für spezielle Arten von Zielen angeordnet ist und wenn spezielle Bedingungen erfüllt sind. Die Trägheitskraft kann beispielsweise aufgebracht werden, wenn eine Befehlsgeste, wie z.B. das Drücken oder Halten einer Taste, vom Benutzer eingegeben wird. Bei einem bevorzugten Ausführungsbeispiel wird die Trägheitskraft vorgesehen, wenn der Benutzer den Zeiger 506 in den Totbereich 576 bewegt, eine Taste am Steuerhebel oder an der Maus niederhält und das graphische Objekt (und zugehörige Ziel 570) mit dem Zeiger 506 über den Bildschirm 20 bewegt oder "zieht". Das gezogene Ziel 570 weist eine simulierte "Masse" auf, die sich auf das Ausmaß der Trägheitskraft, die auf das Benutzerobjekt 34 aufgebracht wird, auswirkt. Bei einigen Ausführungsbeispielen kann die Trägheitskraft durch die Geschwindigkeit und/oder Beschleunigung des Cursors 506 zusätzlich zu oder anstelle der simulierten Masse beeinflusst werden. Andere Faktoren, die sich auf den Betrag der Trägheitskraft auswirken können, wie z.B. die Schwerkraft, können auch simuliert werden. Wenn beispielsweise ein großes Bildsymbol durch den Cursor 506 gezogen wird, dann kann der Benutzer eine relativ große Dämpfungskraft spüren, wenn er das Benutzerobjekt 34 bewegt. Wenn der Benutzer ein relativ kleines Bildsymbol mit dem Zeiger 506 zieht, dann sollte eine kleinere Dämpfungskraft auf das Benutzerobjekt 34 aufgebracht werden. Größeren Objekten wie z.B. Fenstern können andere Massen als anderen Objekten wie z.B. Bildsymbolen zugewiesen werden. Alternativ kann die Masse eines Bildsymbols damit in Beziehung stehen, wie groß hinsichtlich des Speicherplatzes (z.B. in Bytes) sein zugehöriges Programm oder seine zugehörige Datei ist. Ein Bildsymbol mit einer Datei mit großer Größe ist beispielsweise schwieriger zu bewegen (ist "schwerer") als ein Bildsymbol für eine Datei mit kleinerer Größe. Die Masse eines Ziels kann auch mit anderen Eigenschaften eines Ziels/graphischen Objekts in Beziehung stehen, wie z.B. mit der Art des graphischen Objekts, der Art von Anwendungsprogramm, das dem graphischen Objekt zugeordnet ist (d.h. größere Masse für Textverarbeitungs-Bildsymbole, weniger Masse für Spielprogramm-Bildsymbole usw.) oder einem vorbestimmten Prioritätsniveau. Somit kann die Kraftrückkopplung direkt eine Information über ein Ziel für den Benutzer betreffen, was beim Durchführen und Auswählen von gewünschten Betriebssystemaufgaben unterstützt. Außerdem kann ein Trägheitskraftmerkmal nützlich sein, wenn ein Benutzer eine spezielle Bildschirmanordnung von graphischen Objekten in der GUI 500 beibehalten will. Allen Objekten auf dem Bildschirm kann beispielsweise eine sehr große "Masse" zugewiesen werden, wenn der Benutzer nicht will, dass Objekte leicht aus der bevorzugten Anordnung bewegt werden.
  • Andere Arten von Kräften können auch auf das Benutzerobjekt 34 aufgebracht werden, wenn andere Befehlsgesten vorgesehen werden und/oder wenn das Ziel gezogen oder bewegt wird, wie z.B. Texturkräfte und Rucke. Wenn simulierte Massen verwendet werden, um die externe Kraft eines Ziels zu berechnen, wie für die vorstehend beschriebene Anziehungsschwerkraft, dann kann außerdem eben diese Masse verwendet werden, um eine Trägheitskraft für das Ziel zu berechnen, wenn das Ziel gezogen wird. Bei noch einem weiteren Ausführungsbeispiel kann ein Ziel eine Federkraft aufweisen, die seiner Position zugeordnet ist, bevor es bewegt wurde. Wenn der Benutzer beispielsweise ein Bildsymbol zieht, würde sich die Bewegung des Benutzerobjekts 34 anfühlen, als ob eine Feder zwischen dem Bildsymbol und seiner ersteren Position angebracht ist. Diese Kraft würde den Cursor in Richtung der ersteren Position des Bildsymbols vorspannen. Bei einem anderen, ähnlichen Ausführungsbeispiel kann eine Feder oder eine andere Art von Kraft am Benutzerobjekt 34 vorgesehen werden, wenn ein graphisches Objekt in der Größe geändert wird. Ein Fenster kann beispielsweise typischerweise in der Größe geändert werden, indem eine Grenze oder Ecke des Fensters mit dem Cursor 506 ausgewählt wird und das Fenster auf eine gewünschte Größe gezogen wird. Wenn das Fenster auf eine größere Größe gezogen wird, dann kann eine "Dehnungs"-Federkraft auf das Benutzerobjekt aufgebracht werden. Wenn das Fenster auf eine kleinere Größe gezogen wird, dann kann eine "Druck"-Federkraft aufgebracht werden. Solche Federkräfte können auch in einem CAD-Programm bereitgestellt werden, wenn graphische Objekte gedehnt oder anderweitig manipuliert werden. Die Implementierung dieser Arten von Kräften kann eine einfache Proportionalität zwischen der Verschiebung und der Kraft umfassen und ist Fachleuten gut bekannt.
  • Die Ziele für Trägheitskräfte können auch separat von den Zielen für die internen und externen Kräfte festgelegt werden, wie vorstehend beschrieben. Die meisten Fenster in einer GUI können beispielsweise nur durch den Cursor 506 gezogen werden, wenn sich der Cursor an einer "Titelleiste" (oberer Teil) des Fensters oder an einem ähnlichen speziellen Ort befindet. Dem Fenster kann ein Trägheitsziel und ein separates internes/externes Kraftziel zugeordnet sein. Folglich kann das Ziel für die internen/externen Kräfte so festgelegt werden, dass es das gesamte Fenster abdeckt, während das Ziel für die Trägheitskräfte so festgelegt werden kann, dass es nur die Titelleiste des Fensters abdeckt. Wenn der Cursor 506 auf der Titelleiste angeordnet wäre, dann könnten sowohl Trägheits- als auch interne Kräfte in Kraft sein.
  • Außerdem können Dämpfungs- und/oder Reibungskräfte anstelle von oder zusätzlich zu den Trägheitskräften vorgesehen werden. Jedem graphischen Objekt kann beispielsweise ein simulierter Dämpfungskoeffizient oder Reibungskoeffizient zugewiesen werden. Eine solche Reibung könnte beim Freihandzeichnen in einem CAD-Anwendungsprogramm in der GUI nützlich sein, wobei der Reibungskoeffizient auf einer "Stiftgröße" eines Zeichencursors basieren könnte. Eine Texturkraft könnte auch aufgebracht werden, wenn ein graphisches Objekt gezogen wird. Andere Beispiele von Kräften und zugehörigen graphischen Objekten und Funktionen umfassen die Bereitstellung von Kraftrucken oder "Höckern", wenn der Cursor 306 auf einen Bereich trifft, wenn ein Objekt losgelassen wird, nachdem es über den Bildschirm gezogen wurde, wenn der Cursor in ein Fenster eintritt oder dieses verlässt wird, oder wenn ein Fenster geöffnet oder geschlossen wird. In einem Textdokument können diese Höcker bereitgestellt werden, wenn sich der Cursor zwischen Worten, Zeilen, Buchstaben, Absätzen, Seitenumbrüchen usw. bewegt.
  • 20c ist eine schematische Darstellung eines Ziels 559 in einer GUI 500, die eine externe "Nut"-Kraft bereitstellt. Diese Art von externer Kraft ist für eine Schnittstellenvorrichtung 14 mit passiven Stellgliedern 30 geeignet. Passive Stellglieder können nur einen Widerstand gegen eine Bewegung des Benutzerobjekts 34 bereitstellen und können folglich kein Anziehungs- oder Abstoßkraftfeld als externe Kraft eines Ziels bereitstellen. Folglich kann eine externe Kraft des Ziels 559 als externe Nuten 561 bereitgestellt werden, z.B. kann das vorstehend mit Bezug auf 14 beschriebene Nutkraftmodell verwendet werden. Diese Nuten sind vorzugsweise in horizontalen und vertikalen Richtungen angeordnet und schneiden sich in der Mitte C des Ziels 559. Es sollte beachtet werden, dass die Nuten 561 vorzugsweise nicht innerhalb der GUI 500 angezeigt werden und in 20c für Erläuterungszwecke gezeigt sind (d.h. die Nuten werden gespürt, nicht gesehen). (Alternativ können die Nuten angezeigt werden.) Wenn der Cursor 506 in eine Nut bewegt wird, werden Widerstandskräfte aufgebracht, um einer Weiterbewegung aus der Nut Widerstand zu leisten, aber eine Bewegung entlang der Länge der Nut frei zu gestatten. Wenn der Cursor 506 beispielsweise in der horizontalen Nut 563a angeordnet ist, kann der Cursor 506 frei nach links und rechts bewegt werden (d.h. ohne vom Ziel 559 aufgebrachte externe Kräfte), wie durch Pfeile 565 gezeigt. Die Nut-"Wände" sehen jedoch eine Widerstandskraft gegen den Cursor vor, wenn der Cursor auf- oder abbewegt wird. Dies führt die Bewegung des Cursors 506 gewöhnlich zum Ziel 559 hin oder spannt ihn zu diesem (oder direkt von diesem weg) vor. Wenn der Cursor 506 in der vertikalen Nut 563b angeordnet ist, kann der Cursor ebenso frei auf und abbewegt werden, wie durch Pfeile 557 gezeigt, muss jedoch eine Widerstandsbarrierenkraft überwinden, wenn er sich nach links oder rechts bewegt. Die Nuten 561 weisen vorzugsweise eine vordefinierte Länge auf, die die externe Reichweite der externen Kraft des Ziels festlegt.
  • Wenn der Cursor 506 entlang einer Nut in Richtung der Mitte des Ziels 559 bewegt wird, erreicht der Cursor schließlich die Mitte C des Ziels. In dieser Position sehen beide Nuten 561 kombinierte Barrierenkräfte für den Cursor in allen vier Richtungen vor, wobei somit der Cursor an der Stelle verriegelt wird. Sobald der Cursor verriegelt ist, kann der Benutzer bequem eine Befehlsgeste vorsehen, um das dem Ziel 559 zugeordnete graphische Objekt auszuwählen. Bei einem bevorzugten Ausführungsbeispiel werden die externen Nutkräfte entfernt, sobald der Benutzer das Ziel auswählt. Wenn das Ziel 559 beispielsweise einer Schaltfläche zugeordnet ist, wie in 22 gezeigt, würde der Cursor zum Ziel 559 geführt werden, und sobald die Schaltfläche ausgewählt ist, würden die Nuten entfernt werden, was ermöglicht, dass der Cursor frei bewegt wird. Sobald der Cursor aus dem externen Bereich bewegt wird, der durch die Enden E der Nuten festgelegt ist, wäre die externe Kraft wieder wirksam.
  • 21 ist eine schematische Darstellung des Anzeigebildschirms 20, die die GUI 500 und das Fenster 501 mit einem Balkenmenü zeigt. Die vorangehenden Konzepte und bevorzugten Ausführungsbeispiele werden nun auf die Auswahl von Menüpunkten in einer GUI-Umgebung angewendet. Sobald sich der Cursor 506 innerhalb des Fensters 501 befindet, hängen die Kräfte, die auf das Benutzerobjekt 34 aufgebracht werden, von der Stelle des Cursors 506 relativ zu Zielen innerhalb des Fensters 501 auf der nächstniedrigsten Ebene der Hierarchie unter dem Fenster 501 ab. Die Menüleiste 504 wird vorzugsweise als auf derselben Hierarchieebene wie die Bildsymbole 502 betrachtet, so dass sowohl die Bildsymbole 502 als auch die Menüleiste 504 externe Anziehungskräfte auf den Cursor 506 ausüben. Alternativ kann der Menüleiste 504 eine Hierarchieebene unter jener des Fensters 501, jedoch über jener der Bildsymbole 502 zugewiesen sein, was ermöglichen würde, dass nur die Menüleiste den Cursor 506 anzieht (Hierarchieebenen von anderen graphischen Objekten könnten in anderen Ausführungsbeispielen auch geändert werden).
  • 21 stellt das Fenster 501 mit einem Dateibalkenmenü 510 dar, wobei das Menü 510 einen oder mehrere Menüpunkte 516 umfasst. Die Anzeige des Menüs 510 ergibt sich aus einer Auswahl des "Datei"-Menütitels 505 der Menüleiste 504 und wird typischerweise durch Bewegen des Cursors 506 auf den Menütitel 505 und Auswählen oder Niederhalten einer Taste wie z.B. einer Maus- oder Steuerhebeltaste durchgeführt. Sobald ein Balkenmenü wie z.B. das "Datei"-Balkenmenü 510 angezeigt wurde, beeinflussen Kraftmodelle, die dem Menü 510 oder seinen Punkten 516 zugeordnet sind, den Cursor 506 und das Benutzerobjekt 34. Wenn der Cursor 506 beispielsweise innerhalb des Fensters 501 angeordnet ist, wie durch den gestrichelten Cursorumriss 512 in 21 gekennzeichnet, wird, nachdem das Balkenmenü 510 aktiviert wurde, der Cursor 506/das Benutzerobjekt 34 vorzugsweise von seiner Position am Umriss 512 in Richtung des Feldursprungspunkts S des Menüs 510 mit einer externen Anziehungskraft des Menüs 510 angezogen. Alternativ kann ein Feldursprungsbereich, der als ganzes Menü 510 festgelegt ist, festgelegt werden, wie vorstehend beschrieben. Sobald sich der Cursor 506 innerhalb des Umfangs des Menüs 510 befindet, wie durch den Ort 514 gezeigt, dann ist die externe Anziehungskraft des Menüs nicht mehr in Kraft. Beliebige interne Menükräfte des Menüs 510 oder der Menüpunkte 516 sind dann in Kraft, wie nachstehend beschrieben. Vorzugsweise ist dem Menü 510 eine externe Kraft zugeordnet, die den Cursor 506 zur Mitte (oder eine andere festgelegte Feldursprungsposition) des Menüs 510 hin anzieht. Alternativ kann jedem Menüpunkt 516 seine eigene externe Kraft zugeordnet sein, die sich alle zu einer Gesamtkraft summieren können, die sich auf den Cursor 506 auswirken kann, wenn der Cursor außerhalb des Menüs 510 angeordnet ist. Jeder Menüpunkt könnte beispielsweise seine eigene externe Anziehungskraft mit seinem eigenen Feldursprungspunkt aufweisen, der in der Mitte jedes Menüpunkts liegt; oder andere Kraftmodelle können bei anderen Ausführungsbeispielen verwendet werden. Außerdem könnten einige Menüpunkte 516 so festgelegt sein, dass sie eine externe Kraft mit größerem Betrag als andere Menüpunkte besitzen. Die externen Kraftbeträge könnten beispielsweise gemäß den Eigenschaften der Menüpunkte (Größe, Reihenfolge in der Liste usw.), Häufigkeit der Verwendung oder gemäß persönlichen Wünschen eines Programmierers oder Benutzers der GUI 500 festgelegt werden.
  • Sobald er innerhalb des Balkenmenüs 510 angeordnet ist, liegt der Cursor 506 unvermeidlich innerhalb eines von mehreren Menüpunkten 516, die durch gestrichelte oder durchgezogene Umfänge 521 in 21 abgegrenzt sind. Die gestrichelten Linien werden typischerweise in Standardmenüs von GUIs nicht angezeigt, sondern sind hier für Erläuterungszwecke gezeigt. Vorzugsweise weist das Menü 510 keine internen Kräfte auf, aber jeder Menüpunkt 516 besitzt seine eigenen internen Kräfte, die innerhalb der Umfänge 521 der Menübereiche wirksam sind. Die gestrichelten Linien legen den Umfang von jedem Menüpunkt bezüglich anderer Menüpunkte 516 fest. Die Menüpunkte sind vorzugsweise ähnlich zum Ziel 570, das in 20b gezeigt ist. Vorzugsweise umfasst jeder Menüpunkt eine Kraft mit einem Betrag von Null in seinem Totbereich 576 und umfasst eine Barrieren- oder "Überschnapp"-Kraft (z.B. eine Feder- oder Dämpfungskraft), die sich am Umfang 521 befindet, als seine Austrittseinfangkraft gemäß der mit Bezug auf 20b beschriebenen. Diese Einfangkraft hält den Cursor 506 innerhalb eines speziellen Menüpunkts 516, sobald sich der Cursor dorthin bewegt hat. Außerdem kann jeder Menüpunkt 516 eine "Überschnapp"-Eintrittseinfangkraft umfassen, die in der Mitte des Menüpunkts angeordnet ist, um den Cursor 506 an diesen Mittelpunkt anzuziehen. Die Überschnappkraft kann als Nutkraftmodell entlang der Länge des Menüpunkts implementiert werden. Folglich wird der Cursor beim Halten innerhalb eines speziellen Menüpunktziels, wie z.B. dem Punktziel 517 Öffnen F7, unter Verwendung der Kraftrückkopplung unterstützt, wie vorher mit Bezug auf 20b erörtert. Jeder Menüpunkt 516, wie z.B. Neu, Öffnen, Bewegen, Kopieren usw., kann seinen eigenen Totbereich für eine freie Bewegung innerhalb eines Punkts 516 und einen Einfangbereich zum Unterstützen beim Halten des Cursors im speziellen Punktziel, in dem er sich befindet, aufweisen. Bevorzugte Kraftmodelle sind die mit Bezug auf 14 erörterten Nuten und Barrieren. Ein Nutkraftmodell kann beispielsweise an jedem Menüpunkt vorgesehen sein, so dass eine zusätzliche Kraft erforderlich ist, um den Cursor 506 "aus" der Nut an einem Umfang 521 vorbei zu bewegen, verhindert jedoch nicht, dass der Cursor 506 sich aus dem Menü nach links oder rechts bewegt. Durch Verhindern einer Bewegung zwischen Auswahlbereichen 516 verhindert die Kraftrückkopplung eine versehentliche Verschiebung zwischen Menüpunkten und verhindert die versehentliche Auswahl eines falschen Menüpunkts und einer falschen Betriebssystemfunktion. Die Menüpunkte besitzen typischerweise keine externe Kraft, da sie an ihren Grenzen anliegen. Eine externe Kraft kann an der linken und rechten Grenze von jedem Menüpunkt vorgesehen werden, falls erwünscht. Die vorstehend beschriebene "Überschnapp"-Kraft kann auch für Überschnapp-Gitterlinien in einem CAD-Programm oder zum Einschränken der Bewegung in einem Zeichenprogramm auf senkrechte Richtungen oder Richtungen in einem 45-Grad-Winkel nützlich sein.
  • Bei anderen Ausführungsbeispielen können andere Kräfte zusätzlich zu den erörterten bereitgestellt werden, um die Bewegung des Cursors 506 über die Menüpunkte 516 zu erleichtern. Der Benutzer kann beispielsweise mit dem Cursor versehentlich einige Menüpunkte 516 überspringen, wenn eine große Menge an Kraft verwendet werden muss, um den Cursor 516 über Umfänge 521 zwischen Menüpunkten zu bewegen. Um das unerwünschte Überspringen der Auswahl 516 zu verhindern, kann eine Dämpfungskraft im Totbereich 576 jeder Auswahl 516 vorgesehen werden, um den Cursor in einem Menüpunkt zu verlangsamen. Alternativ kann eine Abstoß-Eintrittseinfangkraft durch die Menüpunkte vorgesehen werden, die nicht unmittelbar zu dem Menüpunkt benachbart sind, in dem sich der Cursor befindet, so dass das Überspringproblem verringert wird.
  • Die Bildlaufleiste oder der "Schieber" 581 ist vorzugsweise auch als Ziel der vorliegenden Erfindung festgelegt. Die Bildlaufleiste umfasst vorzugsweise einen "Schieberegler" 580, eine Führung 582, in der sich der Schieberegler bewegen soll, und Pfeile 583. Der Cursor 506 kann über dem Schieberegler 580 in der Bildlaufleiste 581 für das Fenster 501 angeordnet werden und der Benutzer kann die Ansicht von Bildsymbolen, Text oder anderen Informationen, die im Fenster 501 gezeigt sind, rollen oder bewegen, indem er den Schieberegler 580 in einer vertikalen Richtung entlang der Führung 582 bewegt, wie Fachleuten gut bekannt ist. Die Führung 582 ist vorzugsweise ein Ziel der vorliegenden Erfindung, so dass externe Kräfte und interne Kräfte der Führung zugeordnet sind. Vorzugsweise ist der Führung eine externe Anziehungskraft zugeordnet, so dass der Cursor 506 zu einem Feldursprungspunkt N innerhalb des Schiebereglers 580 hingezogen wird. Folglich kann der Feldursprungspunkt der Führung seine Position innerhalb der Führung 582 ändern, wenn der Benutzer den Schieberegler bewegt. Die Führung 582 kann auf derselben Hierarchieebene wie die Bildsymbole 502 oder einer höheren oder niedrigeren Ebene festgelegt sein. Interne Kräfte der Führung sind vorzugsweise zu jenen von 20b äquivalent. Die Einfangkräfte an der Ober- und Unterseite der Nut verhindern, dass sich der Cursor 506 leicht auf die Pfeile 583 bewegt, wenn der Schieberegler 580 bewegt wird. Bei einem alternativen Ausführungsbeispiel weist der Totbereich der Führung 582 eine Breite von Null auf, so dass der Cursor immer an einen Punkt auf halbem Wege über die Breite der Führung angezogen wird, d.h. eine Eintrittseinfangkraft zur Mittellinie L der Führung. Dies würde nahe einem Nutkraftmodell liegen, außer dass die Seiten der Führung 582 nahe den Pfeilen 583 eine Barrierenkraft aufweisen würden und folglich wie ein Divot wären. Bei einem Ausführungsbeispiel mit passivem Stellglied (oder einem anderen) kann eine solche Nut entlang der Führung 582 vorgesehen sein und der Cursor kann am Schieberegler 580 verriegelt werden, wie mit Bezug auf 20c beschrieben. Der Cursor könnte natürlich immer noch mit dem Schieber bewegt werden, wenn er am Schieberegler verriegelt ist, und könnte mit einer Befehlsgeste gelöst werden.
  • Vorzugsweise werden der Schieberegler 580 und die Pfeile 583 als Kinderobjekte der Führung 582 betrachtet, d.h. der Schieberegler und die Pfeile liegen auf einer niedrigeren Hierarchieebene als die Führung und werden als "innerhalb" der Führung betrachtet. Somit sind die externen Kräfte des Schiebereglers und der Pfeile nur anwendbar, wenn der Cursor 506 innerhalb der Führung angeordnet ist. Die externen Kräfte der Pfeile 583 sind vorzugsweise Null und der Schieberegler 580 weist vorzugsweise eine externe Anziehungskraft auf. Die internen Kräfte des Schiebereglers 580 und der Pfeile 583 sind vorzugsweise ähnlich zu den mit Bezug auf 20b beschriebenen.
  • Dem Schieberegler 580 können auch Trägheitskräfte zugewiesen sein, wie mit Bezug auf 21 beschrieben. Der Benutzer könnte die Trägheits-"Masse" des Schiebereglers spüren, wenn er ihn entlang der Führung 582 bewegt. Da der Schieberegler 580 als Bildsymbol mit eingeschränkter Bewegung betrachtet werden kann, können viele Kräfte, die Bildsymbolen zuzuschreiben sind, Schiebereglern zugewiesen werden.
  • Wie vorstehend beschrieben, können graphischen Objekten/Zielen wie z.B. Bildsymbolen 502 und dem Fenster 501 simulierte "Massen" zugewiesen werden, die verwendet werden können, um Trägheitskräfte vorzusehen, wenn die Ziele über den Bildschirm gezogen werden. Die Trägheitskräfte können auch aufgrund von Zusammenstößen oder anderen Wechselwirkungen mit anderen graphischen Objekten und Zielen aufgebracht werden. Wenn der Zeiger 506 beispielsweise ein Bildsymbol 502 zieht und das Bildsymbol mit der Kante 587 des Fensters 501 zusammenstößt, dann kann eine Zusammenstoßkraft auf das Benutzerobjekt 34 aufgebracht werden. Diese Zusammenstoßkraft kann auf der Geschwindigkeit/Richtung des Bildsymbols/Cursors, wenn es/er bewegt wurde, der Masse des Bildsymbols und irgendwelchen simulierten Nachgiebigkeiten des Bildsymbols 502 und der Kante 587 beruhen. Die Kante 587 kann beispielsweise als sehr nachgiebig bestimmt sein, so dass, wenn das Bildsymbol 502 in die Kante gezogen wird, eine federartige Kraft auf das Benutzerobjekt 34 aufgebracht wird, die bewirkt, dass das Bildsymbol 502 und der Cursor 506 von der Kante 587 weg zurückprallen.
  • Alternativ kann diese gleiche Art von "Zusammenstoß"-Kräften ungeachtet dessen, ob irgendein Objekt gezogen wird oder nicht, auf den Cursor 506 aufgebracht werden. Bestimmte Kanten, Objekte oder Bereiche in der GUI 500 können beispielsweise entweder als "Durchgangs"-Objekte oder als "massive" Objekte festgelegt sein. Der Cursor 506 könnte sich über irgendwelche Durchgangsobjekte bewegen, ohne dass das Benutzerobjekt 34 irgendwelche Kräfte spürt. Kräfte würden jedoch auf das Benutzerobjekt 34 aufgebracht werden, wenn sich der Cursor 506 über oder in irgendein massives Objekt bewegt. Dem Cursor 506 könnte eine eigene Masse zugewiesen werden, so dass das Benutzerobjekt Zusammenstoßkräfte gemäß der Masse des Cursors 506, der Geschwindigkeit des Cursors über den Bildschirm und einer zugewiesenen Nachgiebigkeit des Cursors und des Objekts, in das er sich bewegt, spürt. Dies kann in einer GUI nützlich sein, um den Zugriff auf bestimmte Objekte oder Funktionen zu verhindern oder behindern. Solche Objekte können als massive Objekte festgelegt werden, die ermöglichen würden, dass der Cursor 506 ohne Sorge über die Auswahl von unerwünschten Funktionen frei im Bildschirm herumbewegt werden kann.
  • 22 ist eine schematische Darstellung des Anzeigebildschirms 20, die das Fenster 501 und ein "Pop-Up"-Fenster 586 zeigt. Das Fenster 501 umfasst Bildsymbole 501. Das Fenster 586 umfasst Schaltflächen 584 und eine "Optionsschaltfläche" 585 und das Fenster wird typischerweise vom Bildschirm entfernt, nachdem eine Schaltfläche 584 ausgewählt wurde. Die Schaltflächen 584 können auch in "dauerhafteren" (d.h. Nicht-Pop-Up-) Bereichen der GUI 500 angezeigt werden. Ähnlich den Zielen, die den vorstehend beschriebenen graphischen Objekten zugeordnet sind, sind jeder Schaltfläche 584 in einem Fenster 586 in 22 externe und interne Kräfte zugeordnet, wie mit Bezug auf 20a beschrieben. Folglich kann eine externe Anziehungskraft (oder eine andere gewünschte Kraft) und eine Totbereichskraft von Null und eine Divot-Einfangkraft jeder Schaltfläche 584 zugeordnet sein. Im Wesentlichen sind die Schaltflächen 584 analog zu den Menüpunkten 516 in 21, außer dass ein bestimmter Abstand auf dem Bildschirm die Schaltflächen 584 voneinander trennt. Die Schaltflächen 584 weisen vorzugsweise auch einen radial geformten externen Bereich für ihre externen Kräfte auf.
  • Die Optionsschaltfläche 586 ist insofern ähnlich zu den Schaltflächen 586, als eine spezielle Funktion ausgewählt oder gekippt werden kann, wenn der Benutzer den Cursor 506 auf die Optionsschaltfläche 586 bewegt und eine Befehlsgeste wie z.B. das Drücken einer Schaltfläche vorsieht. Die Schaltfläche 584 wird vorzugsweise ähnlich zu den Schaltflächen 584 implementiert, außer dass die Schaltfläche 586 einen runden Umfang und vorzugsweise einen runden externen Bereich aufweist. Bei anderen Ausführungsbeispielen können die Schaltflächen andere Formen aufweisen.
  • Bei einem alternativen Ausführungsbeispiel können die den Schalflächen 584 und 585 zugeordneten Kräfte "ausgeschaltet" werden oder anderweitig geändert werden, nachdem die Schaltfläche durch den Benutzer unter Verwendung des Cursors 506 ausgewählt wurde. Eine externe Anziehungskraft und eine Eintrittseinfangkraft einer Schaltfläche 584 können beispielsweise den Cursor zur Schaltfläche ziehen oder führen. Die Austrittseinfangkraft verhindert, dass sich der Cursor außerhalb die Schaltfläche bewegt. Sobald die Schaltfläche ausgewählt ist, können jedoch die Einfang- und die externe Kraft entfernt werden, so dass der Cursor frei bewegt werden kann (und/oder durch die anderen Zielen auf dem Bildschirm zugeordneten Kräfte beeinflusst werden kann). Die Kräfte können dann unter gewünschten Bedingungen erneut angewendet werden. Sobald sich der Cursor aus dem externen Bereich der Schaltfläche bewegt, wären die Kräfte dann beispielsweise wieder wirksam und würden erneut aufgebracht werden, wenn der Cursor in den externen Bereich der Schaltfläche zurückbewegt werden würde. Ebenso könnten einige oder alle Kräfte, die der Schaltfläche zugeordnet sind, auf andere Arten von Kraftmodellen geändert werden, sobald die Schaltfläche gedrückt werden würde. Dieses Ausführungsbeispiel kann auch auf andere Arten von graphischen Objekten wie z.B. Bildsymbole angewendet werden, z.B. sobald das Bildsymbol ausgewählt wird, werden die Kräfte entfernt, bis der Cursor aus dem externen Bereich und in den externen Bereich zurück bewegt wird, wenn die Kräfte erneut aufgebracht werden würden.
  • 23 ist ein Ablaufdiagramm, das ein Verfahren 610 zum Vorsehen einer Kraftrückkopplung innerhalb einer Umgebung einer graphischen Benutzerschnittstelle (GUI) darstellt, das bei einem Schritt 612 beginnt. Anfänglich wird bei einem Schritt 614 eine Position des Benutzerobjekts 34 kalibriert. Dies wird so durchgeführt, dass eine Ursprungsposition für das Benutzerobjekt durch den Hauptrechner 12 ermittelt werden kann. Beim nächsten Schritt 614 werden Kräfte auf graphische Objekte in der GUI abgebildet oder diesen zugeordnet. Mit Bezug auf das Diagramm von 20a werden beispielsweise externe und interne Zielkräfte den Zielen 550, 552, 554, 556 und 558 zugeordnet. Insbesondere mit Bezug auf das Beispiel von 19 ordnet der Hauptrechner Arten von graphischen Objekten in der GUI 500 externe und interne Kräfte zu. Diese Abbildung umfasst im Allgemeinen die Zuweisung von einem oder mehreren Kraftmodellen und Reichweitengrößen/-formen zu jedem externen und internen Bereich von Arten von graphischen Objekten. Bildsymbolen können beispielsweise spezielle Kräfte und Reichweiten zugewiesen werden und Schiebern können andere Kräfte und Reichweiten zugewiesen werden. Speziellen Bildsymbolen oder anderen Objekten können auch spezielle Kräfte oder Reichweiten zugewiesen werden, wenn der Programmierer dies so festgelegt hat. Wenn nur ein Teil eines graphischen Objekts als Ziel verwendet werden soll, dann kann dieser Teil in diesem Schritt festgelegt werden. Der Prozess der Abbildung von Kräften auf graphische Objekte in der GUI wird mit Bezug auf 24 genauer beschrieben.
  • Beim Schritt 618 wird die Position des Benutzerobjekts 34 vom Hauptrechner 12 und/oder Mikroprozessor 26 gelesen und die Cursorposition auf dem Bildschirm wird dementsprechend aktualisiert. Dies wird typischerweise durch zuerst Lesen der Sensoren 28 an der Schnittstellenvorrichtung 14, um festzustellen, wo das Benutzerobjekt 34 angeordnet ist, durchgeführt. Diese Messwerte werden dann in die Koordinaten auf dem Bildschirm 20 umgewandelt und der Cursor wird zur entsprechenden Stelle entsprechend der Position des Benutzerobjekts in einem Positionssteuerparadigma bewegt, wie es Fachleuten gut bekannt ist. Da die Sensormesswerte nicht-ganzzahlige Werte umfassen können, können die Sensormesswerte in ganzzahlige Werte umgewandelt werden, die Koordinaten auf dem Bildschirm zugeordnet sind, so dass die Cursorposition aktualisiert werden kann. Wenn jedoch Kräfte berechnet werden (wie in nachstehendem Schritt 622), werden die ursprünglichen nicht-ganzzahligen Sensormesswerte verwendet, da diese Werte die erforderliche Genauigkeit beinhalten.
  • Bei alternativen Ausführungsbeispielen könnte die Anzeige auf andere Weisen als Reaktion auf die Position oder andere Eigenschaften der Bewegung des Benutzerobjekts aktualisiert werden. Einige Anwendungsprogramme, die vom Hauptrechner 12 implementiert werden, könnten beispielsweise eine zweidimensionale, planare Eingabe verwenden, um andere Aspekte einer Schnittstelle oder eines Programms zu steuern, wie z.B. Schwenken eines Bildschirms, Drehen eines gesteuerten Objekts, Bewegen eines vom Benutzer gesteuerten Spielers, Fahrzeugs oder Blickpunkts durch einen simulierten virtuellen 3-D-Raum usw. Die Geschwindigkeit oder Beschleunigung des Benutzerobjekts kann auch berechnet und als Eingabe verwendet werden. Bei anderen Ausführungsbeispielen könnte der Mechanismus 14 drei oder mehr Freiheitsgrade für das Benutzerobjekt ermöglichen, was folglich andere Weisen zum Steuern von Objekten und Betriebssystemfunktionen gestattet.
  • Beim Schritt 620 ermittelt der Prozess 610 ein Ziel niedrigster Hierarchie, in dem sich der Cursor befindet. Wie vorstehend bei der Erörterung der 1820a erwähnt, beeinflussen die den Zielen zugewiesenen Hierarchien die Kräfte, die am Cursor 506 wirksam sind. Dieser Prozess wird mit Bezug auf 25 genauer beschrieben. Beim Schritt 622 wird eine geeignete Kraft aus den externen und internen Kräften für jedes Ziel, das sich auf den Cursor auswirkt, ermittelt, wobei das beim Schritt 620 ausgewählte Ziel hilft, zu ermitteln, welche Kräfte in Kraft sind. Außerdem können andere Bedingungen oder Ereignisse in der GUI zu den auf das Benutzerobjekt aufgebrachten Kräften beitragen. Die beitragenden Kräfte werden kombiniert und die kombinierte Gesamtkraft wird auf das Benutzerobjekt 34 durch die Stellglieder 30 aufgebracht. Dieser Schritt wird mit Bezug auf 26 genauer beschrieben. Nach Schritt 622 kehrt der Prozess zu Schritt 618 zurück, um wieder die Benutzerobjektposition zu lesen und entsprechende Kräfte aufzubringen.
  • 24 ist ein Ablaufdiagramm, das ein Beispiel von Schritt 616 von 23 darstellt, bei dem Kräfte auf graphische Objekte abgebildet werden. Der Prozess beginnt bei 630 und in Schritt 632 wird ein verfügbares Ziel ausgewählt, um diesem Ziel Kräfte zuzuweisen. Nachdem ein Ziel ausgewählt wurde, implementiert der Prozess 616 eine Reihe von Schritten 634, 636, 638, 640 und 642, um die Art des speziellen Ziels zu ermitteln. Diese Schritte können in einer beliebigen Reihenfolge oder gleichzeitig durchgeführt werden. Schritt 634 prüft, ob das ausgewählte Ziel ein Bildsymbol ist. Wenn ja, weist Schritt 644 dem Bildsymbol eine radiale Totreichweite, eine radiale Einfangreichweite und eine radiale externe Reichweite zu. Die "Totreichweite" ist die Größe des Totbereichs 576 um die Mitte des Bildsymbols, der durch den inneren Umfang 577 festgelegt ist, wie in 20b gezeigt. Die "Einfangreichweite" ist zwischen dem inneren und dem äußeren Umfang 577 und 575 festgelegt, so dass eine radiale Einfangreichweite angibt, dass der innere und der äußere Umfang um die Mitte des Bildsymbols kreisförmig sind. Die Einfang- und die externe Reichweite sind vorzugsweise radial, selbst wenn das Bildsymbol selbst rechteckig oder anders geformt sein kann. Bei anderen Ausführungsbeispielen können anders geformte Reichweiten zugewiesen werden. Der Prozess fährt dann zu Schritt 652 fort, der nachstehend beschrieben wird. Wenn das Ziel kein Bildsymbol ist, fährt der Prozess zu Schritt 636 fort.
  • Beim Schritt 636 prüft der Prozess, ob das ausgewählte Ziel eine Schaltfläche oder ein Fenster ist; wenn ja, weist Schritt 646 rechteckige Tot- und Einfangreichweiten und eine radiale externe Reichweite dem ausgewählten Ziel zu. Schaltflächen sind in 22 dargestellt. Da die Fenster und Schaltflächen rechteckig sind, ist eine rechteckige Einfangreichweite erwünscht, um sie an die Form des Umfangs des Fensters oder der Schaltfläche anzupassen. Eine radiale externe Reichweite kann als vorbestimmter Abstand von einem Mittelpunkt des Fensters oder der Schaltfläche vorgesehen werden. Der Prozess fährt dann zu Schritt 652 fort. Wenn das Ziel keine Schaltfläche oder kein Fenster ist, fährt der Prozess zu Schritt 638 fort. Schritt 638 prüft, ob das Ziel eine Optionsschaltfläche ist; wenn ja, weist Schritt 648 radiale interne und externe Reichweiten zu, da die Optionsschaltfläche typischerweise eine kreisförmige Form aufweist. Der Prozess fährt dann zu Schritt 652 fort. Wenn das Ziel keine Optionsschaltfläche ist, fährt der Prozess zum Schritt 640 fort, bei dem der Prozess prüft, ob das Ziel ein Schieber ist. Wenn ja, weist Schritt 650 der Führung, dem Schieberegler und den Pfeilen rechteckige Tot-, Einfang- und externe Reichweiten zu, wie vorher erläutert. Wenn der Schieber als eindimensionale Nut implementiert ist, dann wäre die Totreichweite linear, d.h. in einer Dimension Null. Der Prozess fährt dann zu Schritt 652 fort, der nachstehend beschrieben wird. Wenn das Ziel kein Schieber ist, fährt der Prozess zu Schritt 642 fort, bei dem der Prozess prüft, ob das Ziel ein Menüpunkt oder ein Menütitel (oder ein Menü 510, in dem vorzugsweise keine internen Reichweiten zugewiesen werden) ist. Wenn ja, wird Schritt 650 wie vorstehend beschrieben implementiert, außer dass keine externen Reichweiten vorzugsweise den Menüpunkten zugewiesen werden. Bei anderen Ausführungsbeispielen kann der Prozess auf andere Arten von graphischen Objekten prüfen, denen der Programmierer Reichweiten zuweisen will. Wenn keiner der Schritte 634, 636, 638, 640 oder 642 wahr ist, dann geht die Steuerung zum Schritt 643 weiter, bei dem die externen und internen Kraftreichweiten des Ziels auf Null gesetzt werden. Alternativ kann der Prozess auf ein spezielles graphisches Objekt prüfen, dem vorbestimmte oder gewünschte Kraftreichweiten zugewiesen werden. Dieses spezielle Objekt kann durch den Programmierer oder Benutzer als solches festgelegt werden. Wenn ein solches spezielles Objekt vorgesehen ist, dann kann der Prozess zu Schritt 652 fortfahren.
  • Nachdem dem ausgewählten Ziel in irgendeinem der Schritte 644, 646, 648 oder 650 Kraftreichweiten zugewiesen wurden, stellt Schritt 652 fest, ob das ausgewählte Ziel speziell ist. Wenn nicht, weist Schritt 656 den externen und internen Kräften für das spezielle Ziel gemäß der Art des Ziels Kraftbeträge und/oder Kraftmodelle oder Kraftempfindungsprozesse zu. Einem Bildsymbol können beispielsweise vorbestimmte Standard-Kraftbeträge oder – Kraftmodelle für seine externe Anziehungskraft oder für seine internen Tot- und Einfangkräfte zugewiesen werden. Alternativ kann dem Objekt eine "Masse" zugewiesen werden, die die Beträge der zugewiesenen Kräfte beeinflusst. Wenn das Ziel speziell ist, weist Schritt 654 dem Ziel gemäß beliebigen speziellen Befehlen oder Werten, die von einem Programmierer oder Benutzer geliefert werden, irgendeinen speziellen Betrag (oder irgendeine spezielle Masse) zu. Dies ermöglicht, dass einzelnen Zielen gewünschte Kraftbeträge zugewiesen werden. Nach entweder Schritt 654 oder 656 endet das Verfahren 616 beim Schritt 658.
  • Die zugewiesenen Kraftreichweiten, -beträge und -modelle können auch im Speicher 27 als "Parameterseite" durch den Mikroprozessor 26 oder Hauptrechner 12 gespeichert werden. Jede Parameterseite könnte beispielsweise den graphischen Objekten verschiedene Arten oder Reichweiten von Kräften zuweisen. Diese Parameterseiten können schnell geladen werden, um verschiedene Kraftumgebungen bereitzustellen, oder können dem Hauptrechner 12 ermöglichen, durch Senden von Hauptrechnerbefehlen eine weitere Kraftumgebung aufzubauen, während der Prozessor 26 eine andere Kraftumgebung implementiert. Parameterseiten sind mit Bezug auf die US-Patentanmeldung mit dem Titel "Method and Apparatus for Controlling Force Feedback Interface Systems Utilizing a Host Computer", eingereicht am 12.1.95 im Namen von Rosenberg et al., genauer beschrieben.
  • 25 ist ein Ablaufdiagramm, das den Schritt 620 von 23 darstellt, bei dem das Ziel mit niedrigster Hierarchie ermittelt wird, in dem sich der Cursor befindet. Der Prozess beginnt bei 660. Durch gut bekannte Binärbaum- oder festgelegte theoretische Hierarchieverfahren stellt Schritt 662 fest, ob der Cursor 506 innerhalb des Umfangs eines Ziels angeordnet ist und ob dieses Ziel andere Kinderziele enthält, in denen sich der Cursor auch befindet. Mit Bezug auf 19 kann der Prozess 620 beispielsweise feststellen, dass sich der Cursor 506 innerhalb des Fensters 501 befindet, aber auch innerhalb des Fensters 518 des Fensters 501 befindet und dass sich der Cursor außerdem innerhalb eines Bildsymbols 519 des Fensters 518 befindet. Das Ziel mit niedrigster Hierarchie, in dem der Cursor angeordnet wurde, wäre folglich das Bildsymbol 519.
  • Schritt 664 stellt im Wesentlichen fest, ob sich der Cursor 506 in einem Bereich befindet, in dem zwei Ziele derselben Hierarchieebene überlappen. Dies kann beispielsweise vorkommen, wenn zwei Bildsymbole oder Fenster derselben (niedrigsten) Hierarchieebene zufällig im gleichen Bereich des Bildschirms angezeigt werden. Der Prozess 620 fragt, ob sich der Cursor 506 in mehr als einem der Ziele niedrigster Ebene befindet. Wenn sich der Cursor 506 in einem Überlappungsbereich befindet, dann wählt Schritt 666 das "obere" Ziel aus, dessen Objekt auf dem Bildschirm 20 angezeigt wird. Das "untere" Ziel wird durch das obere Ziel teilweise oder vollständig verborgen. Wenn beim Schritt 664 keine Überlappung besteht, dann wählt Schritt 668 normalerweise das Ziel der niedrigsten Ebene aus. Der Prozess ist bei 669 nach Schritt 666 oder 668 vollendet.
  • 26 ist ein Ablaufdiagramm, das Schritt 622 von 23 darstellt, bei dem eine geeignete Kraft auf das Benutzerobjekt 34 auf der Basis der Position des Cursors und des Ziels, in dem sich der Cursor befindet, aufgebracht wird. Der Prozess beginnt bei 670. Nachdem das Ziel der niedrigsten Hierarchieebene, in dem der Cursor angeordnet ist, beim Schritt 620 ermittelt wurde, berechnet Schritt 672 eine interne Kraft für dieses Ziel, das den Cursor 506 enthält (das "niedrigste Ziel"). Die interne Krafft wird unter Verwendung eines Kraftmodells oder einer Funktion wie z.B. eines Kraftempfindungsprozesses, gegebener geeigneter Parameter wie z.B. Betrag, Dauer, Koeffizienten, Sensordaten und Zeitsteuerdaten berechnet. Kraftmodelle, Kraftempfindungsprozesse und Parameter wurden vorstehend ausführlich mit Bezug auf die 45 und 917 erörtert. Die interne Kraft könnte gemäß dem Totbereich 576 berechnet werden, wenn der Cursor dort angeordnet ist; oder die interne Kraft könnte gemäß einer Einfangkraft berechnet werden, wenn der Cursor im Einfangbereich 574 angeordnet ist oder gerade durch den Einfangbereich gelaufen ist.
  • Beim Schritt 674 wird ein Gesamtkraftwert auf die interne Kraft des niedrigsten Ziels initialisiert, die beim Schritt 672 berechnet wurde. Folglich wird nur die interne Kraft des niedrigsten hierarchischen Ziels, in dem der Cursor angeordnet ist, in die Gesamtkraft eingeschlossen, die auf das Benutzerobjekt aufgebracht werden soll. Die internen Kräfte von irgendwelchen Zielen höherer Ebene werden vorzugsweise nicht in die Gesamtkraft eingeschlossen. Als Beispiel betrachte man einen Cursor 506 innerhalb eines Fensters, das nur Bildsymbole enthält. Wenn sich der Cursor 506 nicht im Ziel eines Bildsymbols befindet, ist das Fenster selbst das niedrigste Hierarchieziel, in dem sich der Cursor 506 befindet. Nur die interne Zielkraft für das Fenster wird berechnet. Wenn der Cursor in ein Bildsymbol bewegt wird, wird nur die interne Kraft von diesem Bildsymbol in die Gesamtkraft eingeschlossen; die interne Kraft des Fensters wird ignoriert.
  • Schritt 675 ermittelt die Kinderziele des niedrigsten Ziels, deren Kräfte sich auf das Benutzerobjekt auswirken. Diese "externen" Kinder sind im niedrigsten Ziel enthalten, in dem der Cursor angeordnet ist, die jedoch für den Cursor extern sind, d.h. der Cursor ist nicht in irgendeinem der externen Kinder angeordnet. Folglich wirken sich die externen Kräfte der externen Kinder auf den Cursor 506 und das Benutzerobjekt 34 aus. Irgendwelche Ziele, die in den externen Kindern enthalten sind, werden vorzugsweise nicht als Kraft addiert. Wenn der Cursor im "Desktop"- oder Hintergrundziel der GUI 500 liegt, dann sind die externen Kinder die Ziele der nächsthöchsten Ebene auf dem Bildschirm. Die Fenster 501, 530 und 540 wären beispielsweise externe Kinder, wenn der Cursor 506 auf dem Desktop angeordnet ist, wie in 19 gezeigt. Bei alternativen Ausführungsbeispielen könnten die externen Kinder auch zusätzliche Ziele niedrigerer Ebene innerhalb anderer externer Kinder enthalten.
  • Beim Schritt 676 stellt der Prozess fest, ob irgendwelche externen Kräfte der externen Kinder nicht in die Gesamtkraft kombiniert wurden. Wenn ja, wählt Schritt 677 ein vorher nicht aufgesuchtes externes Kind aus und berechnet die externe Kraft für das Kind. Die externe Kraft von diesem Kind wird nur berechnet, wenn sich der Cursor 506 innerhalb der externen Reichweite des Kindes befindet; wenn sich der Cursor außerhalb der externen Reichweite befindet, wird die externe Kraft auf Null gesetzt. Dies spart Verarbeitungszeit, wenn sich der Cursor nicht in der externen Reichweite befindet. Wenn Bereichen außerhalb der externen Reichweite eine spezielle Kraft zugewiesen wird, wird alternativ diese Kraft berechnet. Die externe Kraft wird gemäß dem speziellen Kraftmodell, das der externen Kraft zugewiesen ist, wie z.B. dem in den obigen Beispielen beschriebenen Anziehungskraftfeldmodell, berechnet.
  • Schritt 678 berechnet die Gesamtkraft durch Addieren der externen Kraft vom Kind von Schritt 677 zur Gesamtkraft, die auf das Benutzerobjekt 34 aufgebracht werden soll. Es sollte beachtet werden, dass die Richtungen und Beträge der vorherigen Gesamtkraft und der externen Kraft berücksichtigt werden, wenn die Richtung und der Betrag der resultierenden Gesamtkraft ermittelt werden. Wenn beispielsweise die vorherige Gesamtkraft einen Betrag von 5 in einer linken Richtung hatte und die externe Kraft einen Betrag von 8 in der rechten Richtung hatte, dann würde die Summe von Schritt 678 eine Gesamtkraft mit einem Betrag von 3 in der rechten Richtung ergeben. Der Prozess kehrt dann zu Schritt 676 zurück, um auf ein weiteres nicht aufgesuchtes externes Kind hin zu prüfen und eine externe Kraft zur Gesamtkraft in den Schritten 677 und 678 zu addieren. Die Schritte 676678 werden wiederholt, bis die Beiträge von externen Kräften von allen externen Kindern zur Gesamtkraft kombiniert wurden.
  • Nachdem alle Kräfte von externen Kindern zur Gesamtkraft addiert wurden, prüft dann der Prozess aus dem negativen Ergebnis von Schritt 676, ob eine Befehlsgeste vom Benutzer eingegeben wurde, die sich auf die auf das Benutzerobjekt aufgebrachte Kraft auswirken würde. Eine solche Situation könnte beispielsweise vorkommen, wenn die vorstehend beschriebenen Trägheitskräfte implementiert werden würden. Diese Kräfte würden aufgebracht werden, wenn der Benutzer eine Taste niederhalten würde oder eine ähnliche Eingabe liefern würde und ein Bildsymbol oder Fenster ziehen würde. Wenn eine solche Eingabe empfangen wurde, dann wird die Gesamtkraft auf der Basis der Befehlsgeste und den speziellen Bedingungen oder des Orts des Cursors oder anderer Faktoren (wie z.B. der Geschwindigkeit des Cursors, der Masse des gezogenen Bildsymbols, der simulierten Schwerkraft usw.) eingestellt. Die "Einstellung" der Gesamtkraft kann eine Addition oder Subtraktion zu bzw. von dem Betrag der Gesamtkraft und/oder eine Richtungsänderung in Abhängigkeit davon sein, wie stark und in welcher Richtung die Trägheitskraft aufgebracht wird.
  • Beim nächsten Schritt 684 oder nach einem negativen Ergebnis von Schritt 680 prüft der Prozess, ob eine andere Bedingung, die die Kraft am Benutzerobjekt beeinflusst, wirksam ist. Eine solche Bedingung könnte beispielsweise sein, wenn der Cursor 506 mit einem "massiven" graphischen Objekt der GUI 500 zusammenstößt, wie vorstehend erörtert, wenn ein solches Merkmal implementiert wird. Die Kräfte von einem solchen Zusammenstoß würden sich auf die Gesamtkraft, die von den Stellgliedern 30 auf das Benutzerobjekt 34 ausgegeben wird, auswirken. Wenn eine solche Bedingung existiert, dann wird die Gesamtkraft in Schritt 686 entsprechend eingestellt. Nach Schritt 686 oder nach einem negativen Ergebnis von Schritt 684 wird die Gesamtkraft auf das Benutzerobjekt 34 in Schritt 688 unter Verwendung der Stellglieder 30 aufgebracht, wie vorher erläutert. Der Prozess ist dann bei 689 beendet. Bei alternativen Ausführungsbeispielen können die Schritte 680686 in anderen Stufen im Prozess 622 durchgeführt werden, wie z.B. vor Schritt 672.
  • 27 ist ein Ablaufdiagramm, das ein beispielhaftes Verfahren 690 zum Aufbringen von internen oder externen Kräften auf das Benutzerobjekt 34 von einem einzelnen Ziel darstellt, wenn der Cursor 506 nahe der Grenze des Ziels angeordnet ist. Um die Erörterung zu vereinfachen, nimmt der Prozess 690 an, dass nur ein Ziel auf dem Bildschirm 20 angezeigt wird, und berücksichtigt folglich keine Kräfte von anderen Zielen, die die auf das Benutzerobjekt aufgebrachte Kraft in Abhängigkeit von der Position des Cursors beeinflussen können. Die Schritte des Addierens von Kräften von mehreren Zielen wurden vorstehend mit Bezug auf 26 beschrieben. Andere notwendige Schritte, wie vorstehend beschrieben, wie z.B. Aktualisieren der Cursorposition, sind der Zweckdienlichkeit halber auch nicht im Prozess 690 enthalten.
  • Der Prozess 690 beginnt beim Schritt 692 und stellt in Schritt 694 fest, ob sich der Cursor 506 in der Einfangzone eines speziellen Ziels befindet. Wenn ja, stellt ein wahlweiser Schritt 696 fest, ob der Hauptrechner 16 und/oder lokale Mikroprozessor 26 zuletzt den Cursor 506 in der Zieltotzone erfasst haben. Wenn dies der Fall war, dann bewegt sich der Cursor 506 von der Totzone zur externen Zone. Folglich wird Schritt 698 angewendet, bei dem die Austrittseinfangkraft gemäß dem entsprechenden Kraftempfindungsprozess aufgebracht wird. Die Austritts einfangkraft ist beim bevorzugten Ausführungsbeispiel beispielsweise eine Barriere wie z.B. eine Federkraft, um zu verhindern, dass der Cursor 506 leicht aus dem Umfang des Ziels entweicht. Der Prozess ist dann bei 702 beendet. Es sollte beachtet werden, dass im bevorzugten Ausführungsbeispiel die Austritts- und Eintrittseinfangkräfte gleich sind (eine Barrierenkraft), so dass Schritt 694 bei einem solchen Ausführungsbeispiel nicht erforderlich ist, und die Schritte 698 und 706 derselbe Schritt sind. Die Schritte 694, 698 und 706, wie gezeigt, sind erforderlich, wenn die Eintritts- und Austrittseinfangkräfte unterschiedlich sind.
  • Wenn die letzte Nicht-Einfang-Position des Cursors nicht im Totbereich lag, dann wird der Cursor am wahrscheinlichsten vom externen Bereich des Ziels zum Totbereich des Ziels bewegt. Wenn dies der Fall ist, bringt Schritt 706 die Eintrittseinfangkraft auf das Benutzerobjekt 34 auf, wie vorstehend mit Bezug auf 20b beschrieben. Bei einem alternativen Ausführungsbeispiel kann die Eintrittseinfangkraft beispielsweise eine Anziehungskraft sein, die den Cursor 506 und das Benutzerobjekt 34 in Richtung der Mitte des Ziels zieht. Der Prozess ist dann bei 702 beendet.
  • Wenn die vorliegende Position des Cursors beim Schritt 694 nicht im Einfangbereich liegt, prüft der Prozess dann beim Schritt 700, ob sich der Cursor im Totbereich des Ziels befindet. Wenn ja, wird beim Schritt 701 dann die dem Totbereich zugewiesene interne Totbereichskraft aufgebracht. Beim bevorzugten Ausführungsbeispiel ist die Totbereichskraft Null und folglich wird Schritt 701 weggelassen; bei anderen Ausführungsbeispielen kann jedoch eine Totbereichskraft auf der Basis eines Kraftempfindungsprozesses wie z.B. einer Dämpfungs- oder Texturkraft berechnet werden. Der Prozess ist dann bei 702 beendet. Wenn sich der Cursor beim Schritt 700 nicht im Totbereich befindet, prüft der Prozess dann beim Schritt 703, ob sich der Cursor im externen Bereich befindet, wie durch die externe Reichweite des Ziels festgelegt. Wenn ja, bringt Schritt 704 die externe Kraft des Ziels auf das Benutzerobjekt auf. Wenn der Cursor außerhalb der externen Reichweite angeordnet ist, ist der Prozess dann bei 702 beendet. Wenn eine Kraft dem Bereich des Ziels außerhalb der externen Reichweite zugewiesen ist, kann alternativ diese Kraft dann auf das Benutzerobjekt aufgebracht werden.
  • Die Kraftrückkopplungsempfindungen der vorliegenden Erfindung werden vorteilhafterweise in einer GUI 500 bereitgestellt. Diese Kräfte können sowohl einen Benutzer beim Auswählen und Durchführen von Betriebssystemfunktionen unterstützen als auch den Benutzer über die von der GUI angezeigten verschiedenen graphischen Objekte informieren. Insbesondere werden denjenigen Benutzern, die unter einer spastischen Handbewegung und anderen die Geschicklichkeit schwächenden Bedingungen leiden, durch das Hinzufügen dieser Kraftrückkopplungsempfindungen in einer GUI-Umgebung erhebliche Vorteile zuteil. Früher schwierige Aufgaben, wie z.B. Manövrieren eines Cursors auf ein Bildsymbol, werden unter Verwendung der Kraftrückkopplung der vorliegenden Erfindung durch Implementieren von Anziehungskräften, Dämpfungskräften und anderen Kräften, die einen Benutzer bei der Hand-Auge-Koordination unterstützen, viel leichter.
  • Obwohl diese Erfindung hinsichtlich verschiedener bevorzugter Ausführungsbeispiele beschrieben wurde, wird in Erwägung gezogen, dass Änderungen, Modifikationen und Vertauschungen von dieser für Fachleute beim Lesen der Patentbeschreibung und bei der Studie der Zeichnungen ersichtlich werden. Viele verschiedenen Arten von Kräften können beispielsweise auf das Benutzerobjekt 34 gemäß verschiedenen graphischen Objekten oder Bereichen, die auf dem Anzeigebildschirm des Computers erscheinen, aufgebracht werden. Vielen Arten von graphischen Objekten in einer GUI können auch spezielle Kräfte zugeordnet werden, um den Benutzer beim Auswählen der Objekte zu unterstützen oder um den Benutzer zu benachrichtigen, dass sich der Cursor in einen speziellen Bereich oder ein spezielles Objekt bewegt hat. Außerdem können viele Arten von Benutzerobjekten bereitgestellt werden, um die Kräfte an den Benutzer zu übertragen, wie z.B. ein Steuerhebel, eine Maus, eine Rollkugel, ein Stift oder andere Objekte. Ferner wurde für die Zwecke der Klarheit der Beschreibung und nicht zum Beschränken der vorliegenden Erfindung eine bestimmte Terminologie verwendet.

Claims (22)

  1. Kraftrückkopplungs-Schnittstellenvorrichtung zum Liefern einer Kraftrückkopplung zu einem Benutzer (22), der die Schnittstellenvorrichtung bedient, wobei die Schnittstellenvorrichtung mit einem Hauptrechnersystem (12) gekoppelt ist, das den Ort eines vom Benutzer gesteuerten Cursors (506) innerhalb einer graphischen Benutzerschnittstelle (500), die auf einem Anzeigebildschirm des Hauptrechners angezeigt wird, auf der Basis eines Ortssignals aktualisiert, und wobei das Hauptrechnersystem (12) eine Vielzahl von Zielen (550558, 570) in der graphischen Benutzerschnittstelle (500) anzeigt, wobei die Schnittstellenvorrichtung aufweist: ein vom Benutzer bedienbares physikalisches Objekt (34), das einen Freiheitsgrad aufweist und das Ortssignal liefert, das die Bewegung des physikalischen Objekts darstellt; wobei die Ziele ermöglichen, dass der Benutzer (22) mit Betriebssystemfunktionen, die von der graphischen Benutzerschnittstelle (500) implementiert werden, kommunizieren kann; einen zur Schnittstellenvorrichtung lokalen und vom Hauptrechnersystem (12) getrennten Mikroprozessor (26) zum Empfangen eines Hauptrechner-Ausgangssteuersignals vom Hauptrechnersystem (12) und zum Liefern eines Prozessor-Ausgangssteuersignals, wobei der Mikroprozessor (26) in einem lokalen Steuerprozess tätig ist, um das Prozessor-Ausgangssteuersignal als Reaktion auf das Ortssignal unabhängig vom Hauptrechner-Ausgangssteuersignal auszugeben, wobei der Mikroprozessor eine am physikalischen Objekt (34) auszugebende Kraft steuert, wenn der Cursor (506) mit mindestens einem der Ziele (550558, 570), das einer Zielkraft zugeordnet ist, in Wechselwirkung tritt; eine Speichervorrichtung (27), die für den lokalen Prozessor zugänglich ist, wobei der lokale Mikroprozessor (26) eine räumliche Darstellung von zumindest einigen der Ziele (550558, 570) der graphischen Benutzerschnittstelle (500) in der Speichervorrichtung (27) speichert, so dass der Mikroprozessor unabhängig feststellen kann, wenn das physikalische Objekt (34) mit einem Ziel in Wechselwirkung tritt und wenn Zielkräfte das physikalische Objekt beeinflussen; ein Stellglied (30) zum Empfangen des Prozessor-Ausgangssteuersignals und zum Ausgeben der Kraft in dem Freiheitsgrad gemäß dem Prozessor-Ausgangssteuersignal an das physikalische Objekt (34), das mit dem Stellglied (30) gekoppelt ist; und einen Sensor (28) zum Erfassen einer Bewegung des vom Benutzer bedienbaren physikalischen Objekts (34) entlang des Freiheitsgrades und zum Ausgeben des Ortssignals an den Mikroprozessor (26), wobei das Ortssignal eine Information umfasst, die die Position und Bewegung des physikalischen Objekts in einem Freiheitsgrad darstellt, und wobei der Mikroprozessor (26) das Ortssignal zum Hauptrechnersystem (12) liefert.
  2. Schnittstellenvorrichtung nach Anspruch 1, wobei Quittungsaustauschsignale zwischen dem Hauptrechnersystem (12) und dem Mikroprozessor (26) übertragen werden, um den lokalen Steuerprozess mit der Hauptrechnerausführung der graphischen Benutzerschnittstelle (500) zu korrelieren.
  3. Schnittstellenvorrichtung nach Anspruch 1 oder 2, wobei die Speichervorrichtung (27) vorbestimmte Zielkräfte speichert, die den Zielen (550558, 570) zugeordnet sind.
  4. Schnittstellenvorrichtung nach einem der Ansprüche 1 bis 3, wobei das Ziel (550558, 570) ein Menüpunkt in einem Balkenmenü ist, und wobei der Menüpunkt einer Überschnappkraft an einer Grenze des Menüpunkts zugeordnet ist, wobei die Überschnappkraft eine Hemmkraft für die Bewegung des Cursors (506) vorsieht, wenn der Cursor, von einem Menüpunkt zu einem anderen Menüpunkt bewegt wird.
  5. Schnittstellenvorrichtung nach einem der Ansprüche 1 bis 3, wobei das Cursorziel (550558, 570) ein Schieber mit einem Schieberegler (580) ist, der innerhalb einer linearen Führung bewegt werden kann, wobei der Schieber einer Überschnappkraft zugeordnet ist, die an einer Mittellinie entlang einer Länge und auf halbem Wege über eine Breite der Führung des Schiebers vorgesehen wird, wobei die Überschnappkraft eine Anziehungskraft liefert, die einer Bewegung des physikalischen Objekts (34) in einer Richtung, die den Cursor (506) von der Mittellinie der Führung wegbewegt, Widerstand leistet.
  6. Schnittstellenvorrichtung nach einem der Ansprüche 1 bis 3, wobei das Cursorziel (550558, 570) ein Bildsymbol ist, wobei das Bildsymbol einer Anziehungskraft zugeordnet ist, die einem Umgebungsbereich mit einer vorbestimmten Größe zugeordnet ist, wobei die Anziehungskraft das physikalische Objekt (34) und den Cursor (506) zieht, wenn der Cursor innerhalb des Bereichs bewegt wird.
  7. Verfahren zum Liefern einer Kraftrückkopplung zum Benutzer einer graphischen Benutzerschnittstelle, die von einem Hauptrechnersystem (12) angezeigt wird, und zum Unterstützen eines Benutzers (22) bei der Bedienung eines vom Benutzer gesteuerten Cursors (506) und beim Zielen auf graphische Elemente in der graphischen Benutzerschnittstelle (500), wobei das Verfahren umfasst: Ermitteln und Bewegen eines angezeigten Orts des vom Benutzer gesteuerten Cursors (506) innerhalb der graphischen Benutzerschnittstelle, die auf einem Anzeigebildschirm des Hauptrechnersystems (12) angezeigt wird, am Hauptrechnersystem auf der Basis eines Ortssignals, das von einer Benutzerschnittstellenvorrichtung empfangen wird und das die Bewegung eines bedienbaren physikalischen Objekts (34) in einem Freiheitsgrad darstellt, wobei die Schnittstellenvorrichtung mit dem Hauptrechnersystem (12) gekoppelt ist und ein Stellglied (30) zum Aufbringen von elektronisch modulierten Kräften auf das physikalische Objekt in dem Freiheitsgrad umfasst, die eine Bewegung des physikalischen Objekts in dem Freiheitsgrad unterstützen oder dieser Widerstand leisten, wobei die Kräfte als Funktion des Orts des physikalischen Objekts in dem Freiheitsgrad moduliert werden, wobei die Schnittstelle einen lokalen Mikroprozessor (26) aufweist, der in einem lokalen Steuerprozess tätig ist, um ein Steuersignal als Reaktion auf eine Bewegung des physikalischen Objekts (34) auszugeben; Ermitteln am lokalen Mikroprozessor, welche Ziele (550558, 570), die innerhalb der graphischen Benutzerschnittstelle angezeigt werden, Zielkräften zugeordnet sind, die auf das physikalische Objekt (34) aufgebracht werden, wobei die Ziele (550558, 570) ermöglichen, dass der Benutzer (22) mit Funktionen eines Betriebssystems (12) kommunizieren kann, die von der graphischen Benutzerschnittstelle implementiert werden, und wobei mindestens eines der Ziele mindestens zwei verschiedenen Zielkraftempfindungen zugeordnet ist, wobei eine der Kraftempfindungen so ausgewählt wird, dass sie in Abhängigkeit von dem Ort des Cursors (506) bezüglich des mindestens einen Ziels (550558, 570) auf das physikalische Objekt (34) aufgebracht wird; und Liefern eines Signals durch den lokalen Mikroprozessor, um zu bewirken, dass die ausgewählte Kraftempfindung auf das physikalische Objekt (34) durch das Stellglied (30) in dem Freiheitsgrad des physikalischen Objekts aufgebracht wird.
  8. Verfahren nach Anspruch 7, wobei mindestens eines der Ziele (550558, 570) einer Kraft zugeordnet ist, die von einer Kraft verschieden ist, die einem anderen der Ziele zugeordnet ist.
  9. Verfahren nach Anspruch 7 oder 8, wobei die zwei verschiedenen Zielkraftempfindungen eine interne Zielkraftempfindung und eine externe Zielkraftempfindung umfassen, wobei die interne Zielkraftempfindung auf das physikalische Objekt (34) aufgebracht wird, wenn sich der Cursor (506) innerhalb einer Grenze des Ziels (550558, 570) befindet, und die externe Zielkraftempfindung auf das physikalische Objekt (34) aufgebracht wird, wenn sich der Cursor außerhalb der Grenze des Ziels befindet.
  10. Verfahren nach Anspruch 9, wobei die interne Zielkraftempfindung eine Einfangkraftempfindung umfasst, wenn sich der Cursor (506) nahe einer Grenze des Ziels (550558, 570) befindet, und wobei die interne Zielkraftempfindung eine Totbereichs-Kraftempfindung umfasst, wenn sich der Cursor innerhalb der Grenze und von dieser entfernt befindet.
  11. Verfahren nach einem der Ansprüche 7 bis 10, wobei die Ziele (550558, 570) der graphischen Benutzerschnittstelle in einer Hierarchie geordnet sind, und wobei der Schritt des Feststellens, welche Ziele Kraftempfindungen am physikalischen Objekt (34) beeinflussen können, das Ermitteln eines Cursorziels mit niedrigster Hierarchie, in dem sich der Cursor (506) befindet, umfasst.
  12. Verfahren nach Anspruch 11, wobei eine interne Zielkraftempfindung, die dem Cursorziel (550558, 570) zugeordnet ist, das physikalische Objekt (34) beeinflusst, und wobei keine weiteren internen Kraftempfindungen anderer Ziele das physikalische Objekt beeinflussen, und wobei andere Ziele auf einer Hierarchieebene, die niedriger liegt als das Cursorziel, externe Kraftempfindungen aufweisen, die das physikalische Objekt (34) beeinflussen, wobei sich der Cursor (506) nicht in den anderen Zielen befindet.
  13. Verfahren nach Anspruch 12, wobei die auf das physikalische Objekt (34) aufgebrachte resultierende Kraftempfindung eine Summe der internen Zielkraftempfindung des Cursorziels (550558, 570) und der externen Zielkraftempfindungen der anderen Ziele auf der Hierarchieebene, die niedriger ist als die niedrigste Hierarchieebene, ist, wobei die anderen Ziele innerhalb des Cursorziels enthalten sind und auf einer niedrigeren Hierarchieebene als das Cursorziel liegen.
  14. Verfahren nach einem der Ansprüche 7 bis 13, wobei die Kraftempfindung Kräfte umfasst, die auf das physikalische Objekt (34) als Funktion eines Abstands zwischen dem Cursor (506) und einem Punkt innerhalb mindestens eines der Ziele (550558, 570) innerhalb der graphischen Benutzerschnittstelle aufgebracht werden, um den Benutzer (22) bei der Positionierung des Cursors auf dem Ziel physisch zu unterstützen.
  15. Verfahren nach einem der Ansprüche 12 bis 13, welches ferner die Abbildung von Kraftempfindungen auf Ziele (550558, 570) der graphischen Benutzerschnittstelle aufweist, wobei die Abbildung von Kraftempfindungen das Zuweisen von Reichweiten zu den Zielen umfasst, wobei die Reichweiten externe Bereiche um die Ziele (550558, 570) festlegen, die die externe Kraftempfindung am physikalischen Objekt (34) bewirken, wenn sich der Cursor (506) innerhalb der externen Bereiche befindet.
  16. Verfahren nach einem der Ansprüche 12, 13 oder 15, wobei die externe Zielkraftempfindung ein Kraftfeld umfasst, wobei das Kraftfeld entweder eine Anziehungskraftempfindung zum physikalischen Objekt (34) nur in einer speziellen Richtung des Freiheitsgrades der physikalischen Objekts liefert, um den Cursor (506) in Richtung des Ziels (550558, 570) zu ziehen, oder eine Abstoßkraftempfindung zum physikalischen Objekt nur in einer speziellen Richtung des Freiheitsgrades des physikalischen Objekts liefert, um den Cursor (506) vom Ziel wegzuschieben.
  17. Verfahren nach einem der Ansprüche 7 bis 16 für graphische Objekte in einem Spiel, das auf einem Computersystem implementiert wird, wobei der Cursor (506) durch ein vom Benutzer gesteuertes erstes graphisches Objekt auf dem Anzeigebildschirm (20) des Computersystems (12) dargestellt wird, wobei sich das erste graphische Objekt (506) auf dem Anzeigebildschirm während eines Spiels als Reaktion auf Bedienungen des physikalischen Objekts (34) der Schnittstellenvorrichtung (14) durch den Benutzer (22) bewegt, wobei die Schnittstellenvorrichtung mit dem Computersystem (12) gekoppelt ist; und das Ziel (550558, 570) durch ein zweites graphisches Objekt auf dem Anzeigebildschirm dargestellt wird; wobei das Verfahren ferner umfasst: wenn das erste graphische Objekt (506) mit dem zweiten graphischen Objekt (550558, 570) auf dem Bildschirm zusammenstößt: a) Anzeigen einer Kompression des ersten graphischen Objekts (506) dort, wo das zweite graphische Objekt (550558, 570) das erste graphische Objekt berührt, wobei das erste Objekt (506) eine festgelegte simulierte Nachgiebigkeit aufweist und das zweite graphische Objekt eine festgelegte simulierte Masse aufweist; b) Aufbringen einer Kraft auf das physikalische Objekt (34), das vom Benutzer (22) bedient wird, in mindestens einem Freiheitsgrad, der von der Schnittstellenvorrichtung vorgesehen wird, wobei die Kraft in einer Richtung aufgebracht wird, die der Richtung der Kompression entspricht, und eine Größe gemäß der simulierten Masse des zweiten graphischen Objekts (550558, 570) aufweist.
  18. verfahren nach Anspruch 17, wobei die Kraft eine Größe auch gemäß einer simulierten Nachgiebigkeit des ersten graphischen Objekts (506) aufweist.
  19. Verfahren nach einem der Ansprüche 17 bis 18, wobei die Kraft eine Größe auch gemäß simulierten Geschwindigkeiten des ersten graphischen Objekts (506) und des zweiten graphischen Objekts (550558, 570) aufweist.
  20. Verfahren nach einem der Ansprüche 17 bis 19, welches ferner einen Schritt des Änderns der simulierten Nachgiebigkeit des ersten graphischen Objekts (506) aufweist, wenn ein Eingangsbefehl vom Benutzer (22), der eine Eingabevorrichtung an der Schnittstellenvorrichtung (14) bedient, empfangen wird.
  21. Verfahren nach einem der Ansprüche 17 bis 20, welches ferner das Anzeigen eines Zielobjekts auf dem Anzeigebildschirm aufweist, und wobei der Benutzer (22) das erste graphische Objekt (506) bewegt, um das zweite graphische Objekt (550558, 570) von einer Bewegung in das Zielobjekt abzuhalten.
  22. Verfahren nach einem der Ansprüche 17 bis 21, wobei das erste graphische Objekt (506) einen Schläger darstellt und das zweite graphische Objekt (550558, 570) einen Ball darstellt.
DE69635902T 1995-12-01 1996-11-26 Verfahren und einrichtung zur kraftrückkopplung für eine graphische benutzerschnittstelle Expired - Lifetime DE69635902T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US08/566,282 US5734373A (en) 1993-07-16 1995-12-01 Method and apparatus for controlling force feedback interface systems utilizing a host computer
US566282 1995-12-01
US571606 1995-12-13
US08/571,606 US6219032B1 (en) 1995-12-01 1995-12-13 Method for providing force feedback to a user of an interface device based on interactions of a controlled cursor with graphical elements in a graphical user interface
PCT/IB1996/001441 WO1997021160A2 (en) 1995-12-01 1996-11-26 Method and apparatus for providing force feedback for a graphical user interface

Publications (2)

Publication Number Publication Date
DE69635902D1 DE69635902D1 (de) 2006-05-04
DE69635902T2 true DE69635902T2 (de) 2006-12-14

Family

ID=27074136

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69635902T Expired - Lifetime DE69635902T2 (de) 1995-12-01 1996-11-26 Verfahren und einrichtung zur kraftrückkopplung für eine graphische benutzerschnittstelle

Country Status (5)

Country Link
US (3) US6219032B1 (de)
EP (2) EP0864144B1 (de)
CA (1) CA2239125A1 (de)
DE (1) DE69635902T2 (de)
WO (1) WO1997021160A2 (de)

Families Citing this family (448)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030161889A1 (en) * 1984-03-16 2003-08-28 Reid Robert H. Vaccines against diseases caused by enteropathogenic organisms using antigens encapsulated within biodegradable-biocompatible microspheres
US5889670A (en) 1991-10-24 1999-03-30 Immersion Corporation Method and apparatus for tactilely responsive user interface
US6433771B1 (en) 1992-12-02 2002-08-13 Cybernet Haptic Systems Corporation Haptic device attribute control
US6437771B1 (en) * 1995-01-18 2002-08-20 Immersion Corporation Force feedback device including flexure member between actuator and user object
US5734373A (en) * 1993-07-16 1998-03-31 Immersion Human Interface Corporation Method and apparatus for controlling force feedback interface systems utilizing a host computer
US6941543B1 (en) 1995-05-30 2005-09-06 Roy-G-Biv Corporation Motion control system and method
US20060206219A1 (en) * 1995-05-30 2006-09-14 Brown David W Motion control systems and methods
US5691897A (en) 1995-05-30 1997-11-25 Roy-G-Biv Corporation Motion control systems
US20100131081A1 (en) * 1995-05-30 2010-05-27 Brown David W Systems and methods for motion control
US20020156872A1 (en) * 2001-01-04 2002-10-24 Brown David W. Systems and methods for transmitting motion control data
US5959613A (en) 1995-12-01 1999-09-28 Immersion Corporation Method and apparatus for shaping force signals for a force feedback device
US5825308A (en) 1996-11-26 1998-10-20 Immersion Human Interface Corporation Force feedback interface having isotonic and isometric functionality
US6147674A (en) 1995-12-01 2000-11-14 Immersion Corporation Method and apparatus for designing force sensations in force feedback computer applications
US5956484A (en) * 1995-12-13 1999-09-21 Immersion Corporation Method and apparatus for providing force feedback over a computer network
US6219032B1 (en) * 1995-12-01 2001-04-17 Immersion Corporation Method for providing force feedback to a user of an interface device based on interactions of a controlled cursor with graphical elements in a graphical user interface
US6028593A (en) * 1995-12-01 2000-02-22 Immersion Corporation Method and apparatus for providing simulated physical interactions within computer generated environments
US6161126A (en) 1995-12-13 2000-12-12 Immersion Corporation Implementing force feedback over the World Wide Web and other computer networks
US6300936B1 (en) 1997-11-14 2001-10-09 Immersion Corporation Force feedback system including multi-tasking graphical host environment and interface device
SE519661C2 (sv) * 1996-02-23 2003-03-25 Immersion Corp Pekdon och förfarande för markering av grafiska detaljer på en display med sensorisk återkoppling vid påträffande av nämnda detalj
US6111577A (en) 1996-04-04 2000-08-29 Massachusetts Institute Of Technology Method and apparatus for determining forces to be applied to a user through a haptic interface
US7225404B1 (en) * 1996-04-04 2007-05-29 Massachusetts Institute Of Technology Method and apparatus for determining forces to be applied to a user through a haptic interface
US7811090B2 (en) * 1996-05-08 2010-10-12 Gaumard Scientific Company, Inc. Interactive education system for teaching patient care
US6503087B1 (en) * 1996-05-08 2003-01-07 Gaumard Scientific, Inc. Interactive education system for teaching patient care
US8016598B2 (en) 1996-05-08 2011-09-13 Gaumard Scientific Company, Inc. Interactive education system for teaching patient care
US6443735B1 (en) * 1996-05-08 2002-09-03 Gaumard Scientific, Inc. Computerized education system for teaching patient care
US7192284B2 (en) * 2000-08-17 2007-03-20 Gaumard Scientific Company, Inc. Interactive education system for teaching patient care
US7976312B2 (en) * 1996-05-08 2011-07-12 Gaumard Scientific Company, Inc. Interactive education system for teaching patient care
US8696362B2 (en) * 1996-05-08 2014-04-15 Gaumard Scientific Company, Inc. Interactive education system for teaching patient care
US20090148822A1 (en) * 2007-12-07 2009-06-11 Gaumard Scientific Company, Inc. Interactive Education System for Teaching Patient Care
US6374255B1 (en) 1996-05-21 2002-04-16 Immersion Corporation Haptic authoring
US6084587A (en) * 1996-08-02 2000-07-04 Sensable Technologies, Inc. Method and apparatus for generating and interfacing with a haptic virtual reality environment
US6411276B1 (en) 1996-11-13 2002-06-25 Immersion Corporation Hybrid control of haptic feedback for host computer and interface device
US6128006A (en) * 1998-03-26 2000-10-03 Immersion Corporation Force feedback mouse wheel and other control wheels
US6686911B1 (en) * 1996-11-26 2004-02-03 Immersion Corporation Control knob with control modes and force feedback
US6956558B1 (en) * 1998-03-26 2005-10-18 Immersion Corporation Rotary force feedback wheels for remote control devices
US7489309B2 (en) * 1996-11-26 2009-02-10 Immersion Corporation Control knob with multiple degrees of freedom and force feedback
US6285351B1 (en) 1997-04-25 2001-09-04 Immersion Corporation Designing force sensations for computer applications including sounds
US6292170B1 (en) 1997-04-25 2001-09-18 Immersion Corporation Designing compound force sensations for computer applications
US7091948B2 (en) * 1997-04-25 2006-08-15 Immersion Corporation Design of force sensations for haptic feedback computer interfaces
US6252579B1 (en) 1997-08-23 2001-06-26 Immersion Corporation Interface device and method for providing enhanced cursor control with force feedback
US6292174B1 (en) 1997-08-23 2001-09-18 Immersion Corporation Enhanced cursor control using limited-workspace force feedback devices
US6882354B1 (en) 1997-09-17 2005-04-19 Sun Microsystems, Inc. Scroll bars with user feedback
US20010032278A1 (en) 1997-10-07 2001-10-18 Brown Stephen J. Remote generation and distribution of command programs for programmable devices
US8020095B2 (en) 1997-11-14 2011-09-13 Immersion Corporation Force feedback system including multi-tasking graphical host environment
US6243078B1 (en) 1998-06-23 2001-06-05 Immersion Corporation Pointing device with forced feedback button
US6448977B1 (en) 1997-11-14 2002-09-10 Immersion Corporation Textures and other spatial sensations for a relative haptic interface device
US6088019A (en) * 1998-06-23 2000-07-11 Immersion Corporation Low cost force feedback device with actuator for non-primary axis
US6211861B1 (en) 1998-06-23 2001-04-03 Immersion Corporation Tactile mouse device
US6191796B1 (en) 1998-01-21 2001-02-20 Sensable Technologies, Inc. Method and apparatus for generating and interfacing with rigid and deformable surfaces in a haptic virtual reality environment
IL123073A0 (en) 1998-01-26 1998-09-24 Simbionix Ltd Endoscopic tutorial system
US6219034B1 (en) * 1998-02-23 2001-04-17 Kristofer E. Elbing Tactile computer interface
US6697043B1 (en) 1999-12-21 2004-02-24 Immersion Corporation Haptic interface device and actuator assembly providing linear haptic sensations
US6184868B1 (en) * 1998-09-17 2001-02-06 Immersion Corp. Haptic feedback control devices
US6429846B2 (en) 1998-06-23 2002-08-06 Immersion Corporation Haptic feedback for touchpads and other touch controls
JP4032404B2 (ja) * 1998-07-10 2008-01-16 フジノン株式会社 操作装置
US6417638B1 (en) 1998-07-17 2002-07-09 Sensable Technologies, Inc. Force reflecting haptic interface
US6421048B1 (en) * 1998-07-17 2002-07-16 Sensable Technologies, Inc. Systems and methods for interacting with virtual objects in a haptic virtual reality environment
US6552722B1 (en) * 1998-07-17 2003-04-22 Sensable Technologies, Inc. Systems and methods for sculpting virtual objects in a haptic virtual reality environment
US20010008561A1 (en) * 1999-08-10 2001-07-19 Paul George V. Real-time object tracking system
US6950534B2 (en) * 1998-08-10 2005-09-27 Cybernet Systems Corporation Gesture-controlled interfaces for self-service machines and other applications
US7036094B1 (en) 1998-08-10 2006-04-25 Cybernet Systems Corporation Behavior recognition system
US7038667B1 (en) * 1998-10-26 2006-05-02 Immersion Corporation Mechanisms for control knobs and other interface devices
US10820949B2 (en) * 1999-04-07 2020-11-03 Intuitive Surgical Operations, Inc. Medical robotic system with dynamically adjustable slave manipulator characteristics
US6424356B2 (en) 1999-05-05 2002-07-23 Immersion Corporation Command of force sensations in a forceback system using force effect suites
DE20022244U1 (de) * 1999-07-01 2001-11-08 Immersion Corp Steuerung vibrotaktiler Empfindungen für Haptische Rückkopplungsvorrichtungen
US6717568B1 (en) * 1999-09-10 2004-04-06 Sony Computer Entertainment Inc. Method of controlling the movement of a position indicating item, storage medium on which a program implementing said method is stored, and electronic device
DE20080209U1 (de) 1999-09-28 2001-08-09 Immersion Corp Steuerung von haptischen Empfindungen für Schnittstellenvorrichtungen mit Vibrotaktiler Rückkopplung
US7050955B1 (en) * 1999-10-01 2006-05-23 Immersion Corporation System, method and data structure for simulated interaction with graphical objects
US20100131078A1 (en) * 1999-10-27 2010-05-27 Brown David W Event driven motion systems
US8032605B2 (en) * 1999-10-27 2011-10-04 Roy-G-Biv Corporation Generation and distribution of motion commands over a distributed network
DE19958443C2 (de) * 1999-12-03 2002-04-25 Siemens Ag Bedieneinrichtung
US6822635B2 (en) * 2000-01-19 2004-11-23 Immersion Corporation Haptic interface for laptop computers and other portable devices
US6924787B2 (en) * 2000-04-17 2005-08-02 Immersion Corporation Interface for controlling a graphical image
US6833826B1 (en) * 2000-05-06 2004-12-21 Novint Technologies, Inc. Human-computer interface
US6724400B1 (en) * 2000-05-06 2004-04-20 Novint Technologies, Inc. Human-computer interface incorporating personal and application domains
US7196688B2 (en) 2000-05-24 2007-03-27 Immersion Corporation Haptic devices using electroactive polymers
DE60041872D1 (de) * 2000-08-16 2009-05-07 Sony Deutschland Gmbh Steuerung einer Vorrichtung mit taktiler Rückkopplung
US7976313B2 (en) * 2000-08-17 2011-07-12 Gaumard Scientific Company, Inc. Interactive education system for teaching patient care
US6867770B2 (en) * 2000-12-14 2005-03-15 Sensable Technologies, Inc. Systems and methods for voxel warping
US6442451B1 (en) 2000-12-28 2002-08-27 Robotic Workspace Technologies, Inc. Versatile robot control system
US6958752B2 (en) 2001-01-08 2005-10-25 Sensable Technologies, Inc. Systems and methods for three-dimensional modeling
US20020101457A1 (en) * 2001-01-31 2002-08-01 Microsoft Corporation Bezel interface for small computing devices
US20020135615A1 (en) * 2001-01-31 2002-09-26 Microsoft Corporation Overlaid display for electronic devices
US7904194B2 (en) * 2001-02-09 2011-03-08 Roy-G-Biv Corporation Event management systems and methods for motion control systems
US7031798B2 (en) * 2001-02-09 2006-04-18 Roy-G-Biv Corporation Event management systems and methods for the distribution of motion control commands
US7202851B2 (en) * 2001-05-04 2007-04-10 Immersion Medical Inc. Haptic interface for palpation simulation
US20020171675A1 (en) * 2001-05-15 2002-11-21 International Business Machines Corporation Method and system for graphical user interface (GUI) widget having user-selectable mass
US20020171689A1 (en) * 2001-05-15 2002-11-21 International Business Machines Corporation Method and system for providing a pre-selection indicator for a graphical user interface (GUI) widget
JP3556203B2 (ja) * 2001-05-18 2004-08-18 株式会社ソニー・コンピュータエンタテインメント 表示装置及び表示方法
US7409441B2 (en) * 2001-05-18 2008-08-05 Sony Computer Entertainment Inc. Display apparatus for accessing desired web site
IL143255A (en) 2001-05-20 2015-09-24 Simbionix Ltd Endoscopic ultrasonography simulation
DE10126421B4 (de) * 2001-05-31 2005-07-14 Caa Ag Fahrzeugrechner-System und Verfahren zur Steuerung eines Cursors für ein Fahrzeugrechner-System
US7024723B2 (en) * 2001-06-15 2006-04-11 Headwaters R&D, Inc. Duster cleaning member for a vacuum cleaner
US6937033B2 (en) * 2001-06-27 2005-08-30 Immersion Corporation Position sensor with resistive element
US7056123B2 (en) * 2001-07-16 2006-06-06 Immersion Corporation Interface apparatus with cable-driven force feedback and grounded actuators
JP4187182B2 (ja) * 2001-07-27 2008-11-26 株式会社バンダイナムコゲームス 画像生成システム、プログラム及び情報記憶媒体
US20030069998A1 (en) * 2001-08-31 2003-04-10 Brown David W. Motion services protocol accessible through uniform resource locator (URL)
US6703550B2 (en) * 2001-10-10 2004-03-09 Immersion Corporation Sound data output and manipulation using haptic feedback
US7665021B2 (en) * 2001-11-09 2010-02-16 Adobe Systems Incorporated System and method for script based event timing
CA2467228A1 (en) * 2001-11-14 2003-05-22 Alan V. Liu Multi-tactile display haptic interface device
US7206627B2 (en) 2002-03-06 2007-04-17 Z-Kat, Inc. System and method for intra-operative haptic planning of a medical procedure
US11202676B2 (en) 2002-03-06 2021-12-21 Mako Surgical Corp. Neural monitor-based dynamic haptics
US8010180B2 (en) 2002-03-06 2011-08-30 Mako Surgical Corp. Haptic guidance system and method
US8996169B2 (en) 2011-12-29 2015-03-31 Mako Surgical Corp. Neural monitor-based dynamic haptics
JP4061105B2 (ja) * 2002-03-29 2008-03-12 アルプス電気株式会社 力覚付与装置
CA2385224C (en) * 2002-05-07 2012-10-02 Corel Corporation Dockable drop-down dialogs
JP3986885B2 (ja) * 2002-05-16 2007-10-03 アルプス電気株式会社 力覚付与装置
US20040008222A1 (en) * 2002-07-09 2004-01-15 Silverlynk, Corporation User intuitive easy access computer system
US6925357B2 (en) 2002-07-25 2005-08-02 Intouch Health, Inc. Medical tele-robotic system
US20040162637A1 (en) 2002-07-25 2004-08-19 Yulun Wang Medical tele-robotic system with a master remote station with an arbitrator
US7406666B2 (en) * 2002-08-26 2008-07-29 Palm, Inc. User-interface features for computers with contact-sensitive displays
US7331868B2 (en) * 2002-09-13 2008-02-19 Igt Wagering gaming device providing physical stimulation responses to various components of the gaming device
US7789756B2 (en) * 2002-09-13 2010-09-07 Igt Wagering gaming device having simulated control of movement of game functional elements
US20040090460A1 (en) * 2002-11-12 2004-05-13 Hideya Kawahara Method and apparatus for updating a User Interface for a computer system based on a physics model
US20040113931A1 (en) * 2002-12-05 2004-06-17 Anderson Thomas G. Human-computer interfaces incorporating haptics and path-based interaction
US7779166B2 (en) * 2002-12-08 2010-08-17 Immersion Corporation Using haptic effects to enhance information content in communications
US8830161B2 (en) 2002-12-08 2014-09-09 Immersion Corporation Methods and systems for providing a virtual touch haptic effect to handheld communication devices
US20060136630A1 (en) * 2002-12-08 2006-06-22 Immersion Corporation, A Delaware Corporation Methods and systems for providing haptic messaging to handheld communication devices
US20060136631A1 (en) * 2002-12-08 2006-06-22 Immersion Corporation, A Delaware Corporation Methods and systems for providing haptic messaging to handheld communication devices
WO2004053829A1 (en) * 2002-12-08 2004-06-24 Immersion Corporation Methods and systems for providing a virtual touch haptic effect to handheld communication devices
US8059088B2 (en) 2002-12-08 2011-11-15 Immersion Corporation Methods and systems for providing haptic messaging to handheld communication devices
JP4143437B2 (ja) * 2003-02-20 2008-09-03 アルプス電気株式会社 力覚付与型入力装置
US7275292B2 (en) * 2003-03-07 2007-10-02 Avago Technologies Wireless Ip (Singapore) Pte. Ltd. Method for fabricating an acoustical resonator on a substrate
JP4167099B2 (ja) * 2003-03-19 2008-10-15 アルプス電気株式会社 画像表示装置
US7850456B2 (en) 2003-07-15 2010-12-14 Simbionix Ltd. Surgical simulation device, system and method
US6836982B1 (en) 2003-08-14 2005-01-04 Caterpillar Inc Tactile feedback system for a remotely controlled work machine
US20060064503A1 (en) * 2003-09-25 2006-03-23 Brown David W Data routing systems and methods
JP4148084B2 (ja) * 2003-09-25 2008-09-10 株式会社デンソー 表示操作システム
US8027349B2 (en) 2003-09-25 2011-09-27 Roy-G-Biv Corporation Database event driven motion systems
US20070022194A1 (en) * 2003-09-25 2007-01-25 Brown David W Database event driven motion systems
US20050132104A1 (en) * 2003-11-17 2005-06-16 Brown David W. Command processing systems and methods
US7411576B2 (en) 2003-10-30 2008-08-12 Sensable Technologies, Inc. Force reflecting haptic interface
US7382378B2 (en) * 2003-10-30 2008-06-03 Sensable Technologies, Inc. Apparatus and methods for stenciling an image
US7542026B2 (en) * 2003-11-03 2009-06-02 International Business Machines Corporation Apparatus method and system for improved feedback of pointing device event processing
JP4180491B2 (ja) * 2003-11-10 2008-11-12 アルプス電気株式会社 力覚付与型入力装置
JP4220355B2 (ja) * 2003-11-10 2009-02-04 アルプス電気株式会社 力覚付与型入力装置
US20060066569A1 (en) * 2003-12-08 2006-03-30 Immersion Corporation, A Delaware Corporation Methods and systems for providing haptic messaging to handheld communication devices
US7813836B2 (en) 2003-12-09 2010-10-12 Intouch Technologies, Inc. Protocol for a remotely controlled videoconferencing robot
US7626589B2 (en) * 2003-12-10 2009-12-01 Sensable Technologies, Inc. Haptic graphical user interface for adjusting mapped texture
US7889209B2 (en) * 2003-12-10 2011-02-15 Sensable Technologies, Inc. Apparatus and methods for wrapping texture onto the surface of a virtual object
US7982711B2 (en) * 2003-12-19 2011-07-19 Immersion Corporation Haptic profiling system and method
US7791588B2 (en) 2003-12-22 2010-09-07 Immersion Corporation System and method for mapping instructions associated with haptic feedback
US7742036B2 (en) * 2003-12-22 2010-06-22 Immersion Corporation System and method for controlling haptic devices having multiple operational modes
US7149596B2 (en) * 2004-01-13 2006-12-12 Sensable Technologies, Inc. Apparatus and methods for modifying a model of an object to enforce compliance with a manufacturing constraint
US8639819B2 (en) 2004-02-05 2014-01-28 Nokia Corporation Ad-hoc connection between electronic devices
JP4173114B2 (ja) * 2004-02-23 2008-10-29 株式会社国際電気通信基礎技術研究所 体感作画装置
US20050204438A1 (en) 2004-02-26 2005-09-15 Yulun Wang Graphical interface for a remote presence system
JP4220416B2 (ja) * 2004-03-05 2009-02-04 アルプス電気株式会社 力覚付与型入力装置
CA2462620A1 (en) * 2004-03-30 2005-09-30 Jvl Corporation Pool video game
FR2870617B1 (fr) * 2004-05-19 2006-07-28 France Telecom Creation et restitution d'ambiance augmentee
US7624355B2 (en) * 2004-05-27 2009-11-24 Baneth Robin C System and method for controlling a user interface
US8077963B2 (en) 2004-07-13 2011-12-13 Yulun Wang Mobile robot with a head-based movement mapping scheme
US20060064640A1 (en) * 2004-09-23 2006-03-23 Forlines Clifton L Method for editing graphics objects with multi-level input devices
US7728823B2 (en) 2004-09-24 2010-06-01 Apple Inc. System and method for processing raw data of track pad device
US7719522B2 (en) * 2004-09-24 2010-05-18 Apple Inc. Raw data track pad device and system
US7388454B2 (en) * 2004-10-01 2008-06-17 Avago Technologies Wireless Ip Pte Ltd Acoustic resonator performance enhancement using alternating frame structure
US8264465B2 (en) * 2004-10-08 2012-09-11 Immersion Corporation Haptic feedback for button and scrolling action simulation in touch input devices
US9471332B2 (en) * 2004-10-19 2016-10-18 International Business Machines Corporation Selecting graphical component types at runtime
US8981876B2 (en) 2004-11-15 2015-03-17 Avago Technologies General Ip (Singapore) Pte. Ltd. Piezoelectric resonator structures and electrical filters having frame elements
US7202560B2 (en) 2004-12-15 2007-04-10 Avago Technologies Wireless Ip (Singapore) Pte. Ltd. Wafer bonding of micro-electro mechanical systems to active circuitry
US7791434B2 (en) 2004-12-22 2010-09-07 Avago Technologies Wireless Ip (Singapore) Pte. Ltd. Acoustic resonator performance enhancement using selective metal etch and having a trench in the piezoelectric
US20100312129A1 (en) 2005-01-26 2010-12-09 Schecter Stuart O Cardiovascular haptic handle system
US20060164396A1 (en) * 2005-01-27 2006-07-27 Microsoft Corporation Synthesizing mouse events from input device events
US7369013B2 (en) * 2005-04-06 2008-05-06 Avago Technologies Wireless Ip Pte Ltd Acoustic resonator performance enhancement using filled recessed region
US7825903B2 (en) * 2005-05-12 2010-11-02 Immersion Corporation Method and apparatus for providing haptic effects to a touch panel
US20060277466A1 (en) * 2005-05-13 2006-12-07 Anderson Thomas G Bimodal user interaction with a simulated object
US7618413B2 (en) 2005-06-22 2009-11-17 Boston Scientific Scimed, Inc. Medical device control system
US8839095B2 (en) * 2005-08-19 2014-09-16 Adobe Systems Incorporated User interface to define and/or communicate space between objects
US9552686B2 (en) 2005-09-02 2017-01-24 Igt Video and mechanical spinning bonus wheel
US20070057951A1 (en) * 2005-09-12 2007-03-15 Microsoft Corporation View animation for scaling and sorting
EP1764674B1 (de) 2005-09-14 2012-06-13 Volkswagen AG Eingabevorrichtung
US9198728B2 (en) 2005-09-30 2015-12-01 Intouch Technologies, Inc. Multi-camera mobile teleconferencing platform
DE102005047650A1 (de) 2005-10-05 2007-04-12 Volkswagen Ag Eingabevorrichtung für ein Kraftfahrzeug
US8565839B2 (en) 2005-10-13 2013-10-22 Abbott Medical Optics Inc. Power management for wireless devices
US8380126B1 (en) 2005-10-13 2013-02-19 Abbott Medical Optics Inc. Reliable communications for wireless devices
US8187883B2 (en) * 2005-10-21 2012-05-29 Wisconsin Alumni Research Foundation Method and system for delivering nucleic acid into a target cell
DE102006029506B4 (de) 2005-10-28 2018-10-11 Volkswagen Ag Eingabevorrichtung
US7809805B2 (en) * 2007-02-28 2010-10-05 Facebook, Inc. Systems and methods for automatically locating web-based social network members
WO2007089831A2 (en) * 2006-01-31 2007-08-09 Hillcrest Laboratories, Inc. 3d pointing devices with keyboards
US7479685B2 (en) * 2006-03-10 2009-01-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Electronic device on substrate with cavity and mitigated parasitic leakage path
US20080229254A1 (en) * 2006-03-24 2008-09-18 Ervin-Dawson Warner Method and system for enhanced cursor control
JP5330640B2 (ja) * 2006-05-09 2013-10-30 任天堂株式会社 ゲームプログラム、ゲーム装置、ゲームシステム、およびゲーム処理方法
EP1857912A1 (de) * 2006-05-16 2007-11-21 Research In Motion Limited Taktiles Rückkoppelungssystem und Verfahren für eine mobile Kommunikationsvorrichtung mit einem Trackball
JP2009537230A (ja) 2006-05-19 2009-10-29 マコ サージカル コーポレーション 外科装置の較正を検証するためのシステムおよび方法
US8849679B2 (en) 2006-06-15 2014-09-30 Intouch Technologies, Inc. Remote controlled robot system that provides medical images
DE102006037725B4 (de) 2006-06-22 2018-05-30 Volkswagen Ag Kraftfahrzeug mit einer Eingabevorrichtung
KR101433969B1 (ko) * 2006-07-10 2014-08-26 마이크로소프트 코포레이션 그래픽 사용자 인터페이스를 생성하는 데이터 처리 장치, 네비게이트 방법, 컴퓨터 구현 방법, 기계 판독가능 매체, 및 무선 데이터 처리 장치
US20090019370A1 (en) * 2006-09-14 2009-01-15 Joseph Pally System for controlling objects in a recursive browser system: forcefield
US7750593B2 (en) * 2006-10-26 2010-07-06 Honeywell International Inc. Active human-machine interface system without a force sensor
US10959881B2 (en) 2006-11-09 2021-03-30 Johnson & Johnson Surgical Vision, Inc. Fluidics cassette for ocular surgical system
US8491528B2 (en) 2006-11-09 2013-07-23 Abbott Medical Optics Inc. Critical alignment of fluidics cassettes
US8414534B2 (en) 2006-11-09 2013-04-09 Abbott Medical Optics Inc. Holding tank devices, systems, and methods for surgical fluidics cassette
US9522221B2 (en) 2006-11-09 2016-12-20 Abbott Medical Optics Inc. Fluidics cassette for ocular surgical system
US9295765B2 (en) 2006-11-09 2016-03-29 Abbott Medical Optics Inc. Surgical fluidics cassette supporting multiple pumps
US9456877B2 (en) 2006-12-01 2016-10-04 Boston Scientific Scimed, Inc. Direct drive instruments and methods of use
US8543338B2 (en) 2007-01-16 2013-09-24 Simbionix Ltd. System and method for performing computerized simulations for image-guided procedures using a patient specific model
US8500451B2 (en) 2007-01-16 2013-08-06 Simbionix Ltd. Preoperative surgical simulation
US20100113152A1 (en) * 2007-01-30 2010-05-06 Ron Shmuel Computer games based on mental imagery
US20080238635A1 (en) * 2007-03-28 2008-10-02 Gunnar Klinghult Force feedback for input devices
US9160783B2 (en) 2007-05-09 2015-10-13 Intouch Technologies, Inc. Robot system that operates through a network firewall
WO2008144077A1 (en) 2007-05-18 2008-11-27 Boston Scientific Scimed, Inc. Drive systems and methods of use
US10596032B2 (en) 2007-05-24 2020-03-24 Johnson & Johnson Surgical Vision, Inc. System and method for controlling a transverse phacoemulsification system with a footpedal
US10485699B2 (en) 2007-05-24 2019-11-26 Johnson & Johnson Surgical Vision, Inc. Systems and methods for transverse phacoemulsification
US10363166B2 (en) 2007-05-24 2019-07-30 Johnson & Johnson Surgical Vision, Inc. System and method for controlling a transverse phacoemulsification system using sensed data
US20090015557A1 (en) * 2007-07-12 2009-01-15 Koski David A Responsiveness Control Method for Pointing Device Movement With Respect to a Graphical User Interface
US8462112B2 (en) * 2007-07-12 2013-06-11 Apple Inc. Responsiveness control system for pointing device movement with respect to a graphical user interface
US20090015568A1 (en) * 2007-07-12 2009-01-15 Koski David A Method and Apparatus for Implementing Slider Detents
US8692767B2 (en) * 2007-07-13 2014-04-08 Synaptics Incorporated Input device and method for virtual trackball operation
US20090031257A1 (en) * 2007-07-26 2009-01-29 Motorola, Inc. Method and system of attractive links
US10342701B2 (en) 2007-08-13 2019-07-09 Johnson & Johnson Surgical Vision, Inc. Systems and methods for phacoemulsification with vacuum based pumps
US9569088B2 (en) * 2007-09-04 2017-02-14 Lg Electronics Inc. Scrolling method of mobile terminal
US8813098B2 (en) * 2007-10-05 2014-08-19 Samsung Electronics Co., Ltd. Universal serial bus host controller driver over a network
US20090104964A1 (en) * 2007-10-17 2009-04-23 Igt Gaming system, gaming device and gaming method providing player physical activation of the symbol generator
US9552065B2 (en) 2008-01-04 2017-01-24 Tactus Technology, Inc. Dynamic tactile interface
US9588683B2 (en) 2008-01-04 2017-03-07 Tactus Technology, Inc. Dynamic tactile interface
US9423875B2 (en) 2008-01-04 2016-08-23 Tactus Technology, Inc. Dynamic tactile interface with exhibiting optical dispersion characteristics
US9052790B2 (en) 2008-01-04 2015-06-09 Tactus Technology, Inc. User interface and methods
US9274612B2 (en) 2008-01-04 2016-03-01 Tactus Technology, Inc. User interface system
US8154527B2 (en) 2008-01-04 2012-04-10 Tactus Technology User interface system
US8456438B2 (en) 2008-01-04 2013-06-04 Tactus Technology, Inc. User interface system
US8243038B2 (en) 2009-07-03 2012-08-14 Tactus Technologies Method for adjusting the user interface of a device
US8922503B2 (en) 2008-01-04 2014-12-30 Tactus Technology, Inc. User interface system
US9557915B2 (en) 2008-01-04 2017-01-31 Tactus Technology, Inc. Dynamic tactile interface
US8547339B2 (en) 2008-01-04 2013-10-01 Tactus Technology, Inc. System and methods for raised touch screens
US9612659B2 (en) 2008-01-04 2017-04-04 Tactus Technology, Inc. User interface system
US9128525B2 (en) 2008-01-04 2015-09-08 Tactus Technology, Inc. Dynamic tactile interface
US9760172B2 (en) 2008-01-04 2017-09-12 Tactus Technology, Inc. Dynamic tactile interface
US8570295B2 (en) 2008-01-04 2013-10-29 Tactus Technology, Inc. User interface system
US9298261B2 (en) 2008-01-04 2016-03-29 Tactus Technology, Inc. Method for actuating a tactile interface layer
US9430074B2 (en) 2008-01-04 2016-08-30 Tactus Technology, Inc. Dynamic tactile interface
US9063627B2 (en) 2008-01-04 2015-06-23 Tactus Technology, Inc. User interface and methods
US8922510B2 (en) 2008-01-04 2014-12-30 Tactus Technology, Inc. User interface system
US8179375B2 (en) * 2008-01-04 2012-05-15 Tactus Technology User interface system and method
US8179377B2 (en) 2009-01-05 2012-05-15 Tactus Technology User interface system
US8553005B2 (en) 2008-01-04 2013-10-08 Tactus Technology, Inc. User interface system
US9367132B2 (en) 2008-01-04 2016-06-14 Tactus Technology, Inc. User interface system
US9720501B2 (en) 2008-01-04 2017-08-01 Tactus Technology, Inc. Dynamic tactile interface
US8199124B2 (en) 2009-01-05 2012-06-12 Tactus Technology User interface system
US8947383B2 (en) 2008-01-04 2015-02-03 Tactus Technology, Inc. User interface system and method
US20090221196A1 (en) * 2008-02-29 2009-09-03 Blair Charles S Torsional control boat throttle system
BRPI0804355A2 (pt) * 2008-03-10 2009-11-03 Lg Electronics Inc terminal e método de controle do mesmo
US10875182B2 (en) 2008-03-20 2020-12-29 Teladoc Health, Inc. Remote presence system mounted to operating room hardware
US8317745B2 (en) * 2008-03-27 2012-11-27 St. Jude Medical, Atrial Fibrillation Division, Inc. Robotic catheter rotatable device cartridge
WO2009120992A2 (en) 2008-03-27 2009-10-01 St. Jude Medical, Arrial Fibrillation Division Inc. Robotic castheter system input device
US9241768B2 (en) * 2008-03-27 2016-01-26 St. Jude Medical, Atrial Fibrillation Division, Inc. Intelligent input device controller for a robotic catheter system
US8343096B2 (en) 2008-03-27 2013-01-01 St. Jude Medical, Atrial Fibrillation Division, Inc. Robotic catheter system
US9161817B2 (en) * 2008-03-27 2015-10-20 St. Jude Medical, Atrial Fibrillation Division, Inc. Robotic catheter system
US8684962B2 (en) 2008-03-27 2014-04-01 St. Jude Medical, Atrial Fibrillation Division, Inc. Robotic catheter device cartridge
US20090248042A1 (en) * 2008-03-27 2009-10-01 Kirschenman Mark B Model catheter input device
US8317744B2 (en) 2008-03-27 2012-11-27 St. Jude Medical, Atrial Fibrillation Division, Inc. Robotic catheter manipulator assembly
US8641664B2 (en) * 2008-03-27 2014-02-04 St. Jude Medical, Atrial Fibrillation Division, Inc. Robotic catheter system with dynamic response
US8179418B2 (en) 2008-04-14 2012-05-15 Intouch Technologies, Inc. Robotic based health care system
US8170241B2 (en) 2008-04-17 2012-05-01 Intouch Technologies, Inc. Mobile tele-presence system with a microphone system
US7855618B2 (en) * 2008-04-30 2010-12-21 Avago Technologies Wireless Ip (Singapore) Pte. Ltd. Bulk acoustic resonator electrical impedance transformers
US7732977B2 (en) * 2008-04-30 2010-06-08 Avago Technologies Wireless Ip (Singapore) Transceiver circuit for film bulk acoustic resonator (FBAR) transducers
EP2277096A1 (de) * 2008-05-09 2011-01-26 Koninklijke Philips Electronics N.V. Verfahren und system zur erweckung eines gefühls
JP4717905B2 (ja) * 2008-05-28 2011-07-06 アルプス電気株式会社 操作感触付与型入力装置
US20090303175A1 (en) * 2008-06-05 2009-12-10 Nokia Corporation Haptic user interface
US20090313020A1 (en) * 2008-06-12 2009-12-17 Nokia Corporation Text-to-speech user interface control
US20090312645A1 (en) * 2008-06-16 2009-12-17 Boston Scientific Scimed, Inc. Methods and Devices for Accessing Anatomic Structures
US20090327886A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Use of secondary factors to analyze user intention in gui element activation
US9193065B2 (en) 2008-07-10 2015-11-24 Intouch Technologies, Inc. Docking system for a tele-presence robot
US9842192B2 (en) 2008-07-11 2017-12-12 Intouch Technologies, Inc. Tele-presence robot system with multi-cast features
US8327294B2 (en) * 2008-07-17 2012-12-04 International Business Machines Corporation Method and system to reduce workload and skills required in usage of mouse or other pointing devices
US8151188B2 (en) * 2008-07-23 2012-04-03 General Electric Company Intelligent user interface using on-screen force feedback and method of use
US8340819B2 (en) 2008-09-18 2012-12-25 Intouch Technologies, Inc. Mobile videoconferencing robot system with network adaptive driving
US8749495B2 (en) * 2008-09-24 2014-06-10 Immersion Corporation Multiple actuation handheld device
WO2010042884A2 (en) 2008-10-10 2010-04-15 Internet Services, Llc Haptic otuput device for use with haptic encoded media
JP4631957B2 (ja) * 2008-10-17 2011-02-16 株式会社デンソー ナビゲーション装置
US8996165B2 (en) 2008-10-21 2015-03-31 Intouch Technologies, Inc. Telepresence robot with a camera boom
WO2010054146A1 (en) * 2008-11-07 2010-05-14 Abbott Medical Optics Inc. Method for programming foot pedal settings and controlling performance through foot pedal variation
CA2941759A1 (en) 2008-11-07 2010-05-14 Abbott Medical Optics Inc. Automatically pulsing different aspiration levels to an ocular probe
US8749188B2 (en) * 2008-11-07 2014-06-10 Abbott Medical Optics Inc. Adjustable foot pedal control for ophthalmic surgery
AU2009313416B2 (en) 2008-11-07 2015-03-26 Johnson & Johnson Surgical Vision, Inc. Surgical cassette apparatus
CA2742978C (en) 2008-11-07 2017-08-15 Abbott Medical Optics Inc. Controlling of multiple pumps
US9795507B2 (en) 2008-11-07 2017-10-24 Abbott Medical Optics Inc. Multifunction foot pedal
CA3051109A1 (en) 2008-11-07 2010-05-14 Johnson & Johnson Surgical Vision, Inc. Automatically switching different aspiration levels and/or pumps to an ocular probe
US8463435B2 (en) 2008-11-25 2013-06-11 Intouch Technologies, Inc. Server connectivity control for tele-presence robot
US9138891B2 (en) 2008-11-25 2015-09-22 Intouch Technologies, Inc. Server connectivity control for tele-presence robot
US20100146395A1 (en) * 2008-12-08 2010-06-10 Gustavo De Los Reyes Method and System for Exploiting Interactions Via A Virtual Environment
KR20100075009A (ko) 2008-12-24 2010-07-02 삼성전자주식회사 Gui 제공방법 및 장치
US20100167820A1 (en) * 2008-12-29 2010-07-01 Houssam Barakat Human interface device
JP5773884B2 (ja) * 2008-12-31 2015-09-02 セント・ジュード・メディカル・エイトリアル・フィブリレーション・ディヴィジョン・インコーポレーテッド ロボットカテーテルシステム入力装置
US9588684B2 (en) 2009-01-05 2017-03-07 Tactus Technology, Inc. Tactile interface for a computing device
US8704649B2 (en) * 2009-01-21 2014-04-22 Korea Institute Of Science And Technology Vibrotactile device and method using the same
US8849680B2 (en) 2009-01-29 2014-09-30 Intouch Technologies, Inc. Documentation through a remote presence robot
US9652030B2 (en) * 2009-01-30 2017-05-16 Microsoft Technology Licensing, Llc Navigation of a virtual plane using a zone of restriction for canceling noise
US9696803B2 (en) * 2009-03-12 2017-07-04 Immersion Corporation Systems and methods for friction displays and additional haptic effects
US9927873B2 (en) * 2009-03-12 2018-03-27 Immersion Corporation Systems and methods for using textures in graphical user interface widgets
US10007340B2 (en) 2009-03-12 2018-06-26 Immersion Corporation Systems and methods for interfaces featuring surface-based haptic effects
US10564721B2 (en) * 2009-03-12 2020-02-18 Immersion Corporation Systems and methods for using multiple actuators to realize textures
US9746923B2 (en) * 2009-03-12 2017-08-29 Immersion Corporation Systems and methods for providing features in a friction display wherein a haptic effect is configured to vary the coefficient of friction
US9874935B2 (en) 2009-03-12 2018-01-23 Immersion Corporation Systems and methods for a texture engine
US9256282B2 (en) * 2009-03-20 2016-02-09 Microsoft Technology Licensing, Llc Virtual object manipulation
US9492317B2 (en) 2009-03-31 2016-11-15 Abbott Medical Optics Inc. Cassette capture mechanism
US8897920B2 (en) 2009-04-17 2014-11-25 Intouch Technologies, Inc. Tele-presence robot system with software modularity, projector and laser pointer
US20100271312A1 (en) * 2009-04-22 2010-10-28 Rachid Alameh Menu Configuration System and Method for Display on an Electronic Device
US20120005693A1 (en) * 2010-01-08 2012-01-05 Cypress Semiconductor Corporation Development, Programming, and Debugging Environment
KR101054303B1 (ko) * 2009-05-19 2011-08-08 한국과학기술연구원 진동햅틱 모바일기기 및 그 구동방법
US20100306825A1 (en) * 2009-05-27 2010-12-02 Lucid Ventures, Inc. System and method for facilitating user interaction with a simulated object associated with a physical location
US9383823B2 (en) * 2009-05-29 2016-07-05 Microsoft Technology Licensing, Llc Combining gestures beyond skeletal
US8902023B2 (en) 2009-06-24 2014-12-02 Avago Technologies General Ip (Singapore) Pte. Ltd. Acoustic resonator structure having an electrode with a cantilevered portion
US8248185B2 (en) 2009-06-24 2012-08-21 Avago Technologies Wireless Ip (Singapore) Pte. Ltd. Acoustic resonator structure comprising a bridge
CN102483675B (zh) 2009-07-03 2015-09-09 泰克图斯科技公司 用户界面增强系统
DE102009032068A1 (de) 2009-07-07 2011-01-13 Volkswagen Ag Verfahren und Vorrichtung zum Bereitstellen einer Benutzerschnittstelle
US9439736B2 (en) 2009-07-22 2016-09-13 St. Jude Medical, Atrial Fibrillation Division, Inc. System and method for controlling a remote medical device guidance system in three-dimensions using gestures
US9330497B2 (en) 2011-08-12 2016-05-03 St. Jude Medical, Atrial Fibrillation Division, Inc. User interface devices for electrophysiology lab diagnostic and therapeutic equipment
US8384755B2 (en) 2009-08-26 2013-02-26 Intouch Technologies, Inc. Portable remote presence robot
US11399153B2 (en) * 2009-08-26 2022-07-26 Teladoc Health, Inc. Portable telepresence apparatus
US8421761B2 (en) * 2009-08-26 2013-04-16 General Electric Company Imaging multi-modality touch pad interface systems, methods, articles of manufacture, and apparatus
FR2950170B1 (fr) * 2009-09-16 2011-10-14 Airbus Operations Sas Methode de generation de fichiers de configuration d'interface pour calculateurs d'une plateforme avionique
US8665227B2 (en) * 2009-11-19 2014-03-04 Motorola Mobility Llc Method and apparatus for replicating physical key function with soft keys in an electronic device
US8448092B2 (en) * 2009-11-25 2013-05-21 International Business Machines Corporation Positional effects in a three-dimensional desktop environment
JP5471393B2 (ja) * 2009-12-11 2014-04-16 株式会社日本自動車部品総合研究所 入力装置
CN102725716B (zh) 2009-12-21 2016-04-13 泰克图斯科技公司 用户界面系统
US9298262B2 (en) 2010-01-05 2016-03-29 Tactus Technology, Inc. Dynamic tactile interface
US8796904B2 (en) 2011-10-31 2014-08-05 Avago Technologies General Ip (Singapore) Pte. Ltd. Bulk acoustic resonator comprising piezoelectric layer and inverse piezoelectric layer
US9243316B2 (en) 2010-01-22 2016-01-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Method of fabricating piezoelectric material with selected c-axis orientation
US11154981B2 (en) * 2010-02-04 2021-10-26 Teladoc Health, Inc. Robot user interface for telepresence robot system
US8619035B2 (en) 2010-02-10 2013-12-31 Tactus Technology, Inc. Method for assisting user input to a device
US20110199302A1 (en) * 2010-02-16 2011-08-18 Microsoft Corporation Capturing screen objects using a collision volume
US8433828B2 (en) 2010-02-26 2013-04-30 Apple Inc. Accessory protocol for touch screen device accessibility
US8670017B2 (en) 2010-03-04 2014-03-11 Intouch Technologies, Inc. Remote presence system including a cart that supports a robot face and an overhead camera
US9888973B2 (en) 2010-03-31 2018-02-13 St. Jude Medical, Atrial Fibrillation Division, Inc. Intuitive user interface control for remote catheter navigation and 3D mapping and visualization systems
KR20130136905A (ko) 2010-04-19 2013-12-13 택투스 테크놀로지, 아이엔씨. 사용자 인터페이스 시스템
WO2011133605A1 (en) 2010-04-19 2011-10-27 Tactus Technology Method of actuating a tactile interface layer
US10343283B2 (en) 2010-05-24 2019-07-09 Intouch Technologies, Inc. Telepresence robot system that can be accessed by a cellular phone
US10808882B2 (en) 2010-05-26 2020-10-20 Intouch Technologies, Inc. Tele-robotic system with a robot face placed on a chair
US20110304559A1 (en) * 2010-06-11 2011-12-15 Research In Motion Limited Portable electronic device including touch-sensitive display and method of changing tactile feedback
US9132352B1 (en) 2010-06-24 2015-09-15 Gregory S. Rabin Interactive system and method for rendering an object
US9051045B2 (en) * 2010-07-28 2015-06-09 Woodward Mpc, Inc. Indirect drive active control column
US8593488B1 (en) * 2010-08-11 2013-11-26 Apple Inc. Shape distortion
US8636519B2 (en) * 2010-10-05 2014-01-28 Biosense Webster (Israel) Ltd. Simulation of an invasive procedure
CN103124946B (zh) 2010-10-20 2016-06-29 泰克图斯科技公司 用户接口系统及方法
KR20140037011A (ko) 2010-10-20 2014-03-26 택투스 테크놀로지, 아이엔씨. 사용자 인터페이스 시스템
EP2453428A1 (de) * 2010-11-12 2012-05-16 EADS Construcciones Aeronauticas, S.A. Simulationsverfahren und -systeme für die Steuertafeln von komplexen Systemen
JP5305250B2 (ja) * 2010-11-12 2013-10-02 株式会社デンソー 車両用操作入力装置
US20120139841A1 (en) * 2010-12-01 2012-06-07 Microsoft Corporation User Interface Device With Actuated Buttons
US9264664B2 (en) 2010-12-03 2016-02-16 Intouch Technologies, Inc. Systems and methods for dynamic bandwidth allocation
US8689123B2 (en) 2010-12-23 2014-04-01 Microsoft Corporation Application reporting in an application-selectable user interface
CN104898652B (zh) 2011-01-28 2018-03-13 英塔茨科技公司 与一个可移动的远程机器人相互交流
US9323250B2 (en) 2011-01-28 2016-04-26 Intouch Technologies, Inc. Time-dependent navigation of telepresence robots
US8962443B2 (en) 2011-01-31 2015-02-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Semiconductor device having an airbridge and method of fabricating the same
US9048812B2 (en) 2011-02-28 2015-06-02 Avago Technologies General Ip (Singapore) Pte. Ltd. Bulk acoustic wave resonator comprising bridge formed within piezoelectric layer
US9083302B2 (en) 2011-02-28 2015-07-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Stacked bulk acoustic resonator comprising a bridge and an acoustic reflector along a perimeter of the resonator
US9203374B2 (en) 2011-02-28 2015-12-01 Avago Technologies General Ip (Singapore) Pte. Ltd. Film bulk acoustic resonator comprising a bridge
US9154112B2 (en) 2011-02-28 2015-10-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Coupled resonator filter comprising a bridge
US9425764B2 (en) 2012-10-25 2016-08-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Accoustic resonator having composite electrodes with integrated lateral features
US9136818B2 (en) 2011-02-28 2015-09-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Stacked acoustic resonator comprising a bridge
US9148117B2 (en) 2011-02-28 2015-09-29 Avago Technologies General Ip (Singapore) Pte. Ltd. Coupled resonator filter comprising a bridge and frame elements
US8575820B2 (en) 2011-03-29 2013-11-05 Avago Technologies General Ip (Singapore) Pte. Ltd. Stacked bulk acoustic resonator
US9444426B2 (en) 2012-10-25 2016-09-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Accoustic resonator having integrated lateral feature and temperature compensation feature
US8942828B1 (en) 2011-04-13 2015-01-27 Stuart Schecter, LLC Minimally invasive cardiovascular support system with true haptic coupling
US10769739B2 (en) 2011-04-25 2020-09-08 Intouch Technologies, Inc. Systems and methods for management of information among medical providers and facilities
US20140139616A1 (en) 2012-01-27 2014-05-22 Intouch Technologies, Inc. Enhanced Diagnostics for a Telepresence Robot
US9098611B2 (en) 2012-11-26 2015-08-04 Intouch Technologies, Inc. Enhanced video interaction for a user interface of a telepresence network
US20120304131A1 (en) * 2011-05-27 2012-11-29 Jennifer Nan Edge gesture
US9158445B2 (en) 2011-05-27 2015-10-13 Microsoft Technology Licensing, Llc Managing an immersive interface in a multi-application immersive environment
US9104307B2 (en) 2011-05-27 2015-08-11 Microsoft Technology Licensing, Llc Multi-application environment
US9658766B2 (en) 2011-05-27 2017-05-23 Microsoft Technology Licensing, Llc Edge gesture
US20120304107A1 (en) * 2011-05-27 2012-11-29 Jennifer Nan Edge gesture
US8350445B1 (en) 2011-06-16 2013-01-08 Avago Technologies Wireless Ip (Singapore) Pte. Ltd. Bulk acoustic resonator comprising non-piezoelectric layer and bridge
US8811720B2 (en) 2011-07-12 2014-08-19 Raytheon Company 3D visualization of light detection and ranging data
US8922302B2 (en) 2011-08-24 2014-12-30 Avago Technologies General Ip (Singapore) Pte. Ltd. Acoustic resonator formed on a pedestal
US8944940B2 (en) * 2011-08-29 2015-02-03 Icuemotion, Llc Racket sport inertial sensor motion tracking analysis
US9063673B2 (en) * 2011-08-30 2015-06-23 Uniquesoft, Llc System and method for implementing application code from application requirements
US20130057587A1 (en) 2011-09-01 2013-03-07 Microsoft Corporation Arranging tiles
US9146670B2 (en) 2011-09-10 2015-09-29 Microsoft Technology Licensing, Llc Progressively indicating new content in an application-selectable user interface
US9802364B2 (en) 2011-10-18 2017-10-31 3D Systems, Inc. Systems and methods for construction of an instruction set for three-dimensional printing of a user-customizableimage of a three-dimensional structure
US9582178B2 (en) 2011-11-07 2017-02-28 Immersion Corporation Systems and methods for multi-pressure interaction on touch-sensitive surfaces
US8836751B2 (en) 2011-11-08 2014-09-16 Intouch Technologies, Inc. Tele-presence system with a user interface that displays different communication links
US8600450B2 (en) * 2011-12-28 2013-12-03 Sony Corporation Receiving user input on a graphical user interface
US9569057B2 (en) 2012-01-05 2017-02-14 Sony Corporation Information processing apparatus and method for outputting a guiding operation to a user
KR102024006B1 (ko) * 2012-02-10 2019-09-24 삼성전자주식회사 진동 장치간 진동 전달을 제어하는 장치 및 방법
US8493354B1 (en) 2012-08-23 2013-07-23 Immersion Corporation Interactivity model for shared feedback on mobile devices
CA2875074A1 (en) 2012-03-17 2013-09-26 Abbott Medical Optics Inc. Surgical cassette
US8902278B2 (en) 2012-04-11 2014-12-02 Intouch Technologies, Inc. Systems and methods for visualizing and managing telepresence devices in healthcare networks
US9251313B2 (en) 2012-04-11 2016-02-02 Intouch Technologies, Inc. Systems and methods for visualizing and managing telepresence devices in healthcare networks
US20130297460A1 (en) 2012-05-01 2013-11-07 Zambala Lllp System and method for facilitating transactions of a physical product or real life service via an augmented reality environment
EP2852475A4 (de) 2012-05-22 2016-01-20 Intouch Technologies Inc Sozialverhaltensregeln für einen medizinischen telepräsenzroboter
US9361021B2 (en) 2012-05-22 2016-06-07 Irobot Corporation Graphical user interfaces including touchpad driving interfaces for telemedicine devices
US10013082B2 (en) 2012-06-05 2018-07-03 Stuart Schecter, LLC Operating system with haptic interface for minimally invasive, hand-held surgical instrument
JP6106973B2 (ja) * 2012-07-11 2017-04-05 富士ゼロックス株式会社 情報処理装置及びプログラム
US9429912B2 (en) * 2012-08-17 2016-08-30 Microsoft Technology Licensing, Llc Mixed reality holographic object development
US9116546B2 (en) * 2012-08-29 2015-08-25 Immersion Corporation System for haptically representing sensor input
US9056244B2 (en) 2012-09-12 2015-06-16 Wms Gaming Inc. Gaming apparatus incorporating targeted haptic feedback
CN104662497A (zh) 2012-09-24 2015-05-27 泰克图斯科技公司 动态触觉界面和方法
US9405417B2 (en) 2012-09-24 2016-08-02 Tactus Technology, Inc. Dynamic tactile interface and methods
US9671874B2 (en) 2012-11-08 2017-06-06 Cuesta Technology Holdings, Llc Systems and methods for extensions to alternative control of touch-based devices
US9202350B2 (en) * 2012-12-19 2015-12-01 Nokia Technologies Oy User interfaces and associated methods
US9658639B2 (en) 2012-12-20 2017-05-23 Bae Systems Plc Inceptor apparatus
EP2746153A1 (de) * 2012-12-20 2014-06-25 BAE Systems PLC Steuerorganvorrichtung
EP2770413A3 (de) * 2013-02-22 2017-01-04 Samsung Electronics Co., Ltd. Vorrichtung zur Bereitstellung eines Cursors in elektronischen Geräten und Verfahren dafür
JP5835255B2 (ja) * 2013-03-19 2015-12-24 カシオ計算機株式会社 グラフ表示装置及びグラフ表示プログラム
CN103203750B (zh) * 2013-04-15 2016-03-02 苏州工业园区职业技术学院 基于图像采集的双核单轴高速锡焊机器人伺服控制系统
US9557813B2 (en) 2013-06-28 2017-01-31 Tactus Technology, Inc. Method for reducing perceived optical distortion
US9194977B1 (en) 2013-07-26 2015-11-24 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Active response gravity offload and method
JP6200062B2 (ja) * 2013-08-06 2017-09-20 株式会社スクウェア・エニックス・ホールディングス 情報処理装置、制御方法、プログラム及び記録媒体
JP6098438B2 (ja) * 2013-08-27 2017-03-22 株式会社デンソー 操作装置
CN103481285B (zh) * 2013-09-16 2016-03-09 国家电网公司 基于现实虚拟技术的高压带电作业机器人控制系统及方法
US9619029B2 (en) 2013-11-14 2017-04-11 Immersion Corporation Haptic trigger control system
US9164587B2 (en) 2013-11-14 2015-10-20 Immersion Corporation Haptic spatialization system
US20170031452A1 (en) * 2014-01-15 2017-02-02 Juice Design Co., Ltd. Manipulation determination apparatus, manipulation determination method, and, program
US9733788B2 (en) 2014-03-17 2017-08-15 Microsoft Technology Licensing, Llc Multi-stage cursor control
US9874858B2 (en) 2014-03-18 2018-01-23 The United States Of America As Represented By The Secretary Of The Navy Automation control system and a method in an automation control system
US10668353B2 (en) 2014-08-11 2020-06-02 Icuemotion Llc Codification and cueing system for sport and vocational activities
JP6428053B2 (ja) * 2014-08-26 2018-11-28 カシオ計算機株式会社 グラフ表示装置およびプログラムおよびサーバ装置
KR102373337B1 (ko) 2014-09-02 2022-03-11 애플 인크. 가변 햅틱 출력을 위한 시맨틱 프레임워크
US9174134B1 (en) 2014-11-12 2015-11-03 Immersion Corporation Peripheral device with haptic diminishment prevention component
US10185396B2 (en) 2014-11-12 2019-01-22 Immersion Corporation Haptic trigger modification system
DE102014226798A1 (de) 2014-12-22 2016-06-23 Mxo Media-Ag Verfahren und Vorrichtung zum Erzeugen von Signalen für eine Vorrichtung zur elektrischen Muskelstimulation
USD766930S1 (en) * 2014-12-31 2016-09-20 Samsung Electronics Co., Ltd. Display screen or portion thereof with animated graphical user interface
US10613629B2 (en) 2015-03-27 2020-04-07 Chad Laurendeau System and method for force feedback interface devices
US10854104B2 (en) 2015-08-28 2020-12-01 Icuemotion Llc System for movement skill analysis and skill augmentation and cueing
FR3044434B1 (fr) * 2015-12-01 2018-06-15 Dassault Aviation Systeme d'interface entre un utilisateur d'affiche dans le cockpit d'un aeronef, aeronef et procede associe
US10850192B2 (en) 2016-03-04 2020-12-01 Sony Interactive Entertainment Inc. Control apparatus and control program
US20170300116A1 (en) * 2016-04-15 2017-10-19 Bally Gaming, Inc. System and method for providing tactile feedback for users of virtual reality content viewers
DK179823B1 (en) 2016-06-12 2019-07-12 Apple Inc. DEVICES, METHODS, AND GRAPHICAL USER INTERFACES FOR PROVIDING HAPTIC FEEDBACK
DK179657B1 (en) 2016-06-12 2019-03-13 Apple Inc. Devices, methods and graphical user interfaces for providing haptic feedback
CN107506115A (zh) * 2016-06-14 2017-12-22 阿里巴巴集团控股有限公司 一种菜单的显示处理方法、装置及系统
US10482646B1 (en) * 2016-07-21 2019-11-19 Pixar Directable cloth animation
US10881953B2 (en) 2016-07-21 2021-01-05 Sony Interactive Entertainment Inc. Operating device and control system
US11344797B2 (en) 2016-07-26 2022-05-31 Sony Interactive Entertainment Inc. Information processing system, operation device, and operation device control method with multi-mode haptic feedback
WO2018020794A1 (ja) * 2016-07-26 2018-02-01 株式会社ソニー・インタラクティブエンタテインメント 操作デバイス、及び操作デバイスの制御方法
EP3502841B1 (de) * 2016-08-18 2023-07-26 Sony Group Corporation Informationsverarbeitungsvorrichtung, informationsverarbeitungssystem und informationsverarbeitungsverfahren
DK201670720A1 (en) 2016-09-06 2018-03-26 Apple Inc Devices, Methods, and Graphical User Interfaces for Generating Tactile Outputs
DK179278B1 (en) 2016-09-06 2018-03-26 Apple Inc Devices, methods and graphical user interfaces for haptic mixing
US10895950B2 (en) * 2016-12-09 2021-01-19 International Business Machines Corporation Method and system for generating a holographic image having simulated physical properties
EP3558154A4 (de) 2016-12-23 2020-09-02 Biolase, Inc. Dentalsystem und -verfahren
CN106681597A (zh) * 2017-01-12 2017-05-17 合肥杰美电子科技有限公司 一种人机界面的图标选中状态前后迁移的方法及系统
US11862302B2 (en) 2017-04-24 2024-01-02 Teladoc Health, Inc. Automated transcription and documentation of tele-health encounters
DK201770372A1 (en) 2017-05-16 2019-01-08 Apple Inc. TACTILE FEEDBACK FOR LOCKED DEVICE USER INTERFACES
JP6936976B2 (ja) * 2017-05-24 2021-09-22 株式会社村田製作所 刺激伝達装置
CN110799144B (zh) * 2017-07-06 2023-06-06 直观外科手术操作公司 用于远程控制系统中菜单项的选择的触觉反馈的系统和方法
US10483007B2 (en) 2017-07-25 2019-11-19 Intouch Technologies, Inc. Modular telehealth cart with thermal imaging and touch screen user interface
US11636944B2 (en) 2017-08-25 2023-04-25 Teladoc Health, Inc. Connectivity infrastructure for a telehealth platform
JP6959349B2 (ja) 2017-09-29 2021-11-02 株式会社ソニー・インタラクティブエンタテインメント 操作デバイス、及びその制御装置
WO2019082386A1 (ja) 2017-10-27 2019-05-02 株式会社ソニー・インタラクティブエンタテインメント 操作デバイス
US10617299B2 (en) 2018-04-27 2020-04-14 Intouch Technologies, Inc. Telehealth cart that supports a removable tablet with seamless audio/video switching
JP2021018546A (ja) * 2019-07-18 2021-02-15 トヨタ自動車株式会社 車両用コミュニケーション装置および車両用コミュニケーションシステム
US20210303075A1 (en) * 2020-03-30 2021-09-30 Snap Inc. Gesture-based shared ar session creation
US11226690B2 (en) * 2020-04-10 2022-01-18 Dell Products, L.P. Systems and methods for guiding a user with a haptic mouse
US20210326594A1 (en) * 2020-04-17 2021-10-21 James Patrick COSTELLO Computer-generated supplemental content for video
US11544343B1 (en) * 2020-10-16 2023-01-03 Splunk Inc. Codeless anchor generation for detectable features in an environment
FR3118672A1 (fr) * 2021-01-05 2022-07-08 Commissariat A L'energie Atomique Et Aux Energies Alternatives Interface haptique a temps de reactivite augmente
DE102021205349A1 (de) 2021-05-26 2022-12-01 Robert Bosch Gesellschaft mit beschränkter Haftung Joystick
DE102021205814A1 (de) 2021-06-09 2022-12-15 Robert Bosch Gesellschaft mit beschränkter Haftung Joystick
DE102022200968A1 (de) 2022-01-31 2023-08-03 Robert Bosch Gesellschaft mit beschränkter Haftung Joystick

Family Cites Families (251)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2906179A (en) 1957-01-28 1959-09-29 North American Aviation Inc Vector gage
US3157853A (en) 1957-12-06 1964-11-17 Hirsch Joseph Tactile communication system
US2972140A (en) 1958-09-23 1961-02-14 Hirsch Joseph Apparatus and method for communication through the sense of touch
GB958325A (en) 1962-07-08 1964-05-21 Communications Patents Ltd Improvements in or relating to ground-based flight training or simulating apparatus
US3490059A (en) 1966-06-06 1970-01-13 Martin Marietta Corp Three axis mounting and torque sensing apparatus
US3497668A (en) 1966-08-25 1970-02-24 Joseph Hirsch Tactile control system
US3517446A (en) 1967-04-19 1970-06-30 Singer General Precision Vehicle trainer controls and control loading
US3531868A (en) 1968-04-18 1970-10-06 Ford Motor Co Surface scanner for measuring the coordinates of points on a three-dimensional surface
US3623064A (en) 1968-10-11 1971-11-23 Bell & Howell Co Paging receiver having cycling eccentric mass
US3903614A (en) 1970-03-27 1975-09-09 Singer Co Apparatus for simulating aircraft control loading
US3875488A (en) 1973-02-15 1975-04-01 Raytheon Co Inertially stabilized gimbal platform
US3902687A (en) 1973-06-25 1975-09-02 Robert E Hightower Aircraft indicator system
US3890958A (en) 1974-04-08 1975-06-24 Moog Automotive Inc Physiological diagnostic apparatus
US3944798A (en) 1974-04-18 1976-03-16 Eaton-Leonard Corporation Method and apparatus for measuring direction
US3911416A (en) 1974-08-05 1975-10-07 Motorola Inc Silent call pager
US4125800A (en) 1975-09-02 1978-11-14 Contraves Gorez Corporation Power controller with a modular power output
US4114882A (en) 1976-10-29 1978-09-19 Robert Ralph Runte Variable velocity control for playing images for a manually controlled electronic video display game
US4148014A (en) 1977-04-06 1979-04-03 Texas Instruments Incorporated System with joystick to control velocity vector of a display cursor
US4160508A (en) 1977-08-19 1979-07-10 Nasa Controller arm for a remotely related slave arm
US4127752A (en) 1977-10-13 1978-11-28 Sheldahl, Inc. Tactile touch switch panel
US4216467A (en) 1977-12-22 1980-08-05 Westinghouse Electric Corp. Hand controller
US4262549A (en) 1978-05-10 1981-04-21 Schwellenbach Donald D Variable mechanical vibrator
US4236325A (en) 1978-12-26 1980-12-02 The Singer Company Simulator control loading inertia compensator
US4359223A (en) * 1979-11-01 1982-11-16 Sanders Associates, Inc. Interactive video playback system
US4464117A (en) 1980-08-27 1984-08-07 Dr. Ing. Reiner Foerst Gmbh Driving simulator apparatus
US4638798A (en) 1980-09-10 1987-01-27 Shelden C Hunter Stereotactic method and apparatus for locating and treating or removing lesions
NL8006091A (nl) 1980-11-07 1982-06-01 Fokker Bv Vluchtnabootser.
US4333070A (en) 1981-02-06 1982-06-01 Barnes Robert W Motor vehicle fuel-waste indicator
JPS57169643A (en) 1981-04-13 1982-10-19 Yamato Scale Co Ltd Load cell for multiple components of force
US4599070A (en) 1981-07-29 1986-07-08 Control Interface Company Limited Aircraft simulator and simulated control system therefor
DE3382431D1 (de) 1982-01-22 1991-11-14 British Aerospace Steuerungsgeraet.
US4484191A (en) 1982-06-14 1984-11-20 Vavra George S Tactile signaling systems for aircraft
US4593470A (en) 1982-07-14 1986-06-10 Micro Control Systems, Inc. Portable three dimensional graphics tablet
US4477973A (en) 1982-07-14 1984-10-23 Micro Control Systems, Inc. Three dimensional graphics tablet
US4709917A (en) * 1982-09-03 1987-12-01 Yang Tai Her Mock bicycle for exercise and training effects
US4477043A (en) 1982-12-15 1984-10-16 The United States Of America As Represented By The Secretary Of The Air Force Biodynamic resistant control stick
FR2545606B1 (fr) 1983-05-06 1985-09-13 Hispano Suiza Sa Capteur de torseur de forces
GB2142711A (en) 1983-07-04 1985-01-23 Philips Electronic Associated Manually operable x-y signal generator
JPS6029833A (ja) 1983-07-28 1985-02-15 Canon Inc 画像表示装置
GB2146776B (en) 1983-09-16 1986-07-30 Ferranti Plc Accelerometer systems
US4524348A (en) * 1983-09-26 1985-06-18 Lefkowitz Leonard R Control interface
US4550221A (en) 1983-10-07 1985-10-29 Scott Mabusth Touch sensitive control device
JPS60170709A (ja) 1984-02-16 1985-09-04 Toshiba Corp 形状測定装置
US4571834A (en) 1984-02-17 1986-02-25 Orthotronics Limited Partnership Knee laxity evaluator and motion module/digitizer arrangement
US4581491A (en) 1984-05-04 1986-04-08 Research Corporation Wearable tactile sensory aid providing information on voice pitch and intonation patterns
US4688983A (en) 1984-05-21 1987-08-25 Unimation Inc. Low cost robot
US4676002A (en) 1984-06-25 1987-06-30 Slocum Alexander H Mechanisms to determine position and orientation in space
JPS61105411A (ja) 1984-10-29 1986-05-23 Mitsutoyo Mfg Co Ltd 多次元測定機の測定方法
US4654648A (en) 1984-12-17 1987-03-31 Herrington Richard A Wireless cursor control system
US4935728A (en) 1985-01-02 1990-06-19 Altra Corporation Computer control
US4782327A (en) 1985-01-02 1988-11-01 Victor B. Kley Computer control
US4632341A (en) 1985-02-06 1986-12-30 The United States Of America As Represented By The Secretary Of The Air Force Stabilizing force feedback in bio-actuated control systems
US5078152A (en) 1985-06-23 1992-01-07 Loredan Biomedical, Inc. Method for diagnosis and/or training of proprioceptor feedback capabilities in a muscle and joint system of a human patient
DE3523188A1 (de) 1985-06-28 1987-01-08 Zeiss Carl Fa Steuerung fuer koordinatenmessgeraete
US4704909A (en) 1985-07-22 1987-11-10 Grahn Allen R Multicomponent force-torque sensor
US4679331A (en) 1985-08-26 1987-07-14 Ppg Industries, Inc. Apparatus and method for determining contour characteristics of a contoured article
US4713007A (en) 1985-10-11 1987-12-15 Alban Eugene P Aircraft controls simulator
US5275174B1 (en) * 1985-10-30 1998-08-04 Jonathan A Cook Repetitive strain injury assessment
NL8503096A (nl) 1985-11-11 1987-06-01 Fokker Bv Simulator van mechanische eigenschappen van een besturingssysteem.
US5103404A (en) 1985-12-06 1992-04-07 Tensor Development, Inc. Feedback for a manipulator
US4934694A (en) 1985-12-06 1990-06-19 Mcintosh James L Computer controlled exercise system
US4891764A (en) 1985-12-06 1990-01-02 Tensor Development Inc. Program controlled force measurement and control system
US5591924A (en) * 1985-12-18 1997-01-07 Spacetec Imc Corporation Force and torque converter
US4811608A (en) 1985-12-18 1989-03-14 Spatial Systems Pty Limited Force and torque converter
US5195179A (en) 1986-01-29 1993-03-16 Hitachi, Ltd. Coordinate input apparatus
US4787051A (en) 1986-05-16 1988-11-22 Tektronix, Inc. Inertial mouse system
US4803413A (en) 1986-07-15 1989-02-07 Honeywell Inc. Magnetic isolating and pointing gimbal apparatus
US4791934A (en) 1986-08-07 1988-12-20 Picker International, Inc. Computer tomography assisted stereotactic surgery system and method
US4689449A (en) 1986-10-03 1987-08-25 Massachusetts Institute Of Technology Tremor suppressing hand controls
US4945305A (en) 1986-10-09 1990-07-31 Ascension Technology Corporation Device for quantitatively measuring the relative position and orientation of two bodies in the presence of metals utilizing direct current magnetic fields
US4849692A (en) 1986-10-09 1989-07-18 Ascension Technology Corporation Device for quantitatively measuring the relative position and orientation of two bodies in the presence of metals utilizing direct current magnetic fields
NL8602697A (nl) 1986-10-27 1988-05-16 Huka Bv Developments Joystick.
US4750487A (en) 1986-11-24 1988-06-14 Zanetti Paul H Stereotactic frame
CA1299362C (en) 1986-12-10 1992-04-28 Gregory James Mcdonald Coordinate measuring system
US4819195A (en) 1987-01-20 1989-04-04 The Warner & Swasey Company Method for calibrating a coordinate measuring machine and the like and system therefor
US4945501A (en) 1987-01-20 1990-07-31 The Warner & Swasey Company Method for determining position within the measuring volume of a coordinate measuring machine and the like and system therefor
US4800721A (en) 1987-02-13 1989-01-31 Caterpillar Inc. Force feedback lever
US4794392A (en) 1987-02-20 1988-12-27 Motorola, Inc. Vibrator alert device for a communication receiver
US4839838A (en) 1987-03-30 1989-06-13 Labiche Mitchell Spatial input apparatus
GB2204131B (en) 1987-04-28 1991-04-17 Ibm Graphics input tablet
US4961138A (en) 1987-05-01 1990-10-02 General Datacomm, Inc. System and apparatus for providing three dimensions of input into a host processor
IT1214292B (it) 1987-05-05 1990-01-10 Garda Impianti Srl Apparecchiatura per la misura e/o il controllo della posizione edella orientazione di punti o zone caratteristiche di strutture, in particolare di scocche di autoveicoli.
US4868549A (en) 1987-05-18 1989-09-19 International Business Machines Corporation Feedback mouse
DE3717459A1 (de) 1987-05-23 1988-12-01 Zeiss Carl Fa Handgefuehrtes koordinatenmessgeraet
US4982618A (en) 1987-11-03 1991-01-08 Culver Craig F Multifunction tactile manipulatable control
DE3740070A1 (de) 1987-11-26 1989-06-08 Zeiss Carl Fa Dreh-schwenk-einrichtung fuer tastkoepfe von koordinatenmessgeraeten
GB8729638D0 (en) 1987-12-19 1988-02-03 Renishaw Plc Mounting for surface sensing device
US5251127A (en) 1988-02-01 1993-10-05 Faro Medical Technologies Inc. Computer-aided surgery apparatus
GB8803847D0 (en) 1988-02-18 1988-03-16 Renishaw Plc Mounting for surface-sensing device
SE461548B (sv) 1988-02-18 1990-02-26 Johansson Ab C E Foerfarande och anordning foer bestaemning av och korrigering foer laegesfel vid maetning av en punkts laege eller vid positionering till en punkt med ett bestaemt laege
US5038089A (en) 1988-03-23 1991-08-06 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Synchronized computational architecture for generalized bilateral control of robot arms
US4907970A (en) 1988-03-30 1990-03-13 Grumman Aerospace Corporation Sidestick-type thrust control simulator
US4885565A (en) 1988-06-01 1989-12-05 General Motors Corporation Touchscreen CRT with tactile feedback
US4942545A (en) 1988-06-06 1990-07-17 Combustion Engineering, Inc. Calibration of eddy current profilometry
US5050608A (en) 1988-07-12 1991-09-24 Medirand, Inc. System for indicating a position to be operated in a patient's body
EP0362626B1 (de) 1988-10-03 1993-02-10 Firma Carl Zeiss Prüfkörper für Koordinatenmessgeräte
FR2638010B1 (fr) 1988-10-13 1991-01-18 Acroe Clavier retroactif modulaire et actionneur modulaire plat
US5007085A (en) 1988-10-28 1991-04-09 International Business Machines Corporation Remotely sensed personal stylus
US4907973A (en) 1988-11-14 1990-03-13 Hon David C Expert system simulator for modeling realistic internal environments and performance
US4930770A (en) 1988-12-01 1990-06-05 Baker Norman A Eccentrically loaded computerized positive/negative exercise machine
US5189806A (en) 1988-12-19 1993-03-02 Renishaw Plc Method of and apparatus for scanning the surface of a workpiece
US5116051A (en) 1989-01-12 1992-05-26 Atari Games Corporation Strain gauge pressure-sensitive video game control
US5044956A (en) 1989-01-12 1991-09-03 Atari Games Corporation Control device such as a steering wheel for video vehicle simulator with realistic feedback forces
US5186695A (en) * 1989-02-03 1993-02-16 Loredan Biomedical, Inc. Apparatus for controlled exercise and diagnosis of human performance
US5019761A (en) 1989-02-21 1991-05-28 Kraft Brett W Force feedback control for backhoe
JPH02220106A (ja) 1989-02-22 1990-09-03 Okuma Mach Works Ltd 計測機能を有するデジタイズ制御装置
GB8904955D0 (en) 1989-03-03 1989-04-12 Atomic Energy Authority Uk Multi-axis hand controller
JPH02290506A (ja) 1989-04-28 1990-11-30 Mitsutoyo Corp 三次元測定機
US5184306A (en) 1989-06-09 1993-02-02 Regents Of The University Of Minnesota Automated high-precision fabrication of objects of complex and unique geometry
JPH07104146B2 (ja) 1989-08-29 1995-11-13 株式会社ミツトヨ 座標測定用プローブの回転テーブル倣い制御方法
US5139261A (en) 1989-09-15 1992-08-18 Openiano Renato M Foot-actuated computer game controller serving as a joystick
US5182557A (en) * 1989-09-20 1993-01-26 Semborg Recrob, Corp. Motorized joystick
US5065145A (en) 1989-10-06 1991-11-12 Summagraphics Corporation Method and apparatus for producing signals corresponding to the position of a cursor
US5209131A (en) 1989-11-03 1993-05-11 Rank Taylor Hobson Metrology
US5126948A (en) 1989-11-08 1992-06-30 Ltv Aerospace And Defense Company Digital position encoder and data optimizer
US5107080A (en) 1989-12-01 1992-04-21 Massachusetts Institute Of Technology Multiple degree of freedom damped hand controls
US4983786A (en) 1990-01-17 1991-01-08 The University Of British Columbia XY velocity controller
US5022407A (en) 1990-01-24 1991-06-11 Topical Testing, Inc. Apparatus for automated tactile testing
US5259894A (en) 1990-01-26 1993-11-09 Sampson Richard K Method for solvent bonding non-porous materials to automatically create variable bond characteristics
US5072361A (en) 1990-02-01 1991-12-10 Sarcos Group Force-reflective teleoperation control system
US5184319A (en) 1990-02-02 1993-02-02 Kramer James F Force feedback and textures simulating interface device
US5631861A (en) * 1990-02-02 1997-05-20 Virtual Technologies, Inc. Force feedback and texture simulating interface device
US5095303A (en) 1990-03-27 1992-03-10 Apple Computer, Inc. Six degree of freedom graphic object controller
US5132672A (en) 1990-03-27 1992-07-21 Apple Computer, Inc. Three degree of freedom graphic object controller
JPH03292524A (ja) 1990-04-11 1991-12-24 Oki Electric Ind Co Ltd カーソル移動方式
US5128671A (en) 1990-04-12 1992-07-07 Ltv Aerospace And Defense Company Control device having multiple degrees of freedom
US5035242A (en) 1990-04-16 1991-07-30 David Franklin Method and apparatus for sound responsive tactile stimulation of deaf individuals
US5022384A (en) 1990-05-14 1991-06-11 Capitol Systems Vibrating/massage chair
US5044639A (en) * 1990-05-29 1991-09-03 Taito America Corporation Ball game with player controlled rebound surface
US5080377A (en) * 1990-05-31 1992-01-14 Rare Coin-It, Inc. Video display system
GB9014130D0 (en) * 1990-06-25 1990-08-15 Hewlett Packard Co User interface
US5251156A (en) 1990-08-25 1993-10-05 Carl-Zeiss-Stiftung, Heidenheim/Brenz Method and apparatus for non-contact measurement of object surfaces
US5181181A (en) 1990-09-27 1993-01-19 Triton Technologies, Inc. Computer apparatus input device for three-dimensional information
WO1992007350A1 (en) 1990-10-15 1992-04-30 National Biomedical Research Foundation Three-dimensional cursor control device
US5142506A (en) 1990-10-22 1992-08-25 Logitech, Inc. Ultrasonic position locating method and apparatus therefor
NL194053C (nl) 1990-12-05 2001-05-03 Koninkl Philips Electronics Nv Inrichting met een rotatiesymmetrisch lichaam.
US5223776A (en) 1990-12-31 1993-06-29 Honeywell Inc. Six-degree virtual pivot controller
US5098437A (en) 1991-02-13 1992-03-24 Pfizer Hospital Products Group, Inc. Acetabular cup positioning insert
US5142931A (en) 1991-02-14 1992-09-01 Honeywell Inc. 3 degree of freedom hand controller
US5212473A (en) * 1991-02-21 1993-05-18 Typeright Keyboard Corp. Membrane keyboard and method of using same
US5354162A (en) 1991-02-26 1994-10-11 Rutgers University Actuator system for providing force feedback to portable master support
US5143505A (en) 1991-02-26 1992-09-01 Rutgers University Actuator system for providing force feedback to a dextrous master glove
EP0580729B1 (de) * 1991-03-21 1996-07-10 Atari Games Corporation Fahrtsimulator mit überkreuzter netzwerkrückkoppelung
US5131844A (en) 1991-04-08 1992-07-21 Foster-Miller, Inc. Contact digitizer, particularly for dental applications
JPH06508222A (ja) 1991-05-23 1994-09-14 アタリ ゲームズ コーポレーション モジュール式表示シミュレーター
US5146566A (en) 1991-05-29 1992-09-08 Ibm Corporation Input/output system for computer user interface using magnetic levitation
US5178012A (en) 1991-05-31 1993-01-12 Rockwell International Corporation Twisting actuator accelerometer
US5279309A (en) 1991-06-13 1994-01-18 International Business Machines Corporation Signaling device and method for monitoring positions in a surgical operation
JP2514490B2 (ja) 1991-07-05 1996-07-10 株式会社ダイヘン 産業用ロボットの連動手動操作による教示制御方法
US5386507A (en) 1991-07-18 1995-01-31 Teig; Steven L. Computer graphics system for selectively modelling molecules and investigating the chemical and physical properties thereof
US5185561A (en) 1991-07-23 1993-02-09 Digital Equipment Corporation Torque motor as a tactile feedback device in a computer system
DE69207983T2 (de) 1991-07-27 1996-06-05 Renishaw Transducer Syst Kalibrier- und Messgerät
US5186629A (en) 1991-08-22 1993-02-16 International Business Machines Corporation Virtual graphics display capable of presenting icons and windows to the blind computer user and method
US5235868A (en) 1991-10-02 1993-08-17 Culver Craig F Mechanism for generating control signals
US5262777A (en) 1991-11-16 1993-11-16 Sri International Device for generating multidimensional input signals to a computer
US5889670A (en) 1991-10-24 1999-03-30 Immersion Corporation Method and apparatus for tactilely responsive user interface
US5220260A (en) 1991-10-24 1993-06-15 Lex Computer And Management Corporation Actuator having electronically controllable tactile responsiveness
US5228356A (en) 1991-11-25 1993-07-20 Chuang Keh Shih K Variable effort joystick
US5309140A (en) * 1991-11-26 1994-05-03 The United States Of America As Represented By The Secretary Of The Navy Feedback system for remotely operated vehicles
US5230623A (en) 1991-12-10 1993-07-27 Radionics, Inc. Operating pointer with interactive computergraphics
US5471571A (en) * 1991-12-27 1995-11-28 Xerox Corporation Method and apparatus for setting a graphical object's position and orientation with viscous dragging
GB9201214D0 (en) 1992-01-21 1992-03-11 Mcmahon Michael J Surgical retractors
CA2062147C (en) 1992-03-02 1995-07-25 Kenji Hara Multi-axial joy stick device
US5589828A (en) * 1992-03-05 1996-12-31 Armstrong; Brad A. 6 Degrees of freedom controller with capability of tactile feedback
US5999185A (en) * 1992-03-30 1999-12-07 Kabushiki Kaisha Toshiba Virtual reality control using image, model and control data to manipulate interactions
JP3199130B2 (ja) 1992-03-31 2001-08-13 パイオニア株式会社 3次元座標入力装置
US5757358A (en) * 1992-03-31 1998-05-26 The United States Of America As Represented By The Secretary Of The Navy Method and apparatus for enhancing computer-user selection of computer-displayed objects through dynamic selection area and constant visual feedback
US5245320A (en) 1992-07-09 1993-09-14 Thrustmaster, Inc. Multiport game card with configurable address
US5313230A (en) 1992-07-24 1994-05-17 Apple Computer, Inc. Three degree of freedom graphic object controller
US5296871A (en) 1992-07-27 1994-03-22 Paley W Bradford Three-dimensional mouse with tactile feedback
US5428748A (en) 1992-09-24 1995-06-27 National Semiconductor Corporation Method and apparatus for automatically configuring a computer peripheral
US5283970A (en) * 1992-09-25 1994-02-08 Strombecker Corporation Toy guns
US5264768A (en) 1992-10-06 1993-11-23 Honeywell, Inc. Active hand controller feedback loop
US5666473A (en) 1992-10-08 1997-09-09 Science & Technology Corporation & Unm Tactile computer aided sculpting device
US5790108A (en) 1992-10-23 1998-08-04 University Of British Columbia Controller
US5397323A (en) * 1992-10-30 1995-03-14 International Business Machines Corporation Remote center-of-motion robot for surgery
JP3200779B2 (ja) 1992-11-10 2001-08-20 誠 西村 金属のろう付用パルスバーナー
US5389865A (en) 1992-12-02 1995-02-14 Cybernet Systems Corporation Method and system for providing a tactile virtual reality and manipulator defining an interface device therefor
US5629594A (en) 1992-12-02 1997-05-13 Cybernet Systems Corporation Force feedback system
FI92111C (fi) 1992-12-11 1994-09-26 Icl Personal Systems Oy Menetelmä ja järjestely kohdistimen siirtämiseksi tietokoneen näytöllä
US5526480A (en) 1992-12-28 1996-06-11 International Business Machines Corporation Time domain scroll bar for multimedia presentations in a data processing system
US5355148A (en) 1993-01-14 1994-10-11 Ast Research, Inc. Fingerpoint mouse
US5451924A (en) 1993-01-14 1995-09-19 Massachusetts Institute Of Technology Apparatus for providing sensory substitution of force feedback
EP0607580A1 (de) * 1993-01-21 1994-07-27 International Business Machines Corporation Taktiler Rückführungsmechanismus für Zeigersteuerung
US5374942A (en) 1993-02-05 1994-12-20 Gilligan; Federico G. Mouse and method for concurrent cursor position and scrolling control
US5402582A (en) 1993-02-23 1995-04-04 Faro Technologies Inc. Three dimensional coordinate measuring apparatus
US5412880A (en) 1993-02-23 1995-05-09 Faro Technologies Inc. Method of constructing a 3-dimensional map of a measurable quantity using three dimensional coordinate measuring apparatus
US5435554A (en) * 1993-03-08 1995-07-25 Atari Games Corporation Baseball simulation system
JP3686686B2 (ja) * 1993-05-11 2005-08-24 松下電器産業株式会社 力覚呈示デバイス、データ入力装置、及びデータ入力デバイス装置
US5429140A (en) 1993-06-04 1995-07-04 Greenleaf Medical Systems, Inc. Integrated virtual reality rehabilitation system
US5396266A (en) 1993-06-08 1995-03-07 Technical Research Associates, Inc. Kinesthetic feedback apparatus and method
US5405152A (en) 1993-06-08 1995-04-11 The Walt Disney Company Method and apparatus for an interactive video game with physical feedback
US5351692A (en) 1993-06-09 1994-10-04 Capistrano Labs Inc. Laparoscopic ultrasonic probe
US5513100A (en) 1993-06-10 1996-04-30 The University Of British Columbia Velocity controller with force feedback stiffness control
US5721566A (en) 1995-01-18 1998-02-24 Immersion Human Interface Corp. Method and apparatus for providing damping force feedback
US5734373A (en) 1993-07-16 1998-03-31 Immersion Human Interface Corporation Method and apparatus for controlling force feedback interface systems utilizing a host computer
US6057828A (en) 1993-07-16 2000-05-02 Immersion Corporation Method and apparatus for providing force sensations in virtual environments in accordance with host software
US5767839A (en) 1995-01-18 1998-06-16 Immersion Human Interface Corporation Method and apparatus for providing passive force feedback to human-computer interface systems
US5739811A (en) 1993-07-16 1998-04-14 Immersion Human Interface Corporation Method and apparatus for controlling human-computer interface systems providing force feedback
CA2167304C (en) 1993-07-16 1998-04-21 Louis B. Rosenberg Multi degree of freedom human-computer interface with tracking and forcefeedback
US5805140A (en) 1993-07-16 1998-09-08 Immersion Corporation High bandwidth force feedback interface using voice coils and flexures
US5731804A (en) 1995-01-18 1998-03-24 Immersion Human Interface Corp. Method and apparatus for providing high bandwidth, low noise mechanical I/O for computer systems
US5519618A (en) * 1993-08-02 1996-05-21 Massachusetts Institute Of Technology Airport surface safety logic
US5625576A (en) * 1993-10-01 1997-04-29 Massachusetts Institute Of Technology Force reflecting haptic interface
US5436640A (en) 1993-10-29 1995-07-25 Thrustmaster, Inc. Video game and simulator joystick controller with geared potentiometer actuation
US5384460A (en) 1993-11-03 1995-01-24 Silitek Corporation Encoder with a light emitting editing wheel
US5397865A (en) * 1993-11-15 1995-03-14 Park; Noel S. Digitizing tablet with display and plot capability, and methods of training a user
US5436638A (en) 1993-12-17 1995-07-25 Fakespace, Inc. Image display method and apparatus with means for yoking viewpoint orienting muscles of a user
DE69423313T2 (de) 1993-12-20 2000-07-13 Seiko Epson Corp Elektronische Hinweisanordnung
US5577981A (en) * 1994-01-19 1996-11-26 Jarvik; Robert Virtual reality exercise machine and computer controlled video system
WO1995020787A1 (en) 1994-01-27 1995-08-03 Exos, Inc. Multimode feedback display technology
CA2140164A1 (en) 1994-01-27 1995-07-28 Kenneth R. Robertson System and method for computer cursor control
US5436542A (en) 1994-01-28 1995-07-25 Surgix, Inc. Telescopic camera mount with remotely controlled positioning
US5482051A (en) * 1994-03-10 1996-01-09 The University Of Akron Electromyographic virtual reality system
US5623642A (en) * 1994-04-06 1997-04-22 M ak Technologies, Inc. Method for simulating newtonian interactions over a computer network
US5564004A (en) * 1994-04-13 1996-10-08 International Business Machines Corporation Method and system for facilitating the selection of icons
US6004134A (en) * 1994-05-19 1999-12-21 Exos, Inc. Interactive simulation including force feedback
US5565887A (en) 1994-06-29 1996-10-15 Microsoft Corporation Method and apparatus for moving a cursor on a computer screen
US5623582A (en) 1994-07-14 1997-04-22 Immersion Human Interface Corporation Computer interface or control input device for laparoscopic surgical instrument and other elongated mechanical objects
US5530455A (en) 1994-08-10 1996-06-25 Mouse Systems Corporation Roller mouse for implementing scrolling in windows applications
EP0727065B1 (de) * 1994-09-07 2002-02-06 Koninklijke Philips Electronics N.V. Virtueller arbeitsraum mit anwenderprogrammierbarer taktiler rückkopplung
US5565840A (en) * 1994-09-21 1996-10-15 Thorner; Craig Tactile sensation generator
US5570111A (en) 1994-10-03 1996-10-29 International Business Machines Corporation Graphical user interface cursor positioning device having a negative inertia transfer function
US5642469A (en) * 1994-11-03 1997-06-24 University Of Washington Direct-drive manipulator for pen-based force display
US5666138A (en) 1994-11-22 1997-09-09 Culver; Craig F. Interface control
JP3236180B2 (ja) * 1994-12-05 2001-12-10 日本電気株式会社 座標指示装置
US5565888A (en) 1995-02-17 1996-10-15 International Business Machines Corporation Method and apparatus for improving visibility and selectability of icons
US5583478A (en) * 1995-03-01 1996-12-10 Renzi; Ronald Virtual environment tactile system
JPH10500516A (ja) 1995-03-13 1998-01-13 フィリップス エレクトロニクス ネムローゼ フェンノートシャップ マウス又はトラックボールの垂直移動による真の3次元入力の可能化
US5611040A (en) 1995-04-05 1997-03-11 Microsoft Corporation Method and system for activating double click applications with a single click
EP0747807B1 (de) * 1995-04-11 2002-03-06 Dragon Systems Inc. Bewegung eines auf dem Bildschirm gezeigten Zeigers
US5736978A (en) 1995-05-26 1998-04-07 The United States Of America As Represented By The Secretary Of The Air Force Tactile graphics display
US5691898A (en) * 1995-09-27 1997-11-25 Immersion Human Interface Corp. Safe and low cost computer peripherals with force feedback for consumer applications
US5589854A (en) 1995-06-22 1996-12-31 Tsai; Ming-Chang Touching feedback device
JP3562049B2 (ja) * 1995-07-21 2004-09-08 セイコーエプソン株式会社 映像表示方法および装置
US5771037A (en) 1995-07-24 1998-06-23 Altra Computer display cursor controller
US5805165A (en) * 1995-08-31 1998-09-08 Microsoft Corporation Method of selecting a displayed control item
US5808601A (en) * 1995-09-12 1998-09-15 International Business Machines Corporation Interactive object selection pointer method and apparatus
US5754023A (en) * 1995-10-26 1998-05-19 Cybernet Systems Corporation Gyro-stabilized platforms for force-feedback applications
US5710574A (en) * 1995-11-14 1998-01-20 International Business Machines Corporation Method and system for positioning a graphical pointer within a widget of a data processing system graphical user interface
US5825308A (en) 1996-11-26 1998-10-20 Immersion Human Interface Corporation Force feedback interface having isotonic and isometric functionality
US5877748A (en) 1995-11-20 1999-03-02 Redlich; Sanford I. Computer control input interface system
US6061004A (en) 1995-11-26 2000-05-09 Immersion Corporation Providing force feedback using an interface device including an indexing function
US5956484A (en) 1995-12-13 1999-09-21 Immersion Corporation Method and apparatus for providing force feedback over a computer network
US6028593A (en) 1995-12-01 2000-02-22 Immersion Corporation Method and apparatus for providing simulated physical interactions within computer generated environments
US6219032B1 (en) * 1995-12-01 2001-04-17 Immersion Corporation Method for providing force feedback to a user of an interface device based on interactions of a controlled cursor with graphical elements in a graphical user interface
US6078308A (en) 1995-12-13 2000-06-20 Immersion Corporation Graphical click surfaces for force feedback applications to provide user selection using cursor interaction with a trigger position within a boundary of a graphical object
SE519661C2 (sv) * 1996-02-23 2003-03-25 Immersion Corp Pekdon och förfarande för markering av grafiska detaljer på en display med sensorisk återkoppling vid påträffande av nämnda detalj
US6020876A (en) 1997-04-14 2000-02-01 Immersion Corporation Force feedback interface with selective disturbance filter
US6088019A (en) 1998-06-23 2000-07-11 Immersion Corporation Low cost force feedback device with actuator for non-primary axis
US6162123A (en) * 1997-11-25 2000-12-19 Woolston; Thomas G. Interactive electronic sword game

Also Published As

Publication number Publication date
WO1997021160A2 (en) 1997-06-12
US7199790B2 (en) 2007-04-03
CA2239125A1 (en) 1997-06-12
US6219032B1 (en) 2001-04-17
EP0864144A4 (de) 2002-01-30
EP0864144B1 (de) 2006-03-08
US9582077B2 (en) 2017-02-28
US20070139375A1 (en) 2007-06-21
WO1997021160A3 (en) 1997-10-09
EP0864144A2 (de) 1998-09-16
US20010002126A1 (en) 2001-05-31
DE69635902D1 (de) 2006-05-04
EP1640851A2 (de) 2006-03-29

Similar Documents

Publication Publication Date Title
DE69635902T2 (de) Verfahren und einrichtung zur kraftrückkopplung für eine graphische benutzerschnittstelle
DE69636703T2 (de) Verfahren und vorrichtung zur steuerung von kraftrückkoppelungsschnittstellen unter verwendung eines hauptrechners
US6750877B2 (en) Controlling haptic feedback for enhancing navigation in a graphical environment
DE10004372B4 (de) Gestaltung von Kraftempfindungen für Computeranwendungen mit Geräuschen
US7102541B2 (en) Isotonic-isometric haptic feedback interface
US6061004A (en) Providing force feedback using an interface device including an indexing function
DE69724416T2 (de) Zeigersteuerung mit benutzerrückführungsmechanismus
US7843424B2 (en) Method and apparatus for designing force sensations in force feedback computer applications
US7113166B1 (en) Force feedback devices using fluid braking
US6697086B2 (en) Designing force sensations for force feedback computer applications
US7131073B2 (en) Force feedback applications based on cursor engagement with graphical targets
DE10021895A1 (de) Force-Feedback-Joystick-Gerät mit einphasigen Festspulenaktuatoren
DE102010030974A1 (de) Vorrichtung und Verfahren zum Verwalten der Funktionen von Peripheriegeräten
WO2002057885A2 (en) Controlling haptic feedback for enhancing navigation in a graphical environment
DE202018101524U1 (de) Spiele-Steuereinrichtungen mit Umkonfigurierbaren Analog-Stick-Empfindlichkeits-Modifikations-Tasten
DE102020103892A1 (de) Verwenden von berührungsempfindlichkeit, damit sich ein trackball wie ein joystick verhält

Legal Events

Date Code Title Description
8364 No opposition during term of opposition