Skip to main content

Integration Event - 23-13


Summary

You're a Test Engineer at SkySurge (a division of SkyShield) working in a software integration and test role. SkySurge's mission is to deliver innovation with speed and accuracy.

Your team's mission to field a new version of SkyShield's popular reconnaissance drone. This drone is focused on "search" and "rescue" missions, and is a lighter version of its predecessor which is focused on "scan" and "hover" style missions. To help accelerate delivery, SkyShield has leveraged the same basic design, but, based on different camera capabilities, has had to modify the drone's software.

Your job is to verify that the software performs as expected, based on the stated design.

Your team is evaluating the effectiveness of an integration tool like Tangram Pro to do exactly that.

Prerequisites

Prerequisites
  • Log in here: https://qa.tangramflex.io/
    • If you don't have an account, please try to "Log in with Okta"
    • If that fails, let us know in the Slack #integration-events channel

Scenario

Review the System Designed

The system to be fielded leverages a previous design containing two components: a Ground Control station and a Drone which communicate via OpenUxAS LMCP messages:

This previous design supports two missions, called "Scan" and "Rescue":

  1. Scan
    1. The Ground Control sends an empty GimbalState, to learn the Drone's configuration.
    2. The Drone sends a GimbalConfiguration to report.
    3. The Ground Control sends a GimbalAngleAction, instructing where the Drone should it should aim its instrument
    4. The Drone sends a GimbalConfiguration to report.
  2. Rescue
    1. The Ground Control sends a new Mission
    2. The Drone reports its location in 3D space via an AirVehicleState.
    3. The Ground Control directs it to a new location, via a GoToWaypoint command
    4. The Drone flies to that location and again reports an AirVehicleState.

These two missions are well understood in their design, and well tested in field operations.

Review the Software Delivered

Other engineers at SkyShield have already implemented the new code to power Search and Rescue drone. They have provided you with a Docker container containing that code.

The Ground Control system software is still being implemented, however, the software for the drone needs verified immediately to begin flight test and certification. This means you can not use the Ground Control system to test the drone software.

Fortunately, the Tangram Pro Verifier Toolkit can be used to test that a piece of software performs and communicates as intended, independent of the larger system.

Likewise, Tangram Pro already supports the LMCP message set, so you're ready to begin testing.

Design and Verify

Design the System

Let's get started by creating a Team.

  1. Create a team and add members.
  2. Authorize a Container Registry for your team

To verify the drone code, you'll need Tangram Pro to integrate with an external Container Registry

Your team members at SkyShield are using Gitlab Enterprise, so you will need to create credentials in (Tangram Flex's) Gitlab via a Personal Access Token.

  • Host URL: registry-gitlab.tangramflex.tech
  • Username: (your Gitlab username)
  • Token: (created at Gitlab)

After it's added, click the Check Connection button and enter this path int-events/ie23-13/search-rescue to verify the connection is working

  1. Create a project and set the owner to the team you just made.

  2. Design the system

    Create two components: GroundControl and SearchRescue and add the package OpenUxAS::LMCP::v3 to each.

    Add a Transport: ZeroMQ.

    Create a connection from GroundControl to SearchRescue, and add the following LMCP messages:

    • CameraAction *
    • CameraState *
    • GimbalAngleAction
    • GimbalState
    • GoToWaypointAction
    • MissionCommand
    • Waypoint

    Create a connection from SearchRescue to GroundControl, and add the following LMCP messages:

    • AirVehicleState
    • CameraConfiguration *
    • GimbalConfiguration

    note

    * - These messages were not specified in the system design, but are included in this scenario for the sake of time.

    When you are done, your design should look similar to this:

Verify the Mission

Now that your system design is in Tangram Pro, you can now specify your components behaviors.

  1. Click on the "Verify" tab

    Select the SearchRescue component

  2. Specify the "Rescue" mission in a Sequence.

    Click the "Add Sequence" button. Enter a Sequence Name of "Rescue".

    Click the "Add Initial Sequence Message", select the MissionCommand message, and click "Save Message".

    Open the "dot" menu to the left of the Input label of the MissionCommand message and select "Add Message After", then select AirVehicleState.

    Repeat this process for GoToWaypointAction.

    Finally, repeat one more time for another AirVehicleState.

    Compare the Sequence in Tangram Pro to the system design at the beginning of this document.

  3. Begin a Verifier test build

    info

    Verifier leverages your components messages configuration to generate the code needed for testing.

    This takes some time, so you should begin the test build right away.

    Click the "New Test Build Required" button to prepare for your first Verifier run. This should take about 15 minutes.

  4. Verify the Code.

    Once the test build is complete, click the "Setup New Test" button.

    Your team has delivered the Drone code to a Container Registry, which you configured before.

    Select the "Use Container Registry" option and chose the Registry in the list. Enter an image path of int-events/ie23-13/search-rescue and click the "Check" button to ensure that image is available.

    Change "Max Path Retries" to 5 and click "Begin Verifier Test".

  5. Return to the component sequences tab and create a new sequence called "Scan".

    Review the messages needed for the "Scan" mission from the Requirements at the top of the page.

    Implement that Sequence following similar steps to Section 2 above, then attempt to Verify.

    Note, use the "Component Logs" or "Debug Logs" to diagnose issues.

Regroup with Your Team

After a few unsuccessful attempts to verify the "Scan" mission, you conference with systems engineers and software developers to diagnose.

Discussion reveals that the software implemented skewed from design. However, this in turn revealed a need to refine the design.

The newer drone has a fixed-mount camera instead of a gimbal-based camera.

Your team updates the design accordingly:

  1. Scan
    1. The Ground Control sends an empty CameraState, to learn the Drone's configuration.
    2. The Drone sends a CameraConfiguration to report.
    3. The Ground Control sends a CameraAction, instructing the Drone to begin filming.
    4. The Drone sends a CameraConfiguration to report.

Verify the New Design

Edit the "Scan" Sequence in the Verify tab to the new Design.

note

You can either delete the entire Sequence or click on each node and select the "Edit Message" option.

Run another Verify test and ensure that the component successfully fulfills both Missions.

Key Take-aways

info

For simplicity, this Integration Event did not leverage Message Constraints or Templates.

These features allow users to specify ranges of valid values at the message property level to more closely verify component behavior. These features will be apart of the Tangram Pro v2.1.0 release.

success

It is possible to verify component software communication behaviors with Tangram Pro Verifier.


Talking Points:

  • New "Verify" tab in the Workspace
  • Verifier leverages the same system design that is at the core of a Project
    • whether this design is created manually, or imported
  • But Verifier works on software from external sources
    • you don't need any other Toolkits to verify software implementation
  • Verifier leverages the same Flex information about the communication protocol
    • so, Design > Develop > Verify is a real use-case
  • Verifier focuses on message communication flows, but also shows logs to help diagnose problems

Feedback topics:

  • What did Tangram Pro do that you found helpful?
  • What parts were difficult?
  • What opportunities exist for improvement?