Software Engineering in Robotics Introductions
Henrik I. Christensen hic@cc.gatech.edu
OUTLINE
Welcome Objectives of the course Structure of the course Material for the course Wrap-Up
WELCOME
Objectives of the course
Introduction to basic software engineering
Coverage of issues from design to deployment
Highlight some of the special issues for robotics Discuss a broad set of methods as used in robotics Design of a small system for robot navigation Practical experience using software engineering with Microsoft Robotics Developer Studio (RDS)
Software Engineering
Programming vs Software Engineering Software Engineering
Systematic approach to analysis, development, operations and maintenance Most systems are highly complex Expectations are often poorly defined Quality is often a major challenge Essential to consider all aspects up-front
Motivation
Software Engineering - Phases
Requirements analysis Systems Modeling Functional Modeling Implementation Evaluation Deployment Maintenance Documentation
Life Cycle Models
Waterfall Model Prototyping Model Iterative Enhancement Model Spiral Life Cycle Model Agile Software Development Object Oriented Model
Life Cycle Models - Aspects
Determination of system requirements Design of the system / architecture Development of the software Testing and Evaluation Implementation and Maintenance Error Distribution / Version Management
Waterfall Model
Pros
Cons
Easy to explain Clearly staged Easy to plan and schedule Clear Deliverables / milestones
Assumes a linear project progression All requirements up-front Iterations are only implicit
Prototyping life cycle model
Pros
Cons
Direct user involvement Good fit to user expectations Errors detected early Solution as user buy in
Often a patched design Management of complexity is non-trivial
Iterative enhancement cycle model
Pro
Cons
User buy-in with clear deliverables Clearly defined phases / team efficiency
Complex management Code reuse not obvious
Spiral cycle model
Pro
Cons
Clear division of activities Explicit deliverables
Has potential to be costly Could be slow to implement
Agile Development Model
Phases
Philosophy
Model Implementation incl unit testing Perform objective testing Transition Deployment Version Management Context
Staff is competent Simplicity Agility Focus on high-value Tool independence
Object Oriented Model
System Analysis System Design Object Design Implementation Evaluation and Benchmarking A little more details in lecture 3 (stay tuned)
Considerations/Comparison
Agility Driven
Plan Driven
Formal Design
Low criticality Experienced sw team Dynamic requirements Small team Highly dynamic environment
High criticality Junior sw team Mostly stable requirements Large team Structured process
Extremely critical Experienced sw team Limited features Features can be modeled Extreme quality
What makes robotics special
Physical changes to the world The systems are typically multi-objective
Requires careful consideration of architecture/data flow
Two different interaction models Example systems vs components (robots)
Interaction with physical world and users
Component based design with different requirements
Creates disparate requirements in a systems engineering Emergent behavior Multi-threaded execution / complexity
Structure of the course
Internet to Robotics Motivation/Background Software Engineering Tools Introduction to Robotics Developer Studio Use of simulation for system development Process / System Models Inter Process Communications Data Flow Models Common Control Structures Hardware Integration Issues Reference Architectures Packaging and Deployment of Systems Integration of legacy code and use of libraries Systems Evaluation and Benchmarking Outlook and Summary
Exercises
Design of a robot navigation system Architecture of the system? Simulation of the system using off-the-shelf components Service Design and Implementation
Landmark Detection Exploration & Navigation Hardware Interface & Control
Testing and Evaluation Deployment & Documentation
Material for the course
Computer running Windows XP / 7 Microsoft Visual Studio 2008/2010 Express Microsoft Robotics Developer Studio R3 Surveyor SRV-1 Robot (or similar) Slides for all lectures available at CodePlex site Example C# code available at CodePlex site
Summary
Introduction to the course A need to actively design a system Exploration of software engineering for robotics
Requirements to Implementation and Evaluation
Coverage of most aspects Discussion of methods Objective to provide a sound basis for design A basis for efficient use design of systems Exploration of use of RDS for robot systems
Acknowledgement
This series of lectures has been developed with the generous support from the Microsoft Corporation under the project Software Engineering in Robotics Contract # 113873. The support is gratefully acknowledged.