element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      • Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Personal Blogs
  • Community Hub
  • More
Personal Blogs
Legacy Personal Blogs Creating the 6 DoF Platform – Pt1
  • Blog
  • Documents
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: benmatrix
  • Date Created: 2 Feb 2015 10:24 AM Date Created
  • Views 1351 views
  • Likes 1 like
  • Comments 4 comments
  • flowcode
  • prototype
  • rapid
  • 6dof
  • motors
  • embedded
  • servo
  • platform
  • stewart
  • arduino
Related
Recommended

Creating the 6 DoF Platform – Pt1

benmatrix
benmatrix
2 Feb 2015

Maze_Blog.png

About 6 months ago we were invited by RS Components and DesignSpark to help exhibit on their stand at the Electronica exhibition in Germany. The requirements; create a demonstration which would showcase our software and its benefit in rapid prototyping, it had to run using the Arduino hardware platform and be interactive for exhibition visitors. Luckily for us, our Flowcode software is ideally suited to rapid prototyping, and programming Arduino devices is just as simple. Coincidence? Perhaps not.

 

Next we just needed to think of a project that would allow audience participation.

 

We decided to make a 6 Degrees of Freedom (DoF) Platform with a simple maze placed on top. Users would rotate the platform, attempting to get a ball from the edge to the centre of the maze. The platform movement would be controlled via 6 servo motors, connected to an Arduino. The calculation of rotation was derived from X and Y data from an Android tablet over a Bluetooth connection. The final element was to provide data back into the PC running Flowcode so we could have a ‘real-time’ demo running, which replicated the platform movement alongside providing near real-time data back into the Flowcode console.

 

In a series of 3 blog articles we will step through the design process of the 6 DoF platform. In our first blog article we will discuss rapid prototyping; specifically how Matrix software and hardware enabled us to create a working proof of concept demonstration within 7 hours. In the second article we will discuss the addition of Bluetooth connectivity and the creation of an Android application to pass XY data from tablet to Arduino. In the third, and last, blog article we will discuss deployment and test with the Arduino hardware, alongside conversion to a PIC based microcontroller.

 

Rapid Prototyping

In this article we will discuss the rapid prototyping abilities of Flowcode and Matrix hardware. The first step was to create some simple hardware that would allow us a proof of concept; could we even create a 6 DoF platform?

 

The 6 DoF platform requires something called ‘Inverse Kinematics’. Kinematics is a mathematical process which is largely used when dealing with systems such as robotic arms where you have fixed translations and variable rotations. If you think about your arm, the fixed translations are your bones and the variable rotations are the joints between the bones.

 

Arc-welding.jpg

 

Forward kinematics is a way of taking the translations and rotations, summing them all together using translation matrices and coming up with the position and orientation of an end tool such as a drill or a gripper.

 

Inverse kinematics is a way of knowing where the end tool needs to be and calculating what the various variable angles need to be to obtain the required position. The human brain does this by trial and error and is commonly known as hand eye coordination. To do this in electronics we have to try and replicate this trial by error technique. Using forward kinematics with successive approximations of joint angles we try and achieve as close to the target end position as we can. In doing this there may be no real answer or there may be multiple correct ways of achieving the required tool position. An example of this might be if you wanted to get your hand behind your shoulder blades, it might be possible by going over your shoulder or under and behind your back but it also might not be possible. It’s only by trying to get there that we know for sure.

 

In the 6 DoF Platform there are essentially six end tool coordinates compromising of X, Y and Z movement and X, Y and Z axis rotation.

 

The first iteration of the product used an Arduino Mega 2560 microcontroller mounted onto a Matrix Arduino Shield. The shield allows users full access to each pin of the Arduino with a simple 9-way D-type connector. From here other Matrix eBlocks, or custom hardware, can be simply interfaced with the Arduino. In the image below you can see we connected to two ports of the Arduino. On one we used an EB059 Servo controller board, which easily allows us to connect 6 servo motors to the Arduino. The second port we used a male 9-way D-type and connected a small section of veroboard with 6 potentiometers. (Remember, the 6 potentiometers replicate X, Y and Z movement and rotation, where we are only considering X and Y rotation, so therefore 4 of the potentiometers were redundant and used only for testing purposes).

 

We created the inverse kinematics code in Flowcode to calculate the required rotation of the 6 servo motors in relation to the potentiometer values. Later in the design, X and Y data would be received from the Android tablet and the potentiometers would be removed.

 

We also created a simple demo rig to mount our servo motors. We found some examples online and used their designs to create a similar platform base attached via connecting rods to the servo. Our design was to be cut from 3mm clear acrylic on our laser cutter. At this stage we did not design the maze, as we were prototyping the movement of the platform only. Once we had the platform moving as desired, we would create the maze.

 

IMG_0394_ed.jpg

 

With our demo rig constructed we were able to test our code and hardware. As we adjusted the X and Y rotation potentiometers the platform rotated as desired. The inverse kinematics code would take the X and Y data and calculate the necessary rotation and direction for each of the six servo motors.

 

We found that in our first example the on-board regulator for the Arduino was not capable of providing enough power for the servo motors, which occasionally caused the Arduino to reset. Therefore we connected an external power supply for the servo motors, and only sent control signals from the Arduino. This created a much better solution, and was a design that went into the final product.

 

In the next article we will discuss how we introduced X and Y rotation data from an Android tablet. This data was made available through the creation of a simple application to run on the tablet to transmit data over Bluetooth. Alongside this, we also introduced a small Bluetooth module to our platform to receive the Bluetooth data. Finally we will also discuss the creation of the maze which sits on top of the platform.

  • Sign in to reply
  • benmatrix
    benmatrix over 10 years ago in reply to amgalbu

    The platform can move in the X, Y and Z axis and can also rotate around the X, Y and Z axis ergo providing 6 degrees of freedom.

     

    In our usage we have just used the X and Y rotations to perform the maze navigation but in other uses of the technology you can create very complex movements. I did add a jump button to the Android app which raised and lowered the platform on the Z axis however it was too slow to actually allow the ball to jump off the platform so we have not highlighted it.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • amgalbu
    amgalbu over 10 years ago

    One simple question about robotics: why you say this is a 6 DOF robot? actually it rotates along two axis, so it should be a 2 DOFs platform. Am I wrong?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • mcb1
    mcb1 over 10 years ago

    Looks simple until you start diggin into it.

     

    Nice work

    Mark

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • DAB
    DAB over 10 years ago

    Very interesting project.

     

    I will be looking forward to watching how you continue with the build.

     

    DAB

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube