Project started 20/10/2014.
Last edited: 12/11/2014.
Version: 2.6.
- The Ford Prefect is the name given to the robot this code was written for. It is a revolute-revolute-revolute pick and place style arm. It uses three dynamics servo motors to acctuate its limbs.
- To allow easy translation of code from this project to other robotic systems efforts to achieve modularity have been made.
- The code relies on visual input from an Xbox 360 Kinect, and was created in MATLAB R2014a for Windows 7. This code has not been tested on earlier versions of MATLAB and no guarantee is made that it will work on earlier ones.
- This code is providede as is and the developers are not liable for any problems caused by, or with, the code.
- The function Inv_kin.m contains a set of parameters for defining the physical sizes of the robot arm, all in cm and inspired from DH parameters. H0 refers to the size from the ground connection to the rotation of the first link. L0 is the perpandicular offset from the center of rotation (link 1) to the first elbow (link2). L1 and L2 refer to the lengths of the first limb and the distance from the final link to the tooltip.
Although support is not guaranteed, users can contact any of the developers if they wish.
Daryl D'Cruz daryl.dcruz1@uqconnect.edu.au.
Brandon Lydzbinski brandon.lydzbinski@uqconnect.edu.au.
Thomas O'Loughlin thomas.oloughlin@uqconnect.edu.au.
James Purnell james.purnell1@uqconnect.edu.au.
Albert Tate albert.tate@uqconnect.edu.au.
Copyright 2014 to Group 42, METR4202, The University of Queensland. Permission is hereby granted for the use and modification of any code from this project so long as proper reference is made to this group as the original owners. NOTE: the text to speech function tts.m was written by Siyi Deng and can be found here.
0.0 After installing all required software (as above) wrote code for taking a snapshot from above.
0.1 Wrote code for moving motors to a given angle.
0.3 Added ability to locate cups from the image taken by the kinect by detecting circles.
0.4 Setup a cup information array to store all of the information about the cups (centerX, centerY, radius, tStamp).
0.5 Implemented reverse kinematics, robot can now point to positions in the workspace.
0.6 Added cup tracking to allow the calculation of the angular velocity of the turntable.
0.7 Created cup pickup motion.
1.0 Integrated cup detection and cup grabbing together, allowing a single cup to be picked up autonomously.
1.1 Made condiment request function using text-to-speech.
1.2 Added code allowing arm to move cup to a set location in the workspace after picking up the cup.
1.3 Implemented fiducial marker detection to allow cups to be taken to the coasters.
1.4 Added functionality for putting down and dropping off cups.
1.5 Fixed bug to do with overloading max() function.
2.0 Changed code to allow the arm to repedatively pick up and move multiple cups off the turntable - order is distance from center of timetable.
2.1 Added ability to take large or small cups off (in order of closest to center if more than one present).
2.2 Implemented ability to take cup to a filling coaster, request to be filled and then be dropped off at an end coaster.
2.3 Increased modularity of cup image manipulation functions, small bug fixes.
2.4 Fixed numerous bugs, now picking up and moving three cups to the filling station robustly.
2.5 Integrated text-to-speech functions with the main functions.
2.6 Added glass chiming capabilities.