Robot Jenga Assistant
This project is meant to turn a Franka Emika Panda arm into a Jenga assistant! It uses computer vision to detect Jenga bricks and place them on top of the tower. The robot plans and executes trajectories using a custom MoveGroup API.
Video Demo
Calibration
- Calibrating the robot relies on adding frames to the tf tree based on known geometry.
- The robot is sent to a calibration position, then given an april tag that aligns with the gripper frame.
- Once the camera can see the tag, it creates series of transforms from the camera to the tag and finally to the base of the robot.
- Calibration pose:
Tower Detection
- We detect the tower using the depth image from an Intel Realsense camera.
- Once the top of the tower and the table are found by generating contours on the depth image, we repeatedly scan between these locations looking for partially removed pieces.
- The starting orientation of the tower is determined through line detection in OpenCV.
Machine Learning for Hand Detection
- Overview:
- We performed transfer learning on a deep neural network to help us detect whether there are hands in the scene so that the robot knows when it should look for a Jenga brick.
- Dataset:
- Video samples of the Jenga tower were taken and separated into two classes: with hand(s) and without hand(s) around.
- 1000 images were extracted from each class.
- Model:
- We performed transfer learning on a pretrained neural network - MobileNets
- The MobileNet we are using implements depth-wise separable convolutions to build light weight deep neural networks
- We only train the last layer of the MobileNet to perform our specific task
- Training:
- Epochs: 50
- Batch Size: 16
- Learning Rate: 0.001
Custom MoveIt Library
- Overview:
- This package allows us to move our robot around while also avoiding objects by using different services.
- GetCartesianPath:
- Moves the end-effector gripper in a straight line from start to end.
- Uses multiple intermediate waypoints to ensure straight path.
- GetPositionIK:
- Calculates possible joint positions of robot from a given start and end position and orientation for the end-effector.
- Used to Orient the gripper without shifting the position .
- Used to move the robot when straight movement is not necessary.
- GetPlanningScene:
- The environment around the robot.
- This allows us to add in the table, camera, and jenga tower to avoid collisions .
Source code
Reference
- Howard, A., Zhu, M., Chen, B., Kalenichenko, D., Wang, W., Weyand, T., Andreetto, M., & Adam, H. (2017). MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications. https://doi.org/10.48550/ARXIV.1704.04861
Group members
Katie Hughes, Liz Metzger, Alyssa Chen