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.
Source code on Bitbucket