93 |
controllers out of commodity parts, without requiring electrical or |
controllers out of commodity parts, without requiring electrical or |
94 |
mechanical engineering experience. |
mechanical engineering experience. |
95 |
The components that suit our purposes best are LEGO bricks and |
The components that suit our purposes best are LEGO bricks and |
96 |
optom |
optomechanical computer mice. |
97 |
|
|
98 |
.. from the end user point of view, several spesific |
.. from the end user point of view, several spesific |
99 |
controllers have been tricky to use simultaneously before USB |
controllers have been tricky to use simultaneously before USB |
121 |
- a way to do user interface device research on EXTREMELY |
- a way to do user interface device research on EXTREMELY |
122 |
limited budgets |
limited budgets |
123 |
|
|
|
- LEGO has already published a robotics invention series called |
|
|
Mindstorms, which also contains bricks with touch and light |
|
|
sensors and a central unit to control them. Even the central unit |
|
|
alone |
|
|
is quite expensive and the existing sensors |
|
|
are not accurate |
|
|
enough for controller use, we look them forward with interests. |
|
|
|
|
124 |
- advantages: |
- advantages: |
125 |
|
|
126 |
- LEGO bricks |
- LEGO bricks |
156 |
was measured by having the fishing line go through a grid wheel |
was measured by having the fishing line go through a grid wheel |
157 |
in the mouse with small weigtht at the end maintaining tension. |
in the mouse with small weigtht at the end maintaining tension. |
158 |
|
|
159 |
|
- LEGO has already published a robotics invention series called |
160 |
|
Mindstorms, which also contains bricks with touch and light |
161 |
|
sensors and a central unit to control them. Even the central unit |
162 |
|
alone |
163 |
|
is quite expensive and the existing sensors |
164 |
|
are not accurate |
165 |
|
enough for controller use, we look them forward with interests. |
166 |
|
|
167 |
REF: Mindstorms-using articles &c |
REF: Mindstorms-using articles &c |
168 |
|
|
169 |
[fitzmaurice95bricks]_ |
[fitzmaurice95bricks]_ |
170 |
|
|
171 |
- using physical Lego-size bricks as controllers for applications |
- using physical Lego-size bricks as controllers for applications |
172 |
on a large horizontal display surface |
on a large horizontal display surface |
173 |
- a Lego brick sorting experiment shows how two hands are |
- a Lego brick sorting experiment shows how two hands are |
174 |
used flexibly in parallel |
used flexibly in parallel |
175 |
|
|
176 |
Graph: axes: price, DOF |
Graph: axes: price, DOF |
177 |
|
|
192 |
the optomechanical mice. |
the optomechanical mice. |
193 |
|
|
194 |
.. figure:: required.jpg |
.. figure:: required.jpg |
195 |
:width: 7.5cm |
:width: 7.5cm |
196 |
:label: figrequired |
:label: figrequired |
197 |
|
|
198 |
The non-LEGO parts and tools required for a controller. |
The non-LEGO parts and tools required for a controller. |
199 |
A USB mouse would be preferred to the PS/2 mouse |
A USB mouse would be preferred to the PS/2 mouse |
200 |
shown in the picture, since several can be connected |
shown in the picture, since several can be connected |
201 |
to a computer simultaneously as separate input sources. |
to a computer simultaneously as separate input sources. |
202 |
|
|
203 |
.. figure:: mouseopen.jpg |
.. figure:: mouseopen.jpg |
204 |
:width: 7.5cm |
:width: 7.5cm |
205 |
:label: figmouseopen |
:label: figmouseopen |
206 |
|
|
207 |
The mouse, opened with the screwdriver. The screwdriver |
The mouse, opened with the screwdriver. The screwdriver |
208 |
will not be needed after this step. |
will not be needed after this step. |
209 |
|
|
210 |
.. figure:: mousemechanism.jpg |
.. figure:: mousemechanism.jpg |
211 |
:width: 7.5cm |
:width: 7.5cm |
212 |
:label: figmousemechanism |
:label: figmousemechanism |
213 |
|
|
214 |
The mechanism of the mouse: the mouse ball, which rotates |
The mechanism of the mouse: the mouse ball, which rotates |
215 |
from contact with the underlying surface, rotates |
from contact with the underlying surface, rotates |
216 |
the two axles whose motion is then detected. |
the two axles whose motion is then detected. |
217 |
|
|
218 |
|
|
219 |
.. figure:: optomechanism.jpg |
.. figure:: optomechanism.jpg |
220 |
:width: 7.5cm |
:width: 7.5cm |
221 |
:label: figoptomechanism |
:label: figoptomechanism |
222 |
|
|
223 |
In optomechanical mice, the motion of the axles is detected |
In optomechanical mice, the motion of the axles is detected |
224 |
by the IR light gate whose beam is cut by the slitted disk. |
by the IR light gate whose beam is cut by the slitted disk. |
225 |
|
|
226 |
Figures [ref-figrequired]_ - [ref-figoptomechanism]_ explain |
Figures [ref-figrequired]_ - [ref-figoptomechanism]_ explain |
227 |
the internal mechanism of optomechanical mice, |
the internal mechanism of optomechanical mice, |
238 |
affected: the gate missed a large fraction of the events. |
affected: the gate missed a large fraction of the events. |
239 |
|
|
240 |
.. figure:: wheelmechanism1.jpg |
.. figure:: wheelmechanism1.jpg |
241 |
:width: 7.5cm |
:width: 7.5cm |
242 |
:label: figwheelmechanism1 |
:label: figwheelmechanism1 |
243 |
|
|
244 |
The principle behind the current version of |
The principle behind the current version of |
245 |
our interface between the optomechanical mouse and |
our interface between the optomechanical mouse and |
246 |
LEGO pieces: driving the mouse axles by a rubber LEGO tyre. |
LEGO pieces: driving the mouse axles by a rubber LEGO tyre. |
247 |
A smooth tyre (Bricklink part no 132-old) |
A smooth tyre (Bricklink part no 132-old) |
248 |
works even better, but they are currently |
works even better, but they are currently |
249 |
in short supply. |
in short supply. |
250 |
|
|
251 |
The third and so far final solution is to use the mouse's own |
The third and so far final solution is to use the mouse's own |
252 |
mechanism, simply driving it using a LEGO rubber tyre |
mechanism, simply driving it using a LEGO rubber tyre |
259 |
[ref-figpressmechanism1]_. |
[ref-figpressmechanism1]_. |
260 |
|
|
261 |
.. figure:: pressmechparts.jpg |
.. figure:: pressmechparts.jpg |
262 |
:width: 7.5cm |
:width: 7.5cm |
263 |
:label: figpressmechparts |
:label: figpressmechparts |
264 |
|
|
265 |
The LEGO parts for the driving mechanism |
The LEGO parts for the driving mechanism |
266 |
|
|
267 |
.. figure:: pressmechanism1.jpg |
.. figure:: pressmechanism1.jpg |
268 |
:width: 7.5cm |
:width: 7.5cm |
269 |
:label: figpressmechanism1 |
:label: figpressmechanism1 |
270 |
|
|
271 |
The driving mechanism assembled. The mechanism is attached |
The driving mechanism assembled. The mechanism is attached |
272 |
to the LEGO framework by the long axle; the driving tyre |
to the LEGO framework by the long axle; the driving tyre |
273 |
is on one end of the 1x5 liftarms and |
is on one end of the 1x5 liftarms and |
274 |
a towball for attaching a rubber band |
a towball for attaching a rubber band |
275 |
at the other. |
at the other. |
276 |
The rubber band is used to pull the towball upwards, |
The rubber band is used to pull the towball upwards, |
277 |
which in turn presses the tyre downwards. |
which in turn presses the tyre downwards. |
278 |
The force is easily adjustable by adjusting the other |
The force is easily adjustable by adjusting the other |
279 |
end of the rubber band. |
end of the rubber band. |
280 |
|
|
281 |
With the pressure mechanism, it is simple to build a housing |
With the pressure mechanism, it is simple to build a housing |
282 |
for the lower part of the mouse case and place the tyre holders |
for the lower part of the mouse case and place the tyre holders |
286 |
|
|
287 |
|
|
288 |
.. figure:: framestart.jpg |
.. figure:: framestart.jpg |
289 |
:width: 7.5cm |
:width: 7.5cm |
290 |
:label: figframestart |
:label: figframestart |
291 |
|
|
292 |
The beginnings of the housing for the mouse case. |
The beginnings of the housing for the mouse case. |
293 |
|
|
294 |
|
|
295 |
.. figure:: framedrivers.jpg |
.. figure:: framedrivers.jpg |
296 |
:width: 7.5cm |
:width: 7.5cm |
297 |
:label: figframedrivers |
:label: figframedrivers |
298 |
|
|
299 |
The driving mechanisms (using a slightly different version |
The driving mechanisms (using a slightly different version |
300 |
than the one depicted in the previous figures) |
than the one depicted in the previous figures) |
301 |
attached. After the towballs are attached |
attached. After the towballs are attached |
302 |
to rubber bands for pressing the tyres downwards slightly, |
to rubber bands for pressing the tyres downwards slightly, |
303 |
motions from the LEGO axles are accurately translated to mouse |
motions from the LEGO axles are accurately translated to mouse |
304 |
X and Y motions. |
X and Y motions. |
305 |
|
|
306 |
On the software side, the Linux kernel is able to |
On the software side, the Linux kernel is able to |
307 |
pass events from each USB mouse to a different virtual device |
pass events from each USB mouse to a different virtual device |
324 |
focused node and the peripherally shown nodes. |
focused node and the peripherally shown nodes. |
325 |
|
|
326 |
.. figure:: loomcontrol.jpg |
.. figure:: loomcontrol.jpg |
327 |
:width: 7.5cm |
:width: 7.5cm |
328 |
:label: figloomcontrol |
:label: figloomcontrol |
329 |
|
|
330 |
A fully functional controller prototype, with two |
A fully functional controller prototype, with two |
331 |
absolute arm controls and a wheel control. All three |
absolute arm controls and a wheel control. All three |
332 |
controls have enough friction |
controls have enough friction |
333 |
to retain their position. |
to retain their position. |
334 |
|
|
335 |
We must stress that |
We must stress that |
336 |
this constoller is still very much work in progress; |
this constoller is still very much work in progress; |
353 |
by preserving its position |
by preserving its position |
354 |
|
|
355 |
.. figure:: joystick.jpg |
.. figure:: joystick.jpg |
356 |
:width: 7.5cm |
:width: 7.5cm |
357 |
:label: figjoystick |
:label: figjoystick |
358 |
|
|
359 |
A 2D joystick-like controller built from LEGO bricks as |
A 2D joystick-like controller built from LEGO bricks as |
360 |
a proof-of-principle. |
a proof-of-principle. |
361 |
There is no force returning the joystick to its |
There is no force returning the joystick to its |
362 |
center position in this design, but if desired, |
center position in this design, but if desired, |
363 |
that could easily be added (although in that case simply |
that could easily be added (although in that case simply |
364 |
purchasing a commodity |
purchasing a commodity |
365 |
game controller would be easier). |
game controller would be easier). |
366 |
|
|
367 |
Practical tips |
Practical tips |
368 |
============== |
============== |
388 |
the following design rules: |
the following design rules: |
389 |
|
|
390 |
- No frictionless pins. For controllers, the frictionless pins are next to useless |
- No frictionless pins. For controllers, the frictionless pins are next to useless |
391 |
except in special circumstances due to their looseness. |
except in special circumstances due to their looseness. |
392 |
|
|
393 |
- A high gear ratio right after the gear attached to the |
- A high gear ratio right after the gear attached to the |
394 |
control stick is vital |
control stick is vital |
395 |
to alleviate the looseness in gears after that. |
to alleviate the looseness in gears after that. |
396 |
|
|
397 |
- Axles used in gear trains must be supported at several points, |
- Axles used in gear trains must be supported at several points, |
398 |
far enough from each other. |
far enough from each other. |
399 |
|
|
400 |
- All moving |
- All moving |
401 |
joints should be designed |
joints should be designed |
402 |
symmetrically, using e.g. 3-long pins with friction. |
symmetrically, using e.g. 3-long pins with friction. |
403 |
This is similar |
This is similar |
404 |
to taking the numerical derivative of a function |
to taking the numerical derivative of a function |
405 |
|
|
406 |
.. raw:: latex |
.. raw:: latex |
407 |
|
|
408 |
$f(x)$ |
$f(x)$ |
409 |
|
|
410 |
at |
at |
411 |
|
|
412 |
.. raw:: latex |
.. raw:: latex |
413 |
|
|
414 |
$x$ |
$x$ |
415 |
|
|
416 |
as |
as |
417 |
|
|
418 |
.. raw:: latex |
.. raw:: latex |
419 |
|
|
420 |
$(f(x+\epsilon/2) - f(x-\epsilon/2)) / \epsilon$ |
$(f(x+\epsilon/2) - f(x-\epsilon/2)) / \epsilon$ |
421 |
|
|
422 |
instead of |
instead of |
423 |
|
|
424 |
.. raw:: latex |
.. raw:: latex |
425 |
|
|
426 |
$(f(x+\epsilon) - f(x)) / \epsilon$ |
$(f(x+\epsilon) - f(x)) / \epsilon$ |
427 |
|
|
428 |
|
|
429 |
|
|
430 |
Handles |
Handles |
440 |
handle is shown in Fig. [ref-figoctagonal]_. |
handle is shown in Fig. [ref-figoctagonal]_. |
441 |
|
|
442 |
.. figure:: octagonal.jpg |
.. figure:: octagonal.jpg |
443 |
:width: 7.5cm |
:width: 7.5cm |
444 |
:label: figoctagonal |
:label: figoctagonal |
445 |
|
|
446 |
A rugged and relatively comfortable octagonal |
A rugged and relatively comfortable octagonal |
447 |
handle built from slopes and inverted slopes. |
handle built from slopes and inverted slopes. |
448 |
|
|
449 |
|
|
450 |
With some more effort, ergonomic handles of any imaginable shape |
With some more effort, ergonomic handles of any imaginable shape |
453 |
modelling paste, as in [ref-figpaste1]_. |
modelling paste, as in [ref-figpaste1]_. |
454 |
|
|
455 |
.. figure:: paste1.jpg |
.. figure:: paste1.jpg |
456 |
:width: 7.5cm |
:width: 7.5cm |
457 |
:label: figpaste1 |
:label: figpaste1 |
458 |
|
|
459 |
An ergonomic handle implemented using |
An ergonomic handle implemented using |
460 |
air-hardening modelling paste. The handle was |
air-hardening modelling paste. The handle was |
461 |
molded directly to the left hand of one of our research |
molded directly to the left hand of one of our research |
462 |
group's members. |
group's members. |
463 |
|
|
464 |
|
|
465 |
|
|
475 |
- easy to build |
- easy to build |
476 |
- reusable parts |
- reusable parts |
477 |
- USB -> can attach as many as we want, simple to use |
- USB -> can attach as many as we want, simple to use |
478 |
programmatically e.g. in Linux |
programmatically e.g. in Linux |
479 |
- taps to several scientists' hidden background in LEGO building. |
- taps to several scientists' hidden background in LEGO building. |
480 |
- fun, motivating |
- fun, motivating |
481 |
|
|
483 |
|
|
484 |
- weak (legos may break apart) |
- weak (legos may break apart) |
485 |
|
|
486 |
- requires careful construction |
- requires careful construction |
487 |
|
|
488 |
- see tips section |
- see tips section |
489 |
|
|
490 |
- gluing parts |
- gluing parts |
491 |
|
|
492 |
- mechanical looseness |
- mechanical looseness |
493 |
|
|
494 |
- some inevitable |
- some inevitable |
495 |
|
|
496 |
- humans used to some |
- humans used to some |
497 |
|
|
498 |
- can be alleviated to a great degree by careful construction |
- can be alleviated to a great degree by careful construction |
499 |
|
|
500 |
- see tips |
- see tips |
501 |
|
|
502 |
- relatively big size |
- relatively big size |
503 |
|
|
504 |
- size has already reduced and will probably still reduce by new |
- size has already reduced and will probably still reduce by new |
505 |
inventions for connecting mouse's optomechanics mouse to handles |
inventions for connecting mouse's optomechanics mouse to handles |
506 |
|
|
507 |
- requires calibration |
- requires calibration |
508 |
|
|
509 |
- having to explain to budget counters purchases of LEGO sets with |
- having to explain to budget counters purchases of LEGO sets with |
510 |
interesting names (or bricklink purchases) |
interesting names (or bricklink purchases) |
511 |
|
|
512 |
Most of the cons are still acceptable for prototypes, using LEGO bricks for |
Most of the cons are still acceptable for prototypes, using LEGO bricks for |
513 |
prototyping won't rule out the possibility to create "real" controller |
prototyping won't rule out the possibility to create "real" controller |