I built this robot with Peerapat Luxsuwong, Meagan Hiatt, and Adria Fung as part of a final project at WPI for a class called RBE 3001: Unified Robotics III. The project was to make a robot to pick weights off an assembly line and sort them by weight. The skills we implemented involved programming a serial manipulator from the microcontroller up using embedded programming, inverse kinematics, and PID control.
We were given an electronics board with the microcontroller and several aspects included as well as the arm and conveyor belt. We attached an infrared sensor and used it to detect the distance between the arm and an incoming object on the belt. Using inverse kinematics, our arm could grab an incoming block about 95% of the time. The robot then extended itself out horizontally and obtained the weight of the block it was holding by sensing the current through the lower motor. Since the current is proportional to the torque in the motor, the robot could determine if the block was heavy or light and sort it accordingly.
Several other components came into play during the project, including the timers, ADC, DAC, linear motor drivers, current sensors, USART and SPI communications.