Project repo for Group 3's Final Project for the 2024 Fall installment of Northweestern's ME495 Course.
- Zhengyang Kris Weng
- Andrew Kwolek
- Kyle Puckett
- Jueun Kwon
- Sayantani Bhattacharya
As kids, we thought robots were the coolest things ever. We viewed them as the future that can and would do any task you gave it. We thought robots wouldn't have limits. Also in our naive ways, many kids believed mini golf was the dominant display of sportsmanship, control, and the overall "cool factor." A blast from the past, for our final project for ME 495, we've decided to integrate these naive views into one project: Robotic Mini Golf.
Mini golf, a flat surface, presents an intriguing challenge for robotic systems. While kids develop mini golf skills through intuition, practice, and a little bit of healthy competition, programming a robot to achieve the same feat requires precision control of position and timing. A young kid needs a putter, a ball, a hole, and probably a bet and competition from their family/member to make a hole-in-one. They can just "eyeball."
A Franka Robot? A lot more complex. It may not feel competition, but sure does feel the pressure from a badly planned cartesian path. In this setup, a Franka Panda robot arm attempts the fundamental task of mini golf - putting a ball with just enough force to reach the hole.
Our group uses vision integration via April Tag Detection, motion planning arm and joint positions, as well as cartesian paths, and just enough bit physics to prove that robots can play the simplest children's game (or "perfect" first date), but it's much more difficult than one would think. A whole lot of math and 3D printed parts later, we give you...Apex Putter!
Main components of apex-putter:
- Vision
- RealSense D435i RGBD camera
- Franka FER Arm
- Custom putter end-effector
- Putter proximal end
- Putter distal end
- Custom Apriltag base tag choke
- Custom putter end-effector
- Turf
- Target apriltag pyramid
Main ROS2 Nodes:
- Vision
- YOLO based ball identification
- ... and ball radius compensation
- Apriltag based robot base transformation
- Kabsch algorithm based robot base registration
- Tf broadcasting
- YOLO based ball identification
- Motion
- Target vector calculation
- Target pose calculation
- Putt face compensation
- Putter compensation
- MoveIt! motion callbacks
- Follow
DEPENDENCIES.md
to setup your environment b) Source environment withsource_installs_zkw.sh
- please update with your paths c) Start Franka on station ros2 launch apex_putter demo.launch.py
ros2 service call /home_robot std_srvs/srv/Empty
ros2 service call /ready std_srvs/srv/Empty
ros2 service call /putt std_srvs/srv/Empty
RVIZ:
rviz.mp4
Live Demonstrations: