A Direct Brain-Machine Interface for 2D Cursor Control Using a Kalman Filter
Presented at the Society for Neuroscience Annual meeting, October 2004


A. Shaikhouni 1; W. Wu 2; D. S. Morris 3; J. P. Donoghue 1; M. J. Black 4

1. Department of Neuroscience, Brown University, USA
2. Division of Applied Mathematics, Brown University, USA
3. Department of Computer Science, Stanford University, USA
4. Department of Computer Science, Brown University, USA


A Kalman filter was exploited to model the probabilistic relationship between neural firing in motor cortex and hand kinematics in a Macaque monkey. In previous off-line experiments this Bayesian decoding method was used to estimate 2D hand kinematics from the firing rates of a population of cells in the arm area of primary motor cortex. Here we extended this work to the case of on-line, closed-loop, neural control of cursor motion. In this task a single monkey moved a cursor on a computer monitor using either a manipulandum or its neural activity recorded with a chronically implanted micro-electrode array. The monkey was presented with a target in a random location on a monitor and then moved a feedback cursor to the location of the target at which point the target disappeared and then reappeared in a new location. During neural control the decoding algorithm was switched between the Kalman filter and a commonly used linear regression method. With the linear regresssion method, the monkey was able to acquire 22.8 targets per minute while with the Kalman filter decoder the monkey was able to 33.5 targets/min. While the Kalman filter decoder provided better on-line task performance, we observed the decoded cursor position was nosier under brain control as compared with manual control using the manipulandum. To smooth the cursor motion without decreasing accuracy we developed a method that exploited smoothed neural firing rates. This smoothing method and its validity were quantitatively evaluated with recorded data.


Conflict: JPD is a shareholder in Cyberkinetics, Inc, which manufactures the array evaluated here.