ee106a

Introduction Design Implementation: Hardware Implementation: Software Results & Video Reflection Team Additional Materials

A Ball Catching 7 DOF Robot Arm

Team

Name Bio Major Contribution
Philipp Wu Electrical Engineering and Computer Science and Mechanical Engineering - 3rd Year Worked on the robot control software. Built a simulator (in gazebo) using a robot model built in solidworks and converted to a URDF format. This was for testing robot control code for the 7 DOF in a controlled setting where parameters were easily tunable and software could be confirmed before finally integrated in real time. Also helped integrate the other parts of the software into the simulator so that ball tracking, and ball catching could be first tested in a safe simulated environment. Wrote the robot controller, a cartesian pose controller, for the 7 DOF robot and verified its usability for the ball catching problem. This involved writing a controller plug in for the robot controller manager of the koko robot.
Rachel Thomasson Mechanical Engineering - 4th Year Designed and 3D printed a custom end effector for attachment of a Velcro pad to the arm. Transformed the output of the Kalman Filter into usable information for placement of the end effector by performing appropriate frame transformations. Implemented code to align the z-axis of the end effector frame with the estimated velocity of the ball so that the Velcro pad would be properly-oriented for catching. Aided in testing the output of the Kalman Filter by adding a spherical marker in RViz on which all points published by the filter should lie. Disassembled, repaired, and reassembled linkages of the arm when they experienced mechanical failure.
Albert Li Mechanical Engineering, Minor in EECS - 3rd Year Wrote code to handle frame transformations between functions performing calculations in the filter code. Assembled and maintained the vertical kinect frame addition to the base. Assisted in repair/maintenance of the robot during breakages. Converted (unused) linear regression ball estimation code (potential alternative to Kalman filter code) to usable format, including internal transformations between frames for calculations. Wrote (unused) trajectory generation and simulation code using the imported robot model in MATLAB. Wrote (unused) MPC/trajectory optimization code based on imported dynamics model. The last two of these unused portions were developed in tandem with the ball-tracking portion of the project on the assumption that trajectory-following would be an extra implemented feature in the final project. However, there was not enough time to fully implement those functions.
Kireet Agrawal Electrical Engineering and Computer Science - 3rd Year Development of a real time ball detecting vision system using the Kinect 2 sensor, and the ROS TF connections for the Kalman Filter. This included utilizing multiple methods to obtain a real time 3D position. After using OpenCV to detect the maximum contour on the bitmask of the hsv color space converted rgb image to find a (u, v) pixel of the center of the ball, finding the 3D point in the camera frame was implemented in multiple ways in order to test and ensure real time capability. 1) Time Synchronized direct reading from the point cloud, 2) No Time Synchronized reading from the point cloud 3) Initial Calibration for manual Z depth detection, and use of the camera_info for manual X, Y calculation 4) Using the PinmodelCamera ROS package to find the 3D ray directly from the raw_rgb, raw_depth image and camera_info. Finally, writing the ROS node to broadcast the (X, Y, Z) ball_position as a TF and listening for the TF in the Kalman Filter and Ball Trajectory Planning ROS Node.
David Gealy Mechanical Engineering - Graduate Student Development of the ball trajectory estimation system, which consisted of taking a stream of ball positions from the vision system, and outputting a final end effector target for the robot to then track. This began with an outlier pruning system before handing points off to the second piece, the kalman filter. Helper functions were also developed to calculate the time to intersection of the robot's workspace, which was approximated as a sphere. A custom efficient closed form quartic solver was used to solve the intersection of a parabolic trajectory (the best estimate of the ball) with a sphere. This setup enabled the entire pipeline to see where the ball was going to be caught within 4 or 5 samples of the incoming ball (1/6th of a second of good samples). Also design and build of Koko.

Additional Materials