Robotic Obstacle Recognizer – Skills Demonstration Project

Introduction:

This is a quick description of a Robotic Obstacle Recognizer. For more detail, follow the appropriate links.

Problem statement:

A problem statement is given by NASA to write an application that will help a robot navigate around a messy lab. Here’s a 360 degree view of the environment. Here’s the detailed problem statement.

Assumptions and Requirements:

To attack this, I started off, writing some assumptions and requirements.

Design:

Next, I produced an initial draft of the design. It was basically a class definition with some documented assumptions.

Prototyping and Implementation:

I started writing some preliminary code, to show my C++ chops. My code included use of the vector class in the Standard Template Library and development of a singleton class I call, ObstacleDetector.

Agile Technique:

I wrote up pseudo code to describe the essential steps each of the member functions would take in doing their job, and then I started to code that up. As I learned more during the implementation, I modified the design. This really demonstrated use of the Iterative/Incremental idea in first the Unified Process by Booch, Jacobson and TBD. More recently, that idea has been adopted by those using Agile development. With each iteration, I learned more, developed more working functionality and resolved more problems.

State Behavior:

However, the complexity of all the different scenarios was just something that I kept cycling on. So, I put together what I call the Obstacle Identification State Machine. It helped me to adapt behavior based upon the state of the detector and what had led up to the current state.

Verification:

Now, I had a much more structured way to think about operation of this detector. It became a matter of defining what happened with each of the transitions as the machine flows from state to state. At this point, I iterated on the code and the state machine. That became a bit intractable until I added a spreadsheet with test cases. With each test case, I documented what happened on each state transition. And then, I used this as a guide for actually performing the tests cases and a recording tool for capturing test results. Once I had done this for my own data, then, I knew I was ready to do this for NASA Data.

Validation:

“Validation” is the process of verifying that the requirements were written properly and the system performs as intended. In the case of this demonstration project, obstacle recognition data (top/amber) tracked NASA supplied features data points (bottom/blue) with no adjustment to the code or the parameters.

Project Deliverables:

The code, documents and drawings used to realize the solution and verify behavior are accessible on
myGitHub, Robotic Obstacle Recognizer Project.

Contact Information:

http://svis.com

Scott Vigil  April 4th, 2020