-
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;
-
17a–17i 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 6–8 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 6–8 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 11a–11c 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 10a–10c 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 13a–13b 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 17a–17i 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 17a–17h 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 9–17 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 18–20a 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 4–5 und 9–17 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 676–678 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 680–686 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.