Delta robot with machine vision using Akarin servo
May 3, 2015 BY Yuchong Li

Introduction

This delta robot is based on my open source project Akarin servo. All the inverse kinematics is calculated in realtime by the individual servo drives. The servo drives are interfaced with a raspberry pi as the graphical interface. The camera finds the coordinates of the quarters, these coordinates are then send to the servo drives, which generate motion trajectory and calculate the inverse kinematics all in realtime.



Demo: pick and place application

Motors and controllers

Three BLDC motors(1.27Nm, 48V, 400W) with magnetic encoder(AS5048) are used. Three Akarin servo controllers are used to control these motors.





Inverse kinematics

It's easy to add custom IK profile to the Akarin servo. The following code is added to the file motion_control.c. Complete code can be found at Bitbucket.

case MOTION_B3D:
{
    if(motion_control_tick(&session->motion))
    {
        INSVector3f result = bezier3d_3rd(&b3d, session->motion.normalized_time);

        float t1, t2, t3;
        delta_inverse_kinematics(result.x, result.y, result.z + delta_top_z(), &t1, &t2, &t3);

        delta_current_position = result;

        /* set output according to axis */
        switch(current_motion.custom_motion_axis)
        {
            case AXIS_A: motion_set_output(session, t1); break;
            case AXIS_B: motion_set_output(session, t2); break;
            case AXIS_C: motion_set_output(session, t3); break;

            default:
                break;
        }
    }
    else
    {
        session->state = CONTROL_POSITION;
        LED_BLUE_HIGH();
    }
    break;
}

Application controller

A Raspberry Pi is used as the application processor for user interface.



Akarin servo on Hackaday.io(schematics and source code)
Source code on Bitbucket



© 2013 - 2017 Yuchong Li