A 6DoF electromechanical human-machine interface from key reels

Similar projects worth following
By moving a wooden ball, you can manipulate a 3D cube on the screen.
May also be used to control a robotic arm, a quadcopter or a massive alien mothership.

This project explore a minimalistic build of a 6 DoF joystick. It also contains all the calculation to solve the kinematics.

The Build

The build is simply made of 4 principal parts:

  • 1 wooden ball
  • 3 retractable key reels
  • 3 analog 2-axis joysticks
  • 1 microcontroller (teensy-lc)

The wooden ball is attached to the strings of three key reels. The potentiometers of the joysticks measure the angle formed by each string. The resulting values are transmitted by the microcontroller to the laptop via usb. A python program calculate in real time the exact position of the wooden ball from these values.

The result is a position that encode the rotation and the translation of the object.

The Maths

The python program has to calculate the position P of the wooden ball from the received angles The function that do this task is known as forward kinematics (FK). Its inverse, that calculate the six angles from a given position, is called the inverse kinematics (IK). I was not able to calculate the FK with the configuration of this build. Although, the IK is straightforward to calculate. So the task of the python program is to numerically invert IK to get FK.

There exist various way to encode a position P of a rigid body like the wooden ball. I choose to use unit quaternions to encode the rotation part and vectors for the translation part. The mathematical space of all possible positions P is named SE(3). This space has six dimensions (three for the rotation part and three for the translation part). Although, it is not a linear space due to the rotation part.

To get the numeric inverse of a function f: A -> B with a method like the Newton's one, the spaces A and B must be linear spaces. Since SE(3) is a curved space, we need to "linearize" it to use the Newton method on IK. This is achieved by using a special form of the exponential map :

The set se(3) represent the tangent space to SE(3). This tangent space has also six dimensions and it is linear! So the exponential map sends vectors of dimension 6 to the curved space SE(3) in a very smooth way.

Now we have everything necessary to calculate the forward kinematic FK

  • Replacement of the pots

    Nicolas Berger01/29/2016 at 22:15 0 comments

    Unfortunately the potentiometers that are included in the 2-axis joystick have a non-linear profile near 0°. They have been replaced by other ones with a linear profile.

View project log

Enjoy this project?



Keith Olson wrote 02/11/2016 at 08:11 point

I don't supposed you could be persuaded to make it emulate an HID device, could you?  :grin:

  Are you sure? yes | no

Nigel Orr wrote 02/03/2016 at 12:38 point

Nice build, and clever design, I might build one as a demonstration project.  I'm wondering why you don't use a circular frame?  I would expect it to hold everything more firmly.  For example, you could use a large embroidery hoop.

  Are you sure? yes | no

Chris Shaw wrote 02/03/2016 at 00:44 point

Great work Nicolas! 

I made something v. similar in my undergrad at Uni. Seen your project video on the main site and inspired me to actually get involved in this site now!
Hopefully I'll manage to share my old design with you soon enough if I get chance (and if you're interested).

Good work again! :-)

  Are you sure? yes | no

Nicolas Berger wrote 02/03/2016 at 23:54 point

Hi. I am very interested in your design. I send you my email. is a wonderful place to get involved in. As I can experiment today, it enable to make contact with amazing people and also boosts the motivation!

  Are you sure? yes | no

Maciej Witkowiak wrote 01/29/2016 at 23:43 point

Great idea, so simple and elegant! And the applied math, awesome :)

  Are you sure? yes | no

Gertlex wrote 01/28/2016 at 18:25 point

Neat looking build. Any chance of getting video of this in action to make it clearer what's going on?

  Are you sure? yes | no

Nicolas Berger wrote 01/28/2016 at 20:47 point

Thank you! I will make the video this week-end.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates