Communications with a Haptic Interface Device from a Host Computer
First Claim
1. ) A method of communicating information from a host computer with a haptic device, comprising:
- a) Transmitting from the host computer to the haptic device an Initialize packet, where an Initialize packet comprises a sequence of bits having subsequences, in the following order;
i) A subsequence indicating the start of a packet;
ii) A subsequence identifying this packet as an Initialize packet;
iii) A subsequence indicating a start code value for a sequence of code values;
iv) A subsequence indicating a message;
v) A subsequence indicating the end of a packet;
b) After transmitting the Initialize packet, then transmitting from the host computer to the haptic device a Start packet, where a Start packet comprises a sequence of bits having subsequences, in the following order;
i) A subsequence indicating the start of a packet;
ii) A subsequence identifying this packet as a Start packet;
iii) A subsequence indicating the start code value;
iv) A subsequence indicating a message;
v) A subsequence indicating the end of a packet;
c) After a packet has been received from the haptic device at the host computer after the transmission of the Start packet, then transmitting from the host computer to the haptic device a first Command packet;
where a Command packet comprises a sequence of bits having subsequences, in the following order;
i) A subsequence indicating the start of a packet;
ii) A subsequence identifying this packet as a Command packet;
iii) A subsequence indicating the code value in the sequence of code values having a predetermined relationship to the code value in the previous packet transmitted from the host computer to the haptic device;
iv) A subsequence indicating a message;
v) A subsequence indicating the end of a packet;
d) After a packet has been received at the host computer after the transmission of the preceding Command packet, then transmitting from the host computer to the haptic device a subsequent Command packet.
3 Assignments
0 Petitions
Accused Products
Abstract
The present invention comprises methods and apparatuses that can provide reliable communications between a computer and a haptic interface device. The methods and apparatuses can provide communication that is more secure against errors, failures, or tampering than previous approaches. Haptic devices allow a user to communicate with computer applications using the user'"'"'s sense of touch, for example by applying and sensing forces with the haptic device. The host computer must be able to communicate with the haptic device in a robust and safe manner. The present invention includes a novel method of accomplishing such communication; a computer-readable medium that, when applied to a computer, causes the computer to communicate according to such a method; and a computer system having a host computer and a haptic device communicating according to such a method.
-
Citations
16 Claims
-
1. ) A method of communicating information from a host computer with a haptic device, comprising:
-
a) Transmitting from the host computer to the haptic device an Initialize packet, where an Initialize packet comprises a sequence of bits having subsequences, in the following order; i) A subsequence indicating the start of a packet; ii) A subsequence identifying this packet as an Initialize packet; iii) A subsequence indicating a start code value for a sequence of code values; iv) A subsequence indicating a message; v) A subsequence indicating the end of a packet; b) After transmitting the Initialize packet, then transmitting from the host computer to the haptic device a Start packet, where a Start packet comprises a sequence of bits having subsequences, in the following order; i) A subsequence indicating the start of a packet; ii) A subsequence identifying this packet as a Start packet; iii) A subsequence indicating the start code value; iv) A subsequence indicating a message; v) A subsequence indicating the end of a packet; c) After a packet has been received from the haptic device at the host computer after the transmission of the Start packet, then transmitting from the host computer to the haptic device a first Command packet;
where a Command packet comprises a sequence of bits having subsequences, in the following order;i) A subsequence indicating the start of a packet; ii) A subsequence identifying this packet as a Command packet; iii) A subsequence indicating the code value in the sequence of code values having a predetermined relationship to the code value in the previous packet transmitted from the host computer to the haptic device; iv) A subsequence indicating a message; v) A subsequence indicating the end of a packet; d) After a packet has been received at the host computer after the transmission of the preceding Command packet, then transmitting from the host computer to the haptic device a subsequent Command packet.
-
-
2. ) A method as in claim 1, wherein the sequence of code values is a sequence of pseudorandom numbers determined using the start code value as the seed for a pseudorandom number generation method.
-
3. ) A method as in claim 2, wherein the pseudorandom number generation method comprises one or more of the Mersene Twister method, the Yarrow method;
- a Linear Congruential Generator;
a pseudorandom number generator using a Linear Feedback Shift Register; and
a multiply-with-carry method.
- a Linear Congruential Generator;
-
4. ) A method as in claim 1, further comprising repeating step d one or more times.
-
5. ) A method as in claim 1, further comprising determining if the host computer receives a packet from the haptic device that does not contain a valid code value, and, if so, causing the host computer to enter an error state.
-
6. ) A method as in claim 5, wherein causing the host computer to enter an error state comprises communicating an error to at least one of (a) a user of the host computer, and (b) a supervisory or error management program on the host computer;
- and communicating to the haptic device commands to enter a Safe mode.
-
7. ) A method as in claim 1, wherein the host computer transmits packets at a rate of at least 10 per second.
-
8. ) A method as in claim 7, wherein the host computer transmits packets at a rate of at least 50 per second.
-
9. ) A method as in claim 1, wherein the code value in the Command packet is the ith code value in the sequence, and the code value in the next Command packet is the (i 2)th code value in the sequence.
-
10. ) A method as in claim 1, further comprising determining whether a packet received in response to a Command packet has a code value in the sequence of values immediately after the code value in the Command packet.
-
11. ) A method as in claim 1, further comprising determining whether a packet received in response to the Start packet has the code value in the Start packet.
-
12. ) A method as in claim 1, further comprising determining the first Command packet in part from information in the packet received in response to the Start packet.
-
13. ) A computer-readable medium having thereon instructions for causing a computer to communicate with a haptic device according to claim 1.
-
14. ) A method as in claim 1, wherein:
-
a) The subsequence of bits identifying a packet as an Initialize packet is 64 bits in length; b) The subsequence of bits identifying a packet as a Start packet is 64 bits in length; c) The subsequence of bits identifying a packet as a Command packet is 64 bits in length. d) A method as in claim 1 wherein the code values are 64 bits in length.
-
-
15. ) A method as in claim 1, wherein a subsequence identifying a packet as an Initialize packet is the same as a subsequence identifying a packet as a Start packet.
-
16. ) A method as in claim 14, wherein
a) The subsequence of bits identifying a packet as an Initialize packet is 4E 77 6D 6C 6C 6C 6F 4D in hexadecimal notation; -
b) The subsequence of bits identifying a packet as a Start packet is 4E 77 6D 6C 6C 6C 6F 4D in hexadecimal notation; c) The subsequence of bits identifying a packet as a Command packet is 61 43 4F 6D 6D 41 4E 44 in hexadecimal notation.
-
Specification