The Baxter Builder (ROS)
ME 495 – Embedded Systems in Robotics
In the first quarter of my graduate program, I took a project-based course, which provided experience with a variety of software tools and concepts useful for a robotics engineer working with practical embedded systems. In this course, I learned how to use the Robot Operating System (ROS), with all major assignments programmed in Python. This page highlights the final project completed at the end of the course. The “theme” of the final project was Recreational Robotics.
Goals of the Project
For this project, the robot tasks had to include:
- Manuipulation: The robot must physically interact with at least one object in the environment using the robot’s arm and or grippers
- Sensing: The solution must use at least one sensor, and the behavior of the robot must change in response to the sensor reading
- Human Interaction: A human user should be able to do something to change what the robot does, without needing to program
Final Task Overview
My group used a Baxter robot to assemble a MEGA BLOKS pyramid from the blocks provided by the user. The Baxter robot has two arms. For this task, one arm was used for visualization, and the other was used for manipulation. The general flow is:
- Initialize Baxter
- Human places blocks on tray → Human Interaction
- Baxter detects location of a block (with right hand) → Sensing
- Goal block is displayed to user on screen
- Baxter navigates to block, picks it up, and places it in the pyramid location (with left hand) → Manipulation
- Baxter repeats steps 3 and 4 until the pyramid is complete
My Role
For this project, I set up the initialization protocol for the task. I also Luxi set up the MoveIt!, which was used to move the arm into place over a block prior to pickup. I served as systems the systems integrator for the project – setting up the overall flow and ensuring the sensing and manipulation portions of the project were compatible. When we had to pivot from our initial plan of using pure position control to force control to manipulate the blocks, I worked with Luxi to make the necessary controls modifications.
Video
Future Improvements
- Adding closed-loop control with the camera (to verify block placement and allow more accurate positioning)
- Updating feedback control on the gripper to sense if the gripper is indeed holding the block at the desired position