BotROS


GitHub Repository

For a final project in Northwestern University’s ME495 Embedded Systems in Robotics class, my team programmed a 7-DoF Emika Franka Panda arm to autonomously paint a given image.



BotROS (the robot's name), must pick up a paint brush, dip it into paint with the designated color, and begin painting the image. It will get more paint on the brush every 8 dots, then continue the painting. Once the first color has completed, BotROS will return the paint brush to the holder, pick up the next paint brush, and paint the dots of the second color before replacing the brush and completing the painting.



Full Live Demo



Project Subsystems

Computer Vision

A realsense camera, apriltags, and computer vision were used to detect the location of the paint brushes and the individual paint colors on the paint palette. The listener node identifies the location of the brushes and palette in the robot frame. The colordetection node uses computer vision to create a mask around the palette and braodcasts the location of each color in the robot frame. The robot receives waypoints from the file created by the take_picture package which uses a Canny edge detector and OpenCV to descritize an image.

Motion

Finally the iliketomoveitmoveit node utilizes a custom MoveIt API to excute the painting of the image. Its functionalities inculde picking up a paint brush, getting paint, painting the colored waypoints, replacing the brush, and repeating for each color found in the image.

My Focus

In this project, my main focus was on computer vision and worksapce setup. I developed the Apriltag intertegration into the tf tree and created the custom publisher to relay the location information. Additionally, I assisted in the state machine flow of the main node that connects all nodes and controls the robots. I also designed and constructed the brush holders that the robot had to grip as well as the brush holder.

Group Members: Courtney Smith, Nader Ahmed, Shail Dalal, Demiana Barsoum, Fiona Neylon