Robotic Manipulation with Baxter
Baxter is an industrial robot with 7 degrees of freedom on each arm. Using the Robotic Operating System (ROS) and Python, I implemented various tasks for Baxter such as stacking blocks using inverse kinematics, writing letters and drawing shapes using PID control, and throwing balls using velocity control.
Role: Arm Dynamics (Team of 3) Duration: Aug 2015 - Dec 2015 |
|
To perform the various projects stated above, I implemented an architecture using couple ROS nodes to launch and execute tasks. Mainly there was a Controller node to plan and call sequence of service calls and a Robot_Interface server to execute commands and report the state of the robot.
With such architecture built, it was easier to modify the controller to fit various tasks. With position control, Baxter could stack blocks in both ascending/descending order using both arms. We took this even further to implement Tower of Hanoi. |
For drawing shapes and writing letters, I implemented a simple proportional-integral-derivative (PID) control to correct for accumulating error with velocity control. With velocity control, I used Jacobian pseudoinverse to solve to valid angular velocities in the specified configuration space and then optimized the solution by checking for singularities.
The final project was to play soccer with the other team using each Baxter's arm. In addition to the implementation of position control for stacking blocks (as defenders) and velocity control for throwing the ball, I also implemented the finite state machine (FSM) to best adhere to the real-time service requests from image processing, specified game-rules, as well as the flow of the match.
Towards the end of the course, I explored more advanced topics such as motion planning, collision avoidance, and visual servo-ing. I look forward to revisiting these topics through more robots later on. |
|