What is It?

B-BOT is a Bartender Bot. Our team of four designed, built, and programmed B-BOT to mix drinks based on preconfigured recipes.

Isometric view

Scorpio

My main contributions included:

  • Programming the manipulator’s Dynamixel motors to execute trajectories using the Dynamixel Python API and ROS Control
  • Design and CAD of the gripper and robot links between motor joints
  • 3D printing all of the parts

Preconfigured Trajectories

For our first demo, we built B-BOT to mix drinks based on preconfigured trajectories. The environment is made favorable to the robot – the ingredient cups and mixing cups are all at a priori known positions, so the robot runs a pre-planned trajectory to drop the contents of two ingredient cups in the mixing cup.


The above demo was the result of a six-week sprint to design, build, and program the robot for our first quarter class: MAE 263A Kinematics of Robotic Systems.

Dynamic Trajectories

Expanding on our first quarter progress, a subset of the original team went on to implement a more advanced Proportional Integral controller for the manipulator joints. This controller was tasked with mixing drinks in a less favorable environment – the robot and the cups were placed at positions NOT known a priori. This meant that the robot had to figure out where the cups were in relation to itself in real-time. To do this, we used some good old pose estimation via aruco markers.

Well, at least all that was the plan. This is what we ended up with:

B-BOT executes a trajectory based on the sensed position of the ingredient and mixing cups. Because the redesigned manipulator was too heavy for the Dynamixel motors' torque capacity, we had to remove the gripper and just go through the motion of the trajectory rather than actually grab the ingredient cup and pour a liquid. This demo still features our PI controller to execute the trajectory.

No drinks :/ but we learned a lot.