Task Templates — Concepts and Structure
Task Templates are the core programming mechanism in NavWiz. They define flowchart-based sequences of actions that control all AMR operations. Users can add, edit, clone, and delete task templates within the ConfigPanel. Only active task templates can be executed by the AMR.
Each task template has several key properties:
| Property | Description |
|---|---|
| Name | A descriptive name for the task template (e.g., Delivery to Station A) |
| Category | Groups task templates for filtering on the list page |
| Active | Flag to activate or deactivate the template without deleting it. Deactivated templates are hidden from UserPanel |
| Top-level Template | If checked, the template appears in UserPanel and can be run directly by users. Non-top-level templates are hidden and can only be called from other templates |
| Suspend Task Initially | If checked, the task will be suspended immediately after being triggered from the task runner |
Params allow users to add customizable variables to a task template. For example, a "Delivery Station" parameter of type Station lets users select the destination dynamically when the task is executed rather than hard-coding it into the template. When a parameterized task template is run, a prompt window appears asking for parameter values.
Outcomes define the possible results of a task template. This feature is only available for non-top-level templates (top-level templates always end with a single End outcome). Outcomes enable branching logic — for example, a sub-template could have "ok" and "timeout" outcomes that route to different next actions.
Structure is the flowchart editor where actions are arranged and linked. Key tools include:
| Tool | Function |
|---|---|
| Save | Saves changes (soft reboot required to apply) |
| Auto Layout / Free Layout | Toggle between automatic or manual arrangement of actions |
| Select | Drag to pan the view, click to select actions for configuration |
| Link | Connect two actions or an outcome to an action by clicking each in sequence |
| Add Action | Insert a new action into the template |
| Cut / Copy / Paste | Move or duplicate selected actions (Ctrl+X, Ctrl+C, Ctrl+P) |
| Undo / Redo | Undo or redo changes (Ctrl+Z, Ctrl+Y) |
| Note Editor | Add hover-notes to individual actions |
| Delete | Remove a selected action or link |
Registers are variables that can be manipulated inside task template execution. The register data type is a 32-bit signed integer (range: -2,147,483,648 to 2,147,483,647). Three types of registers are available:
| Register Type | Scope | Available Registers |
|---|---|---|
| Local Register | Initialized to zero at task start; cleared when the current task template ends | A0–A9, B0–B9, C0–C9 |
| Global Register | Initialized to zero at task runner start; retained across multiple task templates; cleared when task runner exits | GB0–GB9 |
| Persistent Register | Retains its value even when the AMR is powered off | Varies by configuration |
Task Templates — Action Types Reference
NavWiz provides a comprehensive set of built-in actions for task templates. Each action has a name (yellow box), parameters (middle area), and outcomes (blue boxes). The following table lists all available action types grouped by category.
| Category | Action | Description |
|---|---|---|
| Navigation | Navigate To | Navigate from current position to a destination station using shortest path |
| Navigation | Reverse Navigate To | Navigate to a destination station using reverse motion |
| Navigation | Reset AGV Position | Reset AMR position to a specific station (resets trackless localization) |
| Navigation | Reset AGV Position Tracker | Reset AMR position tracker without resetting trackless localization |
| Navigation | Check AGV Position | Check if AMR is currently at a selected station |
| Navigation | Check AGV Position Prefix | Check if current station name starts with a given prefix |
| Navigation | Check AGV Position Suffix | Check if current station name ends with a given suffix |
| Navigation | Check AGV Position RFID | Check if AMR is at a junction matching a configured RFID (track only) |
| Navigation | Is AGV Homed | Check if AMR is at its configured home position |
| Trackless Movement | Forward (trackless) | Move forward a set distance without track guidance |
| Trackless Movement | Reverse (trackless) | Move in reverse a set distance without track guidance |
| Trackless Movement | Bezier Forward (trackless) | Move forward along a Bezier curved path |
| Trackless Movement | Bezier Reverse (trackless) | Move in reverse along a Bezier curved path |
| Trackless Movement | Dynamic Forward (trackless) | Move forward using dynamic path planning |
| Trackless Movement | Dynamic Reverse (trackless) | Move in reverse using dynamic path planning |
| Trackless Movement | Dynamic Bezier Forward (trackless) | Move forward on a Bezier curve using dynamic path planning |
| Trackless Movement | Dynamic Bezier Reverse (trackless) | Move in reverse on a Bezier curve using dynamic path planning |
| Trackless Movement | Forward (wait IO) (trackless) | Move forward and stop on IO trigger or distance |
| Trackless Movement | Reverse (wait IO) (trackless) | Move in reverse and stop on IO trigger or distance |
| Waypoint | Go To Waypoint | Navigate to X/Y coordinates using dynamic path planning |
| Waypoint | Go To Station Waypoint | Navigate to a station using dynamic path planning |
| Waypoint | Go To Marker Waypoint | Perform docking via dynamic path planning to a marker |
| Docking | Forward Dock (trackless) | Approach a target marker moving forward |
| Docking | Reverse Dock (trackless) | Approach a target marker moving in reverse |
| Docking | Forward Undock (trackless) | Move away from a docked position moving forward |
| Docking | Reverse Undock (trackless) | Move away from a docked position moving in reverse |
| Rotation | Rotate Left (trackless) | Rotate AMR to the left (trackless) |
| Rotation | Rotate Right (trackless) | Rotate AMR to the right (trackless) |
| Rotation | Rotate to Heading (trackless) | Rotate AMR to a specific heading angle |
| Track Movement | Forward | Move forward following the magnetic tape track |
| Track Movement | Reverse | Move in reverse following the magnetic tape track |
| Track Movement | Branch Forward Left | Take the left branch at a junction (forward) |
| Track Movement | Branch Forward Right | Take the right branch at a junction (forward) |
| Track Movement | Branch Reverse Left | Take the left branch at a junction (reverse) |
| Track Movement | Branch Reverse Right | Take the right branch at a junction (reverse) |
| Track Movement | Forward (by distance) | Move forward a set distance on track |
| Track Movement | Reverse (by distance) | Move in reverse a set distance on track |
| Track Movement | Forward (wait IO) | Move forward on track and stop on IO trigger |
| Track Movement | Reverse (wait IO) | Move in reverse on track and stop on IO trigger |
| Track Rotation | Rotate Left | Rotate AMR left on track |
| Track Rotation | Rotate Right | Rotate AMR right on track |
| Track Rotation | U-Turn Left | Perform a U-turn to the left |
| Track Rotation | U-Turn Right | Perform a U-turn to the right |
| Track Rotation | Rotate 3-Q Left | Perform a three-quarter rotation left |
| Track Rotation | Rotate 3-Q Right | Perform a three-quarter rotation right |
| Track Rotation | Rotate (By Angle) | Rotate AMR by a specific angle |
| Line Search | Search Line Left | Search for the magnetic line to the left |
| Line Search | Search Line Right | Search for the magnetic line to the right |
| Line Search | Find Marker | Search for a specific marker on the track |
| Profile Selection | Select Navigation Profile | Switch to a specified navigation profile |
| Profile Selection | Select Laser Profile | Switch to a specified laser sensor profile |
| Profile Selection | Scan Laser Area | Scan a laser area with specified parameters |
| Profile Selection | Select Dimension Profile | Switch to a specified dimension profile |
| Wait / User Input | Wait | Wait for a specified duration |
| Wait / User Input | Wait Acknowledge | Wait for user acknowledgement on the LCD touchscreen |
| Wait / User Input | Wait Confirm | Wait for user confirmation with Yes/No options |
| Wait / User Input | Wait Keypad | Wait for user keypad input |
| Wait / User Input | Wait Resume | Wait until the task is resumed |
| Wait / User Input | Sleep | Put the AMR to sleep for a specified duration |
| Battery / Power | Dock Charger | Dock to a charging station |
| Battery / Power | Undock Charger | Undock from a charging station |
| Battery / Power | Check Battery | Check battery level against a threshold |
| Battery / Power | Calibrate Battery | Calibrate the battery reading |
| Battery / Power | Reboot AGV | Soft reboot the AMR |
| Battery / Power | Power Off AGV | Power off the AMR |
| Audio | Play Music | Start playing a predefined music file |
| Audio | Pause Music | Pause music playback |
| Audio | Stop Music | Stop music playback |
| Audio | Play Alarm | Start playing an alarm sound |
| Audio | Stop Alarm | Stop alarm playback |
| I/O | IO Read | Read a value from an IO pin |
| I/O | IO Write | Write a value to an IO pin |
| I/O | IO Read Register | Read an IO value into a register |
| I/O | IO Write Register | Write a register value to an IO pin |
| Register / Logic | Set Register Value | Set a register to a specified value |
| Register / Logic | Compare and Set Register | Compare registers and set a value based on result |
| Register / Logic | Increment Register | Increment a register value by 1 |
| Register / Logic | Decrement Register | Decrement a register value by 1 |
| Register / Logic | Add Register | Add a value to a register |
| Register / Logic | Subtract Register | Subtract a value from a register |
| Register / Logic | Multiply Register | Multiply a register by a value |
| Register / Logic | Divide Register | Divide a register by a value |
| Register / Logic | Copy Register | Copy value from one register to another |
| Register / Logic | Display Register Value | Display a register value on screen |
| Register / Logic | Counter | Increment a counter and compare against a target |
| Comparison | Compare Register | Compare two register values |
| Comparison | Compare Register and Integer | Compare a register against an integer constant |
| Comparison | Compare Integers | Compare two integer values |
| Comparison | Compare Doubles | Compare two double values |
| Comparison | Compare Stations | Compare two station values |
| Comparison | Compare Stations Prefix | Compare station prefixes |
| Comparison | Compare Stations Suffix | Compare station suffixes |
| Comparison | Compare Strings | Compare two string values |
| Comparison | Compare Booleans | Compare two boolean values |
| Comparison | Check Time | Check current time against a schedule |
| Remote I/O | Remote IO Read | Read from a remote IO module |
| Remote I/O | Remote IO Write | Write to a remote IO module |
| Remote I/O | Remote IO Read Register | Read remote IO value into a register |
| Remote I/O | Remote IO Write Register | Write register value to remote IO |
| Modbus | Modbus Read | Read a value via Modbus protocol |
| Modbus | Modbus Write | Write a value via Modbus protocol |
| Modbus | Modbus Read Register | Read a Modbus value into a register |
| Modbus | Modbus Write Register | Write a register value via Modbus |
| RFID | Read RFID and Compare String | Read an RFID tag and compare with a string |
| RFID | Reset RFID | Reset the RFID reader |
| HTTP | HTTP GET | Send an HTTP GET request to a URL |
| HTTP | HTTP POST | Send an HTTP POST request with a payload |
| HTTP | HTTP PUT | Send an HTTP PUT request with a payload |
| HTTP | HTTP DELETE | Send an HTTP DELETE request to a URL |
| Task Control | Log Message | Log a custom message to the activity log |
| Task Control | Update Task Progress | Update the task progress message |
| Task Control | Abort Task | Abort the current task execution |
| Variables | Set Bool | Set a boolean task template variable |
| Variables | Set Integer | Set an integer variable |
| Variables | Set Integer From Register | Set an integer variable from a register value |
| Variables | Set Double | Set a double variable |
| Variables | Set String | Set a string variable |
| Variables | Set String from Int | Convert an integer to string and set a variable |
| Variables | Set String from Double | Convert a double to string and set a variable |
| Variables | Set String from Station | Convert a station to string and set a variable |
| Variables | Set Station | Set a station variable |
| Variables | Compose String | Build a string using a template with %s replacement |
Task Template Groups, Users, and Variables
NavWiz provides access control for task templates through user groups and individual user assignments. Task templates can be restricted so only specific users or groups can see and execute them.
To configure access for a task template, click the group/user icon in the task template list. Assign the template to user groups (for bulk access) or individual users. A user can access a template if they are either listed as an allowed user or belong to an allowed group.
Task Template Global Parameters are constant values accessible from all task templates. This avoids hard-coding the same value in multiple templates. Global parameters support the following types: Bool, Int, Double, Str, Station, and Register.
Task Template Variables are also accessible from all task templates, but unlike global parameters, their values can be changed at runtime through task template actions such as Set Bool, Set Integer, Set String, Set Double, and Set Station. Variable types include: Bool, Int, Double, Str, and Station.