Authors: An Nguyen, Caroline Terryn, Catherine Maglione, Joseph Blom, Logan Boswell
This ROS package is used to make a Franka Emika Robot (FER) play a game of pool on a tabletop pool set for the final project of ME 495: Embedded Systems in Robotics at Northwestern University.
- With the Franka in blue-light mode and MoveIt launched, use
ros2 launch poolinator control.launch.xml
to start the image processing and control nodes. - Use
ros2 service call /strike_cue std_srvs/srv/Empty
with red and blue balls on the table to start the game of pool. - If the red ball gets knocked into a pocket or off the table, place it back on the table and run
ros2 service call /strike_cue std_srvs/srv/Empty
again. - Once all of the blue balls have been knocked into a pocket, then the Franka will knock the red ball into a pocket.
this node establishes the link between the camera frame and the robot base frame
this node identifies the pool balls using computer vision
this node sends sends commands to the Franka to make it hit balls, move to the home configuration, etc.
this file launches nodes necessary for computer vision and an Rviz window that includes the frames of the balls and shows images in the bottom-left corner
this file includes image.launch.xml and also starts the control node
The system consists of the Franka arm holding a cue with an apriltag, a realsense camera, and a tabletop pool table with corresponding apriltag. When the command ros2 launch poolinator control.launch.xml
is run, the /transform node publishes the transform between the camera and the /image_processor_colors node identifies the pool balls. The once the /strike_cue service is called /control node commands the Franka arm to play through a game of pool using MoveIt. The game continues until all of the blue balls are knocked into pockets, and then the red ball is pocketed. If the red ball goes into any of the pockets or accidentally knocked off the table, the Franka will wait until the red ball is replaced and the /strike_cue service is called once again.
poolinator.mp4
poolinator_rviz.webm
Tests can be run with colcon test