WSU Senior Capstone: Project Lead and Programmer
A group project sponsored by Los Alamos National Lab
Project Definition
Los Alamos National Lab (LANL) looked to automate the scanning of decommissioned radioactive material. Their goal was to accomplish this using the Spot robot, with associated robotic arm, from Boston Dynamics and an attached gamma detector.
Project Scope
Create an algorithm that can accept a point cloud of a common. simple object (as shown) and create a path for the robotic arm and gamma detector around the object.
Team Dynamic
Team Member
Role(s)
Responsibilities
Ashley Sande
Note Taker
Documented group progress for the final report and worked as the secretary for group and client meetings.
Jakob Darrow
Evaluator/Coordinator
Ensured each member was on track with individual tasks and coordinated meetings with the group and client.
Kyle Appel
Critic/Monitor
Evaluated solutions for feasibility and implementation. Compared each step to the goal of the project.
Petra Jonson
Leader/Implementer
Project organizer and primary developer. Led all software implementation, development, and organization.
Shea Cooke
Implementer/Resource Investigator
Implementation of Point Cloud Library. Primary contact with external resources and code libraries.
My contribution and details on role
Project Lead, Implementer, Task Organization and Assignment, Timeline Generation
As the project lead and implementer, I was in charge of breaking down the project into reasonable, manageable tasks and designing the software that is described in the methodology section below. Leading often took the form of whiteboard discussions where I would explain ideas and query the group for theirs. After idea generation, these would be broken into tasks that could be accomplished prior to the next meeting where I would assign each to a group member. When questions or concerns arose, I was the primary contact to work with and solve the problem.
Progression and Problem Solving
Identifying the Problem
Identification of the Problem
As a group, we would each ideate to find various questions we had and important points regarding the project as a whole.
Discussion of Individual Points
Each member took turns discussing each point they found and ensured that the entire group was in agreement.
Organization of Thoughts
These thoughts were organized based on categories such as logistical, hardware, software, etc. Repeated ideas and comments were discarded.
Organization and Planning
Task organization, planning, project criteria, and problem defining
The capstone team utilized excel heavily. Two primary examples include the Gantt chart (shown above) and the modified House of Quality (HOQ, shown below) from the quality function deployment (QFD) methodology. The Gantt chart allowed us to organize major tasks and benchmarks along the way and the HOQ helped to compare the expectations of LANL with how these could be realistically implemented. These were all rated in how they impact one another on the bottom of the HOQ and how each correlated to one another on the top of the HOQ.
Methodology, Approach, and Solution
Step 1: Isolate the planes and find the normal equation*
*Plane isolation using Point Cloud Library and normal equation determination using Python RANSAC code was written by Shea Cooke and Kyle Appel, respectively
Isolate a single side of the object
The Point Cloud Library was utilized to detect planar sides of the object. By modifying the input resolution, each side of the cuboid was found.
Detect the equation for the normal
Using Python RANSAC, the normal is detected by iterating through 50000 plane normal equations and finding that which is the best fit to the entire plane.
Step 2: Rotate the plane parallel to the x-y cartesian plane
Example plane not normal to the x-y plane
Plane after rotation, normal to the x-y plane
Using the normal direction of the plane and the normal direction of the x-y plane, the x, y, z, and w components of the quaternion to align these vectors was found. This quaternion was then applied to each point of the plane to give the plot shown above
Step 3: Simplify and offset the plane
Example plane (red) and offset points (blue)
Once normal, the plane is divided into squares based on the detection diameter of the gamma detector. The center of these squares (black x's) are used to find the nearest points in the points cloud (red circles). These points (blue squares) are then offset the necessary amount to prevent collision. This offset amount was variable depending on desired safety.
Each side of the object rotated and offset
With all object sides rotated parallel to the x-y plane, the minimum number of points are found to offset. This minimum ensures that all points can be successfully scanned while minimizing the amount of re-scanning necessary. This minimum was determined based on the the detection diameter of the gamma detector
Step 4: Ensure offset direction is outward
Isometric view, depicting the two front planes offset inward, and two back planes offset outward (correctly)
Top view, depicting the remaining, hidden planes being offset inside the object
Correcting the offset direction
Due to the plane normal equation being indifferent to outward and inward, a check was necessary to ensure the offset direction was outward. A representative point of the entire object, the side, and the offset points were found by averaging the x, y, and z cartesian values. If the distance of the offset points to the center (Doffset-center) was smaller than that of the plane to the center (Dplane-center), the offset points were re-rotated normal to x-y and offset twice the original distance in the opposite direction. This guaranteed the points were outside the object.
Final Product
The final deliverable consisted of a two part python code that would isolate the planes from the original .ply file, output them into a .csv, then process each .csv file to offset each side of the object. The code was designed to work on convex, cuboid object. This served as a proof of concept for LANL that a simple solution is achievable within Python.