Introduction

The composer was created to allow users to create their own behavior(s) in an easy-to-use interface. These behaviors or compositions can be created by linking blocks containing actions for the robot together.

The composer has 2 modes to create compositions :

The simple composer-page has been designed to allow users to customize the behavior of the robot to a certain extent. For example, if just playing a video doesn’t meet the requirements for a presentation, a sequence of videos and moving the robot from location to location might.

The simple composer allows users to link actions to each other (e.g. move to location, play a video, move to another location, play music, …) in a linear fashion, like how a music-composition is composed one note at a time. And just like the conductor in an orchestra, some instruments are needed to carry out this composition. The elements that build up these compositions are called blocks. To make it (somewhat) intuitive for the users, some pre-programmed blocks can be placed into a timeline, so the actions can be visually shown instead of configuring some variables hidden away in hundreds of lines of computer-code.

The advanced composer has been created to allow logic, branching and process flow within compositions. Using the advanced composer, the user can make the robot perform a sequence of actions based on evaluation of user input, random or temporal variables. This takes compositions to a whole new level, effectively bringing a graphical programming interface that allows for complex scenario’s and experimentation.

Used terminology

The following terminology will be used in this manual:

Term Explanation

Composer

Software designed to allow users to customize the responses from the robot.

Composition

A dataset containing a series of actions the robot will take.

Workspace

The container for the sequence of actions that the robot will perform.

Connector

The extension to the block used to link blocks together (i.e. input- and output-connectors to specify the sequence of actions).

Block or building block

A piece of code making the robot take a certain action, represented by a block in the menu.

Simple block

Composer-blocks that are also used in the simple composer.

Advanced block

Composer-blocks that are only available in the advanced composer.

Local storage

The storage on the device containing ZBOS Control.

Robot storage

The storage on the Android-device of the robot.

Blocking

A setting for some multimedia-blocks, halting the continuation of the composition until the media-block has finished playing.

Modal or Pop-up modal

A popup containing the settings specific for the component (e.g. Settings for a block, settings for the compostion, …​).

POI

Point-of-Interest. A stored location or reference-point on a map.

Tablet

The device containing ZBOS Control. For easier reading, the term tablet will be used, whereas this could also apply to a smartphone, emulated tablet, …​

Most blocks can be customized to contain different content or actions. E.g. Multimedia can play music or video-files.

Simple composer

This page is best viewed if the tablet is oriented as a landscape.

The simple composer can be used to:

Customizing the simple composer

Other than the options set in the composer-page, the theming- and color-settings of ZBOS Control are also applied.
PageOverview

There are 4 major sections in this page, specifically:

  1. Blocks (with programmed actions)

  2. Timeline (containing the blocks)

  3. Tools (for managing compositions)

  4. Execution-buttons (for starting or stopping compositions)

For a full list of all options available for a specific type of block in the composer, see the chapter List of composition-blocks.

Changing the layout of the composer-page

The layout of the composer can be changed in different ways, specifically:

  • Changing the ZBOS Control style-setting

  • Changing the layout + color-scheme of the blocks

  • Changing the layout of the tools-page

Changing the Style-setting

See the chapter Style in the settings on how to change the current styling of ZBOS Control.

Changing the layout and colors of the blocks

Tap the icon ionicon gear in the block-toolbar to open the style-settings for the block toolbar.

ChangeBlockStyle

In the following popup, the options for the blocks can be set (and previewed).

ChangeBlockModal
Available Display-options

The blocks can be shown in various formats, such as 2 icons side-by-side or a single-column list with an explanation. The list below shows the available options:

BlockStyleSbs

Select this option to display the blocks in 2 columns, side by side.

BlockStyleSingle

Select this option to list the blocks in a single column.

BlockStyleExplanation

Select this option to list the blocks in a single column with a text-explanation next to them.

Available Color-options

Other than the display, the colors of the blocks can also be edited. The list below shows the available options:

BlockColorDefault

Select this option to use the default colors for the blocks.

BlockColorScheme

Select this option to use the colors set by the current style for all blocks.

BlockColorCustom

Select this option to customize the colors for every block separately.

Customizing the color for a block
The Custom color option must be selected in the style settings for the blocks.

Tap and hold a block to open a modal asking if the block should be styled in the theme-color or the default-color.

The new setting will be applied immediately.
CustomColorModal

Tap outside the modal or on the icon md close to close the modal.

Changing the layout of the tools

So far, only the blocks have been altered. The layout for the tools can also be changed.

Tap the icon ionicon gear in the tools-toolbar to open the style-settings for the tools-toolbar.

ChangeToolStyle

Tap one of the non-selected options to change the layout of the tools in the toolbar.

List of display-options

The tools can be shown in various formats, such as 2 icons side-by-side or a single-column list with an explanation. The list below shows the available options:

ToolStyleSbs

Select this option to display the tools in 2 columns, side by side.

ToolStyleSingle

Select this option to list the tools in a single column.

ToolStyleExplanation

Select this option to list the tools in a single column with a text-explanation next to them.

Title-bar

The title-bar will show the name of the composition once it has been saved/loaded.

There is also a link to the composition settings. See the chapter Editing the settings of the composition for more information.

Creating a new composition

When opening the page for the first time, a blank composition will already be shown.

To create a new composition if a composition has already been loaded, tap the tool glyphicons eraser Clear workspace to clear the timeline.

ClearTimeline
The button Clear workspace will only be shown if at least one block has been placed in the timeline.

Editing a composition

To edit a composition, simply add, edit or remove blocks from the timeline.

After editing the timeline, it is recommended to play the composition to check if the settings are applied correctly.

Adding blocks to the timeline

When adding a block to the timeline, the settings for the block will be opened immediately.

To add a block to the timeline, the following options can be used:

  1. Tapping a block in the toolbar (adds a block at the end of the timeline)

TapBlock
  1. Dragging a block from the toolbar (inserts the block in the chosen location)

DragBlock

Either of the options above will show the options to customize the blocks. See Editing the settings of a block for more information.

Copy-pasting blocks in the timeline

Configured blocks can be copied to a virtual clipboard and pasted at the end of the timeline.

Copying blocks
The copy-tool will only be enabled if at least one block has been selected in the timeline.

Tap the option md copy to copy the selected blocks to memory.

CopySelection

In the sample shown, the multimedia and wait-block have been selected and copied to memory.

Pasting blocks
This tool will only be enabled if a selection has been copied to memory.

Tap the icon md clipboard to paste the selected blocks from memory in the timeline.

PasteSelection
The blocks will be added at the end of the timeline.

Editing the settings of a block

Double-tap a block in the timeline to open the settings for the block (e.g. Speech-block).

DoubleTapBlock
BlockSettings

Enter the new settings for the block and tap the icon md check to apply the changes to the block.

For more information on available settings for specific types of blocks, see the chapter List of composition-blocks.

Removing blocks from the timeline

There are multiple ways of deleting blocks from the timeline:

  • Dragging a block outside the timeline

RemoveBlockDrag
  • Using the tool md trash Delete selection

Select the block(s) to remove by tapping them to enable the tool. The selected block will be greyed out.

SelectedBlocks

Tap the (now enabled) tool md trash Delete selection to remove the blocks from the timeline.

DeleteSelection
  • Removing all blocks from the timeline

This option will create a new composition and will not save the current composition. It is highly recommended to save the current composition before using this option.

Tap the tool glyphicons eraser Clear workspace to clear the timeline.

ClearTimeline

Changing the order of the blocks

The blocks in the timeline will be played in the following sequence:

TimelineFlow

To change the order in which the blocks (should) play, simply drag them from their current position to the new position in the timeline.

TimelineChangePosition

Editing the settings of the composition

Other than containing the blocks for the composition, the timeline is also used to determine how many times the composition should be played. Tap the option md settings to display the modal with the settings for the composition. (By default, the composition will only be played once)

PlayOnce
This setting will only be stored if the composition is saved (or uploaded) again.

The modal allows for the composition to be played for a specific number of times or to repeat indefinitely.

PlayInfinite
If the option Infinite has been selected, the number of times will be greyed out.

List of composition-blocks

General usage

The options for (most) blocks look the same, specifically:

GenericModal

This modal contains the following parts:

  • Title (containing the name of the block or setting)

  • md check icon (to apply the changes)

  • Main screen (with the available options or settings)

  • Sub-screen (for additional options)

  • Cancel-button (to cancel the changes)

  • Accept-button (to apply the changes)

Simple Composer

The list below displays the icons available in the simple composer.

SpeechBlock Speech block

Function: Make the robot say something

Available settings:

SpeechSettings

  1. Text to be spoken

    • Tap to enter the text the robot will speak

  2. Animations on or off (if applicable)

  3. Use speech to input text (requires internet-connection)

  4. Use speech to input text (requires internet-connection)

  5. Volume to speak at

  6. Test the entered text on the robot

Changing the volume in a speech-block will change the volume on the robot.
WaitBlock Wait block

Function: Pause the composition for the specified time.

Available settings:

WaitSettings

  1. Unit of time to wait

    • Tap to select the unit from the dropdown-list.

  2. Amount of time to wait

    • Tap to enter the amount of the unit of time to wait.

HeadBlock Head-motion block

Function: Move the head to a new position

This option is only available if the head of the connected robot can move.

Available settings:

HeadSettings

  1. Control (using a virtual model of the head)

    • Move the control to a new position to tilt the head.

  2. Test-button (tilts the head of the robot briefly to the selected location)

    • Tap the button to test the currently set position.

MediaBlock Multimedia block

Function: Play a media file on the robot

Available settings:

MediaSettings
  1. List of media stored on the robot

    • Tap to select the media file to be played from the list.

  2. Blocking (Stops the composition from continuing until the media-file (audio or video ) has ended)

    • Tap to enable/disable the option.

  3. Loop (Loops the audio-file until another media-file (audio or video) starts playing or a stop media-block starts playing in the composition)

    • Tap to enable/disable this option.

  4. Manage-button (Opens the multimedia-page)

    • Tap to open the multimedia-page to directly upload missing media-files.

A preview of the selected media-file will be shown if ZBOS control is connected to the robot. (not applicable to cloud control)
Sensorblock Wait for sensor block

Function: Halts the composition until a sensor is touched

Available settings:

SensorSettings
  1. Selected sensor (tap to hide or show the list of available sensors)

    • Tap to open or close the list.

  2. Search-field (to search for a sensor)

    • Tap to enter a search-term.

  3. List of available sensors

    • Tap to select a sensor.

The list of available sensors will only be shown if ZBOS Control is connected to a robot.
POIBlock Go to POI block

Function: Move the robot to a specified POI

Available settings:

POISettings
  1. Maps stored on the robot

    • Tap the map to show the listed/registered POI’s.

  2. POI defined for each map

    • Tap a POI to select the location for the robot to move to.

If the selected POI isn’t present on the currently loaded map, this block will be skipped in the composition.
PublishBlock Publish to MQTT block

Function: Send a message on the specified MQTT topic

Available settings:

PublishSettings
  1. Topic

    • Enter a valid topic to publish the message on.

  2. Payload

    • Enter the content of the message.

SubscribeBlock Subscribe to MQTT block

Function: Listens for activity on the MQTT topic

Available settings:

SubscribeSettings
  1. Topic

    • Enter a valid topic the robot should listen to.

WebpageBlock Open web page block

Function: Display a web page on the tablet of the robot

Available settings:

WebpageSettings
  1. URL

    • Enter the url of the website to be displayed.

The duration of the time the website will be displayed must be set in the next block (e.g. Wait for sensor-input).
FaceRecognitionBlock Wait for face block
This block requires the app ZoraBots Face Recognition to be installed on the robot with at least one person added to the list.

Function: Pause the composition until a human face is detected from the primary camera

Available settings:

FaceRecognitionSettings
  1. Only allow a known face

    • Check this option to only continue the composition if a face registered in the Face Recognition app is detected.

  2. Amount of faces

    • Set the amount of faces to be detected (known or unknown) before the composition will continue.

The amount of faces will only be used (and shown) if the option Only allow a known face is unchecked.
MotionDetectionBlock Motion detection block

Function: Take security-images if motion has been detected

Available settings:

MotionDetectionSettings
  1. Time unit

    • Tap the option to set the units of time the block waits for before continuing with the composition.

  2. Time duration

    • Enter the amount of time the unit waits for.

  3. Upload

    • Check this option to store the security-image in the Cloud-system and display them in the Security-page.

  4. Stop on detection

    • Check this option to stop taking pictures if something has been detected.

Examples of settings:

  • Security-camera

MotionDetectionSecurity
  • Doorman

MotionDetectionDoorman
StartAppBlock Start app block

Function: Start an app installed on the robot

Available settings:

StartAppSettings
  1. Selection-list

    • This title-bar will display the currently selected app.

  2. Search-bar

    • Tap to enter a search-term and search the list of available apps.

  3. List of available apps

    • Tap to select an app from the list of apps installed on the robot (narrowed down by any search-terms).

  4. Blocking

    • Check this option to stop the composition until the selected app is closed. Otherwise, the composition will continue to run in the background.

ChangeKioskBlock Change kiosk block

Function: Change the currently selected kiosk-dataset

Available settings:

ChangeKioskSettings
  1. Selection-list

    • This title-bar will display the selected dataset.

  2. Search-bar

    • Tap to enter a search-term and search the list of datasets.

  3. List of available datasets

    • Tap to select a dataset from the list of available datasets installed on the robot (narrowed down by any search-terms).

WaitForVoiceBlock Wait for voice command block

Function: Pause the composition until the robot hears one of the entered terms

Available settings:

WaitForVoiceSettings
  1. List of terms the robot will listen for

    • Tap the field next to Enter command and enter a term the robot will listen for.

The robot will listen for the term using the setting for the Speech engine on the robot. Make sure the entries match this setting. If necessary, place a speech-block before this block to set the correct language.
StopMediaBlock Stop media block

Function: Stop the currently playing media-file

Available settings:

StopMediaSettings
  1. The type of media to be stopped

    • Tap to select the type of media to be stopped (audio, video or image).

Advanced Composer

The following blocks are only available in the advanced composer:

The following blocks are available in the advanced composer:

AdvancedBlocks
  1. Math formula block

  2. If/Else block

  3. Math operations block

  4. Variable block

  5. Start block

  6. Stop block

To apply the new settings, tap the Accept-button or the icon md check. To cancel the changes, tap outside the modal or the Cancel-button.
BlockMathFormula Math Formula

Function: Calculate a variable based on the math formula entered.

If the math formula isn’t recognized, the composition will skip this block altogether.

Available settings:

MathFormulaSettings

  1. Variable name

    • Enter the name of the variable (without brackets)

  2. Formula

    • Enter the mathematical formula in the required field using the allowed operators.

Only use the operators and/or functions listed below. Other operators are not supported and may cause the composition to misbehave.
Allowed operators

Some operators can be used directly (e.g. {variable} * {variable}). The list below lists all operators that can be used directly.

Operator Function

+

addition

-

subtraction

*

multiplication

/

division

-

sign operator (e.g. -4)

%

modulo

Built-in functions

Other than using mathematical operators, the following functions can also be used to calculate a result. These functions must be used as follows: <function>(<argument>). E.g. sqrt(4) will result in a variable with the value 2.

Function Calculates

abs

absolute value

acos

arc cosine

asin

arc sine

atan

arc tangent

cbrt

cubic root

ceil

nearest upper integer

cos

cosine

cosh

hyperbolic cosine

exp

euler’s number raised to the power (e^x)

floor

nearest lower integer

log

logarithmus naturalis (base e)

log10

logarithm (base 10)

log2

logarithm (base 2)

sin

sine

sinh

hyperbolic sine

sqrt

square root

tan

tangent

tanh

hyperbolic tangent

signum

signum function

To use already existing variables, enter them between curly brackets (e.g. {variable 1}) to use them in the equation.
Leave spaces between the operators to calculate the correct values.
Samples
Calculate the diameter of a circle

In the following example, the robot will calculate a diameter of a circle up to two decimal points.

MathFormulaBasic

In the sample shown, the variable-block contains the radius of the circle, whereas the formula-block is used to calculate the radius.

MathFormulaBasicSettings

To trim the result down to two decimal points, the function ceil() is used on the result * 100 to round it up and then divided by 100 to return the digits after the decimal point.

BlockIfElse If Else

Function: Split the timeline according to a basic if/else statement.

Available settings:

IfElseSettings

  1. If <variable>

    • Enter the name of the variable (without brackets).

  2. Conditional operator

    • Select the conditional operator from the list of available operators.

  3. Conditional value

    • Enter the value or the name of the variable to create the if/else statement.

  4. AND/OR condition

    1. Tap the option AND/OR to add additional arguments to the if/else statement.

    2. Choose the and/or operator on the left.

    3. Remove the additional condition by tapping the md close icon.

  5. Path indicator

    • Displays the output-connector that will be selected if the if-statement has been met.

  6. Else if

    1. Tap the button Else If to add another if/else statement.

    2. Tap the icon md close to remove the added if/else condition.

  7. Path Else

    • If none of the if-statements have been met, this path will be taken.

BlockMathOperations Math Operations

Function: Calculate a variable based on the math operators entered.

Available settings:

MathOperationsSettings

  1. Random generator

    • Check this box to generate a random number instead of using normal operations

  2. Variable-name

    • Enter the name of the variable that will contain the end-result of the mathematical operation.

  3. First argument

    1. Select whether a Variable or Value should be used.

    2. Enter the name or value for the first argument of the operation.

In case of a random generator, this field must contain the minimum value of the range of numbers.
  1. Mathematical operator

    • Choose the operator to be used from the list.

  2. Second argument

    1. Select whether a Variable or Value should be used.

    2. Enter the name or value for the second argument of the operation.

In case of a random generator, the field must contain the maximum value of the range of numbers.
  1. Add another operation

    • Tap the button md add to add another mathematical operation to the block.

The operations will be executed from top to bottom.
Samples
By default, the setting will be set to use variables. Tap the selection-field variables to switch to values instead.
Random number generator

A first example of the math operations-block is generating a random number between two ranges.

In the example below, the variable RandomNumber1 will be generated between 0 and 5, whereas RandomNumber2 will have a value between 0 and 20.

MathOperationsRGSettings

The randomly generated numbers can now be used in if/else-blocks and/or speech-blocks. For example:

MathOperationsRGComposition
  1. Math operations-block defining the range of the generated numbers

  2. Speech stating the random variable

    • Configuration: Random number 1 is {RandomNumber1} and random number 2 is {RandomNumber2}

  3. If/else block determining the path based on the random numbers

    • For example: If Random number 1 is higher than 4 and random number 2 is smaller than 2

  4. Output based on the results (could be a video, audio, speech, …​)

Modulating loop count
This option is only available for ZBOS Control v0.0.28 or higher and if the RAIL-version is 1.1.0.1595 or higher.

The system variable default_loop_count can be used to generate different responses based on the loop-count.

MathOperationsLoopSelectorSettings

In the sample above, the variable ModuloLoopCount will contain a value of 0, 1 or 2. This variable can then be used in the if/else block to loop the different types of available responses.

MathOperationsLoopSelectorComposition
  1. Math operations-block defining the range of the generated numbers

  2. If/else block determining the path based on the output

    • In this example: If ModuloLoopCount == 1, take path 1; Else if ModuloLoopCount == 2, take path 2; else take path 3.

  3. Output based on the results (could be a video, audio, speech, …​)

The configuration of the if/else block was done so the first time the composition is executed, the first path will be taken. Otherwise, the last path will be taken instead.
BlockVariables Variables

Function: Define variables to be used in the composition

Available settings:

VariablesSettings

  1. Name of the variable

    • Enter a unique name for the variable.

  2. Value

    • Enter a value for the variable.

A list of variables can be defined in a single block. New blank fields for the name and value will be shown below the already defined variables.
  1. Usage in other blocks

    • Enter the name of the variable where the variable needs to be selected (e.g. if/else or math operations).

    • Enter the name of the variable in rounded brackets (e.g. {sample} ) where the value of the variable needs to be used (e.g. speech/math formula).

BlockAdvancedLoop Advanced Loop

Function: Loop the blocks in path 1 until the set condition is met (for-loop or while-loop).

Available settings:

  • For-loop

ForLoopSettings
  1. Conditional variable (manual or earlier defined)

  2. Initial value (manual or earlier defined)

  3. Conditional operator

  4. Conditional value

  5. Step-iteration

    • While-loop

WhileLoopSettings
  1. Conditional variable (manual or earlier defined)

  2. Initial value (manual or earlier defined)

  3. Conditional operator

  4. Conditional value

Tap the icon md arrow dropdown or md edit to toggle between entering a variable or a value.

Usage:

  • Enter the loop-conditions

  • Link the blocks to be looped to path 1 and place a Stop-block at the end.

The name of the variable used for the loop condition must be unique and can only be used by the blocks in path 1.
BlockAPI API Call

Function: Retrieve information using an API Call. (See here)

Settings:

APISettings

  1. Name of the variable (test)

  2. Endpoint of the API

  3. Optional parameters and/or message required for the response

The list of parameters will expand or shrink once a parameter has been entered or removed.

Usage:

  • Enter a variable name

  • Enter the endpoint and other required information (i.e. parameters and header)

  • If the response is JSON-formatted, the information retrieved can be used in other blocks (see further).

The website http://www.mocky.io can be used to send/receive API calls for testing/evaluation purposes.

A sample of the JSON-file the API will return:

{ "location": "Oostende", "company": { "name": "ZoraBots", "address": "Archimedesstraat 17", "field":"Robotics", "openinghours":{ "mondays":"08:00 - 18:00", "tuesdays":"08:00 - 18:00", "wednesdays":"08:00 - 18:00", "thursdays":"08:00 - 18:00", "fridays":"08:00 - 18:00", "saturdays":"closed", "sundays":"closed" } } }

Using the retrieved data in other blocks:

Variables Output

{test.location}

Oostende

{test.company.name}

ZoraBots

{test.company.openinghours.mondays}

08:00 - 18:00

{test.company.openinghours[0]}

08:00 - 18:00

Executing the composition

Once the composition has been created, it can be executed, paused or stopped on the connected robot.

Starting a composition

Tap the button Play ( Play ) to start the composition on the robot.

If a composition is already playing, the play-button will be changed to the pause-button.

Pausing a composition

Tap the button Pause ( Pause ) to pause the currently playing composition.

The composition will simply not play the next block, the currently blocks being executed will simply continue.

Stopping a composition

Tap the button Stop ( Stop ) to stop the current composition.

This will stop the composition immediately, regardless if the composition has been started from the current ZBOS Control or from other external sources (e.g. kiosk, Cloud-Control, inactivity-setting, …​).

Managing the compositions

Saving the composition

The composition can be saved in 3 separate locations, specifically:

  • In ZBOS Control (least safe, re-installing the behavior will cause the data to be lost)

  • On the connected robot (necessary to start the compositions from the kiosk)

  • On an external device (recommended to use this option periodically as backup)

To use the composition in a kiosk-dataset, the composition must be uploaded to the robot from ZBOS Control.
Saving the composition locally

Tap the save-button ( Save ) in the tool-menu to save the composition in ZBOS Control.

If the composition is saved for the first time, a valid name must be entered.
Saving the composition locally under a different name

Tap the button save as ( SaveAs ) in the tool-menu to save the composition with a different filename (and reference).

Saving the composition on the robot
It is highly recommended to save the composition locally before uploading it to the robot, otherwise a blank filename may be shown in the list of available compositions.

Tap the button Upload to robot ( SaveToRobot ) in the tool-menu to upload the currently edited composition to the robot.

Saving the composition on an external device

Tap the button Export ( Export ) in the tool-menu to download the composition and optionally the used images to the connected device (e.g. Android-tablet or iPhone).

ExportModal

If the option Download the media files is checked, the download-time may be increased significantly.

Editing existing compositions

Do not use the option Save as to store the composition using a different filename. This will create a local copy of the composition, and the linked kiosk or inactivity will not reflect the changes made to the composition.

Like the Save-option from before, the compositions can be opened from the following sources:

  • ZBOS Control (stored locally)

  • On the robot (download from the robot)

  • On an external device (import)

It is recommended to save the composition currently being edited before opening an existing composition.
Opening a composition stored locally

Tap the button Open ( OpenLocally ) in the tool-menu to open a list of compositions available in ZBOS Control.

OpenLocalComposition

Select the composition to open from the list and tap the (now unlocked) button Load composition to open the stored composition.

Opening a composition stored on the robot

Tap the button Download from robot ( OpenFromRobot ) in the tool-menu to open a list of compositions available on the connected robot.

OpenRobotComposition

Select the composition to open from the list and tap the (now unlocked) button Load composition to open the stored composition.

Opening a composition stored externally

Tap the button Import ( Import ) to select the .scp-file containing the simple composition-file and opening it in ZBOS Control.

The exported media-files need to be uploaded using the Multimedia-page.

Deleting compositions

The composition stored in the following location can be removed:

  • ZBOS Control (stored locally)

  • On the robot (download from the robot)

Deleting from ZBOS Control

Tap the button Open ( OpenLocally ) to open the list of compositions stored locally.

DeleteLocalComposition

Tap the button Delete ( md trash ) to remove the composition from ZBOS Control.

Deleting from the robot

Tap the button Download from robot ( OpenFromRobot ) to open the list of compositions stored on the robot.

DeleteRobotComposition

Tap the button Delete ( md trash ) to remove the composition from the robot.

Advanced composer

This option is only available for ZBOS Control v0.0.22 and higher.

Since this is an advanced form of the composer, certain skills or knowledge of terminology is needed to program the logic in the composition:

It is highly recommended to read up on the following terminology before creating the advanced composition:

Opening the Advanced composer page

Open the page containing the advanced composer by tapping the ZBOS Control-logo (ZBOSControlLogo) in the top-left corner to open the menu. Then, select the option Advanced Composer in the list of available pages.

ControlMenuAdvancedComposer

Page-overview

The following elements can be discerned on the advanced composer-page:

Overview
  1. Blocks containing actions the robot can take (simple and advanced)

  2. Title-bar with the name and settings () for the composition

  3. Toolbar with actions that can be taken on the composition (e.g. Save and Load)

  4. Workspace where the blocks can be placed

  5. Action-buttons (i.e. Play/Pause and Stop)

Advanced Blocks

There are all the blocks previously available in the simple composer and a new set of blocks that can be used only in advanced compositions.

SwitchBlockTypes

Tap the available tabs to:

  1. Show blocks also available in the Simple composer

  2. Show blocks only available in the Advanced composer

For information on the styling and settings for the blocks in the simple composer, see Customizing the simple composer.

Available blocks

See the chapter List of composition-blocks for more information on the available blocks.

Title-bar

The title-bar will show the name of the composition once it has been saved/loaded.

There is also a link to the composition settings. See the chapter Editing the settings of the composition for more information.

Building an advanced composition

Creating a new composition

To create a new composition in the workspace, tap the tool glyphicons eraser to clear the timeline.

NewComposition
  • If no composition has been loaded (yet), the Clear workspace tool will be disabled.

  • When opening the advanced composer page for the first time, a blank composition is loaded automatically.

Start-block

To start building any composition, drag the start-block into the workspace (or tap the start-block in the menu to add it to the workspace).

StartComposition
There can be only one start-block in the composition. Once this block is placed in the timeline, the block will no longer be available in the list of blocks.

Adding blocks to the workspace

Unlike the simple composer, the advanced composer was designed to allow the robot to make decisions, meaning multiple outcomes are possible. Instead of a simple timeline there is a free workspace, where blocks can be chained by connecting input- and output-connectors.

To demonstrate the usage of the advanced composer, a simple composition will be used that consists of a background being shown and the robot stating a message.

In the simple composer, the composition looks like this:

SimpleCompDemo1

In the advanced composer, it looks like this:

AdvCompDemo1

As seen in the earlier examples, the simple composer will automatically play the blocks in sequence, whereas the advanced composer will literally jump from one block to the next, starting with the start-block, and ending with a Stop-block.

Every branch of the composition needs to be connected to a stop-block before the composition will start to play.
Adding blocks to the timeline

Like the simple composer, the blocks can be dragged into the timeline at the specified location or placed in the top left corner by tapping the block.

AdvCompDemoBlocks
Only the demo of the stop-block is shown in the image. The other blocks are available in the Simple block toolbar.
Expanding the workspace

Drag a block to the bottom or right side of the workspace to expand the workspace.

ExpandWorkspace

Linking blocks together

Custom composition-specific variables will only be shown in other blocks if they are connected after the block.

To create a sequence of actions, the blocks need to be linked from one to the other. This is done by linking the output-connector (2) from one block to the input-connector (1) of the other block.

ViewConnectors
To re-arrange the order of actions, simply tap the output connector and connect it to the new block. This will replace the current connection.

For example, tap the output-connector of the start-block and then tap the input-connector of the multimedia-block to link the blocks together.

ConnectBlocks

This results in the link being created like so:

LinkedBlocks

Managing advanced compositions

All the tool-blocks can be managed in the same manner as the simple compositions. See Managing the compositions for more information.

Samples of advanced compositions

Below are a few samples of advanced compositions:

We sincerely hope our robot will provide a valuable service to your home or business. Hopefully you will continue to provide us with the desired features or bugs which occurred in the workplace, so we can keep improving and expanding the product.

In case you need to contact us, please use the contact-information below.

Documentation Portal

https://docs.zoracloud.com

Website

https://zorabots.com/index.php/en/contact

Ticketing

https://zorabots.freshdesk.com

Telephone

+32 59 20 03 11

Address

Archimedesstraat 17
8400 Oostende
Belgium

  • Android and Google Play are trademarks of Google LLC.

  • App Store is a service mark of Apple Inc.

  • iOS is a trademark or registered trademark of Cisco in the U.S. and other countries and is used under license.