2017年11月27日星期一

6-DOF Stewart Platform



It's time for me to document my Stewart Platforms. It's a cool little project that will make you interested in robotics. Actually I modified this project to be my Robotics course's project, and it turns out pretty good. Here is the presentation video, check it out!
[Robotics Project Vlog] Presentation Video

It started out as a personal project, with no particular reason -- I simply want to build something cool, and a Stewart Platform is something cool.

First let's talk about theories, basically the way this thing moves itself. The motion model of Stewart System is based on a concept
called inverse kinematics. The basic idea is that in order to achieve a particular pose, the actuators in the motion link need to be in a desired position. This is different from forward kinematics, which uses the position of actuators in the motion link to derive the pose.

As you can see, in case of Stewart Platform, what we want is to have the upper platform in a desired pose; to get that pose, we use inverse kinematics to calculate what the servo angles should be. This is a natural way of thinking. If we use forward kinematics, the problem will be rediculously hard: there are 6 two-joint-legs that forms 40+ equations for final pose and there are multiple solutions, from which we have to pick one. It's just too hard for somthing like an Arduino to do.

Now we can break the problem into two subproblems: 1. representing the pose of the platform in a way that computer can understand. 2. Calculate lengths of all six legs (and then servo angles) to reach that desired pose.

The first subproblem is relatively simple, it's just a 3D rotation matrix plus a translation vector. The 3D rotation matrix gives you the desired roll-pitch-yaw of the platform, and the translation vector tells you the relative position between the center of the base and the center of the upper moving platform.
Once the pose is fully repersented in matrix form, the next step is to calculate desired leg lengths and servo angle of the actuators (servos). Here I have to mention that this document from U3A Wokingham Math group:
Math of Stewart Platform V5
This document explains the angle calculation step by step, it's clear and straightforward. Be prepare to refresh your trignometry knowledge while reading this document.

Theory part over, let's talk about design. The design has two iterations, and the first one is actually hand drawn and hand made. Thanks to my woodworking skill that the final result is pretty neat.

Here are some pictures of manufacturing:
 ball joints

 rod assembly

assembly 1

assembly 2

assembly done

ball on plate

The first generation turned out to be a success -- it is able to perform 6-DOF (6 degress of freedom) motion as desired. Now the concept has been proved, it's time to do another iteration. 

The next generation has the same design concept, but the manufacture was brought to another level: fully designed in CAD with laser cutting technique for fabrication.  

Doing the CAD model for this thing really refreshed my skill in UGNX, especially the assembly part. 
you really have to build that universal joint and assemble them

full assembly

The assembly is verified in CAD; it looked better than I thought. The next step is to bring this thing to the cutting machine and make a real one. 


laser cut parts

not bad, huh?
Here is this thing doing some motion:

In order to get this thing to do some interesting stuff, I put a resistive touch pad on the top so that it can detect small objects placed on it.

The first idea that came to my mind is doing a PID control to keep a ball on plate. Since the resistive touchpad can detect the position of the ball, it wouldn't be hard to use the two rotation degrees of the system to keep it on the plate.
Here is the video:
[Robotics Project Vlog] PID test

After the PID, I see that there are a lot interesting stuff that I can do with this system, such as a gravity simulator, a flight system simulator, or a course equipment to teach students inverse kinematics. For now I haven't done any of them due time constraint, but I will definitely explore more about what I can do with this thing, and for sure I will build more interesting stuff. Stay tuned!

Here are a few links about similar stuff:
http://fullmotiondynamics.com/
Circular-Base-Stewart-Platform



1 条评论:

  1. Good afternoon,
    I would like to ask you about the Beta angle. Where is it located or how to clalculate it in proper way? I can't figure out where is it when there is a situation that, x axis doesnt go through servo center. Nice projecy tho, would love to get some help.
    Greetings, Thomas.

    回复删除