Work plan

The project will be composed of the following stages:

Stage 1 - Implementation using FRP

Since the FRP implementation is the primary focus of the project, and also the primary concern in terms of unknowns and risks, it will be the first stage.

  1. Test program - Implementation of a simple robotic program using Yampa FRP, with the goal of assuring that Yampa is an appropriate framework for the project (no serious bugs or compilation problems, etc.).
  2. Detailed design of the robot’s controlling program, using FRP abstractions. This design will be detailed enough to specify the robot’s entire operation, including the exact algorithms, rules for safety measures and other details not covered in the top-level design.
  3. Detailed test specification for the robot’s design. The idea of writing the test spec at this stage is to help evoke ideas about possible flaws and problems in the design.
  4. I/O modules - Implementation of the input/output modules for communication between the controlling program and the RMP (the robot platform), and for receiving video input from the USB video camera. The I/O modules must interface between Haskell (Yampa’s host language) and the USB devices.
  5. Implementation of the design using Yampa. This may become the ‘heaviest’ part of the project, due to uncertainties in Yampa’s stability and performance, which may require multiple iterations of tweaking the implementation.
  6. Testing the robot, according to the test spec.

Stage 2 - Implementation using another reactive language

At this stage we will select one of the other reactive programming languages and environments (Simulink, Microsoft Robotics Studio, Lucid Synchrone, or Erlang). The selection will be based on our experience implementing the robot in FRP.

Exactly as above, this stage will include design, implementation and testing.

Stage 3 - Comparison

At this stage we will compare the FRP design and implementation with the other one. The following points will be evaluated:

  • Design tractability, clearness, and ease of analysis:
    • Use of generalized abstractions vs. specifically designed mechanisms.
    • Ability to reason about the design’s correctness and limitations.
    • Simplicity, in the sense of making it easy to explain the design to an uninvolved person with basic engineering skills.
  • Implementation complexity:
    • Code size (lines of code).
    • Modularity and generality - percentage of the code that is reusable in a different, similar program.
    • Simplicity (in the same sense as for the design, above).
  • Correctness: percentage of tests passed.
  • Performance is not the focus of this project, but will be measured and noted, if time allows:
    • Latency in reaction to external stimuli.
    • Memory and CPU usage.

Stage 4 - Conclusion

At this stage we shall finish writing the required reports, and prepare the presentation and poster for the project.

Extensions: if time allows, we will improve the robot or add features not included in the original design.

Timetable

The planned timetable is as follows:

WBS Name Start Finish Work
1 Preliminary report corrections Nov 15 Dec 2 13d
2 Preliminary Submission Date Nov 22 Nov 22  
3 Preliminary-Adviser Correction Date Nov 29 Nov 29  
4 Preliminary-Students Correction Date Dec 6 Dec 6  
5 Preliminary Evaluation Date Nov 15 Nov 15  
6 FRP Dec 3 Feb 18 55d
6.1 Test program Dec 3 Dec 9 5d
6.2 Detailed Design Dec 10 Dec 23 10d
6.3 Test Specification Dec 24 Dec 30 5d
6.4 I/O Modules Dec 31 Jan 6 5d
6.5 Implementation Jan 10 Feb 4 20d
6.6 Testing Feb 7 Feb 18 10d
7 Exams Jan 17 Feb 4 15d
8 Progress Submission Date Mar 14 Mar 14  
9 Progress-Adviser Correction Date Mar 21 Mar 21  
10 Progress-Students Correction Date Apr 6 Apr 6  
11 Progress Evaluation Date Apr 11 Apr 11  
12 Alternative Implementation Feb 21 Apr 22 45d
12.1 Test program Feb 21 Feb 25 5d
12.2 Detailed Design Feb 28 Mar 4 5d
12.3 I/O Modules Mar 7 Mar 18 10d
12.4 Implementation Mar 21 Apr 8 15d
12.5 Testing Apr 11 Apr 22 10d
13 Pesach Mar 29 Apr 7 8d
14 Comparison Apr 25 Apr 29 5d
15 Poster Date May 2 May 1  
16 Presentation Date May 2 May 1  
17 Corrections and bugfixes May 2 Jun 10 30d
18 Final Submission Date Aug 1 Aug 1  
19 Final-Adviser Correction Date Aug 8 Aug 8  
20 Final-Students Correction Date Aug 15 Aug 15  
21 Final Evaluate Date Aug 22 Aug 22