Follow this link to skip to the main content

CLARAty Software Development

Custodian: Issa A.D. Nesnas

Document Change Log

Revision Date Description Author
0.1 June 2, 2005 Draft Release I. Nesnas
0.1a June 22, 2005 Revised Draft I. Nesnas
0.1b July 15, 2005 After formal review I. Nesnas
0.1c July 18, 2005 Minor clarifications from line review I. Nesnas
0.1d August 5, 2005 Added software classification I. Nesnas
0.1e August 24, 2005 Changed intro to indicate additional effort WILL be required to change classification. Also clarified what CLARAty refers to I. Nesnas
0.1f February 21, 2006 Updated the note regarding where to find the currrent version of this document I. Nesnas


Table of Contents

  1. Introduction
  2. Who Must Comply With This Procedure
  3. Scope and Transfer to Flight Projects
  4. Actors and Roles
  5. Developing the Plan
  6. Implementing the Plan
  7. Preparing for a Delivery or a Milestone
  8. Developing and Maintaining the Software
  9. Contributing an Algorithm or a Software Package
  10. Controlled Records

1.0  Introduction

The CLARAty robotics software is primarily maintained by the Mobility and Robotic Systems Section with support from the Planning and Execution Systems Section at JPL, the Intelligent Robotics Group at Ames Research Center, and the Robotics Institute at Carnegie Mellon University. The software, which consists of a robotic software infrastructure and robotic algorithms, is used to support the acquisition, development, integration, and validation of technologies developed by the robotics community at JPL and external institutions. It is used for the on-board control of robots, rovers and manipulators. Classification of CLARAty software depends upon its use. Prior to infusion into mission software, the CLARAty software should be regarded as Class D. As outlined in Section 3 of this procedure, additional effort will be required to upgrade it to Class C or B for use in a flight project. This procedure describes how to plan, develop, contribute to, and maintain the CLARAty software.


2.0  Who Must Comply With This Procedure

This procedure applies to individuals developing and maintaining the CLARAty robotics software. Some sections of this procedure apply to individuals on tasks that are receiving software from CLARAty (Sections 5 and 7) or tasks that are delivering software to CLARAty (Section 9). The contributing and receiving tasks may be in-house tasks as well as tasks contracted to other NASA centers, universities, or 3rd party companies that provide software development services.


3.0  Scope and Transfer to Flight Projects

The CLARAty project makes deliveries of integrated software capabilities to validation tasks funded by the project's focused technology program. These deliveries are used for the validation of new technologies primarily during Pre-phase A and Phase A of flight projects. The validation tasks generate reports for each validated technology, which are delivered to interested flight projects. The content of a validation report is defined via discussions with a project. These reports are then delivered to flight projects. Following project acceptance of a validated technology, a characterization of the risks inherent in both the design and in the development process used to produce the CLARAty software will be established. These risks are the point of departure for defining the effort needed to upgrade the software for project use. CLARAty can also deliver robotic algorithms integrated into a consistent robotic framework to flight projects.


4.0  Actors and Roles

Actor

Role

Task Manager

Lead and oversee the CLARAty software development effort

Deputy Task Manager

Assist task manager in planning, implementing, and delivering products

Recipient Task Manager

Lead the validation task that is responsible for assessing algorithm performance or lead any other task that will be using this software

External Institution Lead

Lead the CLARAty software development activity for a subcontract

Cognizant Engineer

Coordinate the software development activities in CLARAty

Domain Lead

Develop a package for a domain: e.g. navigation, estimation, vision.

Activity Lead Develop, integrate, and test a capability for formal validation or demonstration
Software Developer Develop a software component or adapt a component to a robotic platform
Contributor Provide an algorithm or technology and assist in its integration

5.0  Developing the Plan

Actor

Action

Task Manager

  1. Perform task-level planning for the fiscal year.
    1. Convene a meeting with CLARAty leads and developers to discuss direction for the task.
    2. Identify legacy/external algorithms that should be considered for integration. Candidate algorithms will be reviewed and the selection will be made per recommendation from the program office and line management or by a board convened by the program office.
    3. Capture requirements from the sponsor and flight projects regarding their technology needs.
    4. Define the software acquisition strategy.
    5. Develop a technical plan for the fiscal year that meets the long-term objectives of the task, the flight project technology requirements, and the sponsoring program(s) requirements.
    6. After negotiation with the stakeholders, define the year's milestones/deliverables to the sponsor and to the recipient tasks (e.g. flight project validation tasks).
    7. Develop a financial plan and a budget for each subcontractor (external institution) that will be part of the core development team.
Recipient Task Manager(s)
  1. Capture requirements from the flight projects for their robotic technology needs.
    1. Identify candidate technologies of interest to the flight project(s) for formal validation.
    2. Discuss with the program and CLARAty management the availability and readiness of candidate algorithms.
    3. Negotiate the receivable/delivery dates with the program and CLARAty management.
    4. Provide suggestions to improve productivity between the validation tasks and CLARAty.

Task Manager

or

Deputy Task Manager

  1. Define scope of the work for external contracts and document the plan
    1. For each subcontractor, identify technical area(s), develop statement-of-work (SOW), and define milestones to be accomplished:
      1. Work with the external institution leads to identify areas of technical development to be proposed.
      2. For each subcontract that will not be competed, prepare a sole source justification memo following the JPL non-competitive justification guidelines.
      3. Review proposals from each external institution and work with Universities Sub-Contract Section in the JPL Acquisitions Division to issue contracts to the external institutions that will be part of the core development team.
      4. Capture all contract documents in the appropriate folders within the CLARAty group space. This area has restricted access for CLARAty management: /afs/jpl/group/claraty/management
    2. Generate an online Task Development Agreement (TDA) and obtain both line- and program-level approvals. Revise and update as necessary.
External Institution Lead
  1. Prepare the external institution's software development plan for the fiscal year
    1. Develop a proposal from the statement-of-work that was negotiated with the task manager. Include financial information per instructions from the Universities Sub-Contract Section.
    2. Hire and staff external team with the appropriate skills.
    3. Instruct external team members to follow the procedure for getting external accounts.
    4. Setup necessary computing and software infrastructure to support CLARAty development. JPL provides a shared installation of required 3rd party software packages, however, some institutions may choose to maintain their own 3rd party packages. A list of necessary packages is available here.
    5. Act as the main point-of-contact for other Principal Investigators who are using CLARAty at the center.
Leads

and 

Software Developers

  1. Participate in the planning of task activities
    1. Compile, prioritize, and send written feedback to CLARAty management on areas that need modifications or improvements.
    2. Capture similar inputs from interactions with external users.
    3. Participate in the task planning meeting and its subsequent meetings.
Cognizant Engineer
  1. Identify areas that require major redesign and development
    1. Develop requirements for new capabilities and update requirements, as necessary, for existing ones.
    2. Identify modules that require refactoring, design changes, extensions, or improvements.
  2. Develop requirements for upgrading robotic hardware infrastructure
    1. Identify necessary upgrades to the hardware test bed to support bench top testing of the software.
    2. Develop requirements for rover upgrades to support planned rover operations.
    3. Develop upgrade plan for the computing infrastructure needed in both the CLARAty lab and the Mars Yard.


6.0  Implementing the Plan

Actor

Action

Task Manager

or

Deputy Task Manager

  1. Implement the plan for software development activities.
    1. Define and maintain a schedule that implements the above plan. Post schedule and updates on the task website.
    2. Hire and staff the software team with the appropriate skills to implement plan. Staffing preparations usually start two to three months prior to beginning of the new fiscal year.
    3. Ensure compliance with both State Department's International Traffic in Arms Regulations (ITAR) and Commerce Regulations.
    4. Ensure protection of Intellectual Property of both JPL and external institutions.
    5. Provide performance evaluation for team members (can also include external institutions if requested).
Task Manager
  1. Set direction for technical development
    1. Define key architectural elements necessary for software reuse.
    2. Maintain an overall understanding of the reusable robotic architecture and set technical direction for the task.
    3. Maintain an overall knowledge of the design and status of the implementation of all software packages. A package is a group of software products, test procedures, data, and documentation for a given robotic domain such as: locomotion, vision, navigation, estimation, and control.
    4. On a periodic basis, review and update, as necessary, software implementation policies for developers and contributors.
    5. Coordinate activities among developers and resolve any conflicts.
    6. Review and approve all changes to dependency on 3rd party software libraries and tools.
Deputy Task Manager
  1. Interact with related tasks.
    1. On a periodic basis, plan coordination meetings with related tasks: robot simulation task (ROAMS), science simulation task, operator interface task (Maestro), and robot/rover hardware maintenance task.
    2. Establish relationships with validation and end user tasks to better understand their needs and concerns.
    3. Explore future potential collaborations with researchers at JPL, NASA centers, universities, and robotic companies.
Task Manager

or

Deputy Task Manager

  1. Keep the team and management informed
    1. Hold bi-weekly meetings/telecons with the participation of external institutions that are part of the core team to keep the entire team informed on activities within the task.
    2. Organize an annual workshop to bring all developers for a face-to-face meeting and to capture their feedback for future development.

    3. Note: This is contingent on availability of enough resources for an annual meeting.

    4. Prepare progress and monthly management reports to the program and project managers.

Cognizant Engineer

  1. Train current and new employees
    1. Plan and organize training sessions for new developers and users.
    2. Promote proper usage of the software.
    3. Ensure that the development and overall documentation are consistent and meet customer needs.
  2. Oversee the software development activities
    1. Maintain an in-depth knowledge of the design and implementation status of all software packages.
    2. Propose new designs and standards to improve the overall architecture and consistency of the software.
    3. Organize, as necessary, working group meetings for all internal and external stakeholders to discuss design and implementation changes.
    4. Interact with activity leads and with developers to ensure minimal overlap in functionality that is being developed. Ensure optimal leveraging of infrastructure and computational resources.
    5. Oversee the nightly build system and delegate responsibilities to team members for bug fixes. The nightly build scripts are available at: /afs/jpl/group/claraty/pkgs/scripts/autobuild/
    6. Oversee the development of a regression test suite.
    7. Participate in all design reviews.
    8. Moderate emails to address users/developers questions and concerns.
    9. Ensure proper implementation of conventions and coding standards.
    10. Regularly report technical progress to task manager.

7.0  Preparing for a Delivery or a Milestone

Actor

Action

Activity Lead
  1. Develop and prepare a delivery to a recipient task (e.g. flight validation task, external user task)
    1. Negotiate with the recipient task lead the requirements for the components and default configuration that will be part of the delivery. These requirements should supplement the high-level task plan. When conflicts with the task plan arise, these should be scoped and reviewed for approval by the task manager.
    2. Identify any hardware requirements that are necessary for completing an assigned delivery or milestone.
      1. If additional hardware is required, provide information in writing with sufficient detail for the recommended hardware component.
      2. Get concurrence from task manager for hardware changes or upgrades.
      3. Submit request to rover maintenance task and obtain an estimate of the completion date.
    3. Develop a plan for the integration of software technology.
    4. Oversee, implement, and integrate the necessary software for the delivery/milestone.
    5. Follow the procedures for writing the software.
    6. Provide sample demo software that will illustrate how to exercise the delivered capability and log telemetry data.

    7. Note: The recipient validation tasks will customize the demo software to suit their validation needs. The CLARAty task will provide technical support in the form of answering questions and assisting in debugging if appropriate.

    8. Prepare delivery documentation and include procedures to allow users to easily understand and exercise the delivery.
    9. Maintain and update documentation for the delivery.
    10. Inform task manager of changes that may impact the delivery schedule.
    11. Prepare and send delivery information to the task manager.
Task Manager

or

Deputy Task Manager

  1. Review delivery for readiness and release to recipient task
    1. Review / assess readiness of delivery for external release and validation. This review may include an internal demonstration, a code walk-through, a discussion of open issues and bugs, and a review of the documentation.
    2. Assign a team member to carry out a shakedown test of the delivery following instructions provided by the delivery page.

    3. Note: The implementation of this step may be subject to availability of sufficient resources and staff. The task manager, at his/her discretion, may choose to skip this step depending on constraints on the task at the time.

    4. Approve and notify recipient task, program and line management, and other stakeholders of the official release of the delivery software and documentation.
Recipient Task Manager
  1. Review content, test, and accept/reject delivery
    1. Review content and documentation for the delivered product.
    2. Carry-out a shakedown test within a timeframe agreed upon by both task managers.
    3. Provide feedback to the task manager on discrepancies between the agreed upon plan and the delivered product. If there are discrepancies that cannot be resolved in an agreed upon timeframe, the recipient task manager would reject the delivery. Then, it will be necessary to renegotiate the delivery with the program office. Else, the recipient task manager would accept the delivery.
    4. Compile and enter requests for features/bug fixes into the CLARAty bug tracking system JIRA. The task manager will prioritize and assign the work to the appropriate team members.

    5. Note:  Items related to the demonstration, testing, validation and logging of data falls within the scope of the recipient tasks. The CLARAty task provides appropriate interfaces for internal data that is available on the robot platforms. The scenario creation, test code development, sequencing of operations, and logging of data falls within the responsibility of the recipient tasks.

Activity Lead

  1. Support a delivery during validation or usage
    1. Answer questions regarding deployment and proper usage.
    2. Provide necessary bug fixes.
    3. Update deliveries with bug fixes and make new releases.
    4. Update documentation.
    5. Inform recipient tasks of the changes.
    6. Provide guidance and support to the recipient tasks for the duration of the validation activity.
    Task Manager

    or

    Deputy Task Manager

    1. Capture feedback and recommendations from the manager of the recipient task.
      1. Review inputs, requests for features, or any other feedback from recipient task manager and his/her staff.
      2. Prioritize, plan and update schedule, as resources permit, to support new features and additions to support recipient tasks
      3. Assign work to appropriate CLARAty team members.


    8.0  Developing and Maintaining the Software

    Actor

    Action

    Domain Lead
    1. Promote software reuse
      1. Review and propose updates, as necessary, to CLARAty conventions and coding standards.
      2. Provide feedback to CLARAty management to improve processes that will result in higher quality software products.
      3. Participate in design and code reviews of other domain areas
      4. Help new members learn the software.
      5. Keep up-to-date with the overall status of the project.
    2. Oversee the development of a package
      1. Propose new designs or modifications to existing designs for team review.
      2. Solicit feedback from developers and users.
      3. Oversee the development and implementation of new designs and test infrastructure.
      4. Oversee the testing of the new capability.
      5. Update both in-line documentation and package documentation.
    Software Developer
    1. Write the software
      1. Review and follow the software development policy which provides the rules for version control, merging, and delivery of products.
      2. Review and follow the CLARAty conventions and coding standards in the design and implementation of the software.
      3. Follow the procedures for checking out, modifying and committing changes to the software.
      4. Ensure no 3rd party dependencies. Software that requires 3rd party tools will need approval by the task manager.
      5. Promote reuse by leveraging existing modules with similar capabilities.
        1. Propose extensions to existing modules as opposed to creating new modules of similar capability.
      6. Test the new functionality on the appropriate robot platform(s).
      7. Provide code level documentation using Doxygen style as described in the CLARAty coding standards.
      8. Provide procedures to allow users to easily understand and exercise the new software modules.
    2. Test and check-in the software
      1. Review and follow the policy for checking in changes.
      2. Integrate functionality into appropriate modules in a local sandbox.
      3. Provide sample test data and sample output generated from the test data.
      4. Build and test the module(s) for all appropriate actively supported targets.
      5. Commit the changes to the repository and inform development of the changes.
    3. Submit requests for new features and bug fixes
      1. Enter requests for features or bug fixes into the bug tracking system JIRA. The task manager will prioritize and assign the work to appropriate team members.
    Task Manager

    or

    Deputy Task Manager

    or

    Cognizant Engineer

    1. Solicit team feedback and organize design review as appropriate
      1. Solicit lead and team feedback on all design changes.
      2. Arrange for a review, if necessary, for major design changes or changes in support for 3rd party software packages.
      3. Compile and record feedback and make available to the team.
      4. Review and approve package changes. If necessary, provide written feedback for modifications.
      5. Provide staff to support a domain or activity lead for a delivery or milestone.

    9.0  Contributing an Algorithm or a Software Package

    Actor

    Action

    Contributor
    1. Integrate a robotic software or algorithm into CLARAty. The algorithm can come from an internal activity, an external institution, or from a legacy implementation.
      1. Coordinate the addition of all algorithms with the task manager. The addition of major new capabilities need to be coordinated with and approved by the program office. When approved:
      2. Compile and send a list of requirements for the integration and demonstration of a technology onto a robot platform to the task manager.
      3. Work with the cognizant engineer or a CLARAty lead towards a plan to integrate the technology into CLARAty.
      4. Follow the procedures for writing the software.
      5. Work with a CLARAty developer to make changes or extensions to existing CLARAty modules.
    Task Manager
    1. Approve integration plan
      1. Review integration plan for the component technology.
      2. Provide feedback to technologist for modifications to improve the integration of a given technology.
      3. Approve and create appropriate modules to support technology infusion.
      4. Assign CLARAty developer to support the activity.
    Contributor
    1. Check-in and test software
      1. Follow the procedures for checking in the software.
    Task Manager

    1. Promote the new technology
      1. Review content of documentation and delivery for completeness.
      2. Assign an integration level to the delivery.
      3. Promote its validation for future missions.
      4. Promote higher-level integration, if appropriate. This is based on the nature of the technology, its level of reuse, and the availability of in-house staff to support it.

    10.0  Controlled Records

    All deliverables, milestones, feature requests, and on-line code documentation are permanently archived at the CLARAty website and the JIRA bug tracking archive.

    Paper copies of this document may not be current and should not be relied on for official purposes.
    The current version can be linked at: http://keuka.jpl.nasa.gov/main/software/how_to/policy/procedure.html