BotROS: Painting with a Franka arm
In this project, robotics meets art! A 7 DOF Franka Panda arm, “BotROS”, was programmed to autonomously create pointilist-style artwork.
BotROS is provided with a canvas, paint brushes, and a palette. It will pick up a brush, dip it in a color, and will begin painting some dots! It will return for more paint every 8 dots. Once the first color is complete, it will return its brush and pick up a new one before initiating a second round of color.
Video Demo
Motion Planning
A custom MoveIt wrapper frankastein
was developed in Python for interfacing with the Franka. This API facilitated the planning and executing of robot trajectories by making requests to MoveIt’s GetPositionIK
and GetCartesianPath
services.
API Function: | Input |
---|---|
plan_path_to_position |
goal position (x,y,z) |
plan_path_to_orientation |
goal quaternion (x,y,z,w) |
plan_path_to_position_orientation |
goal position(x,y,z) + quaternion (x,y,z,w) |
plan_path_cartesian |
list of position (x,y,z) waypoints |
Computer Vision
April tags are used to locate the brushes and palette. The listener
node establishes the transformation between the camera and robot and publishes the paint brush and palette locations. The colordetection
node then color thresholds the image to determine the specific paint dip locations with respect to the robot frame.
The PictureTaking
package offers the take_picture
service which performs the following operations:
- Snaps a picture from an Intel Realsense (images can also be supplied)
- Applies morphological operations (dilation + erosion)
- Applies a Canny edge detector
- Discretizes the edge map into points
- Maps the points to the task space of the Franka end effector
Swarthmore S points. |
Collage
Our team decided to make a collage representing all of our undergraduate institutions:
|
College logos: Northwestern, Swarthmore, Notre Dame, Georgia Tech, Tennessee, and Maryland |
Team: Nader Ahmed, Demiana Barsoum, Shail Dalal, Fiona Neylon, Courtney Smith
Check out the project → GitHub