Synced files and folders

Everything you build on the dashboard is copied to the robot’s disk. That is what lets a robot run tasks without asking the server first, and keep working when it is offline. This page shows what goes where and when.

When files are sent

  • Every time the robot connects, it receives the whole project: trees, environments, scratch files, tasks and code nodes.

  • While it is connected, every change you save on the dashboard is sent to it within seconds.

  • The ROS bag recording settings are the exception: they are sent only when you press Save Recording Settings (see ROS bag recording).

What goes where

Paths are relative to the package’s install folder <share>, usually ~/xparo_ws/install/xparo/share/xparo, with the launch file’s default settings (the parameters that move them are in Configuration).

On the dashboard

On the robot

Behaviour → Behaviour trees → name

custom_behaviors/custom_aiml/<name>.xml

Behaviour → Environments → name

custom_envs/custom_maps/<name>.env

Behaviour → Code nodes → name

custom_behaviors/custom_node_files/<language>/<name>.<py|cpp|js|sh> (and manifest.json next to the language folders)

Behaviour → Scratch Space → Behaviour tree

config/default.xml

Behaviour → Scratch Space → Environment

config/default.env

Behaviour → Scratch Space → Text files

config/default.yaml

Behaviour → Scratch Space → Properties

properties/properties.txt

Tasks (all of them)

custom_behaviors/tasks.json

Database → Sensors → ROS Bag Recording

custom_behaviors/rosbag_config.json

Behaviour → External Plugin Paths

custom_behaviors/plugin_paths.json

Behaviour → Custom Nodes (inline code)

custom_behaviors/inline_nodes/<name>.py

Trees are stored wrapped as a complete BehaviorTree.CPP file:

<root BTCPP_format="4" main_tree_to_execute="MainTree">
<BehaviorTree ID="MainTree">
<Sequence name="Delivery_run">
...
</Sequence>
</BehaviorTree>
</root>

When the robot is started with xparo_environment:=local and the package source is in <workspace>/src/xparo, trees and environments are written into the source folders instead, so you can keep them in git.

From the robot back to the project

When the robot connects, it also tells the server which tree, environment and code-node files it has:

  • A new file you create on the robot in custom_behaviors/custom_aiml/, custom_envs/custom_maps/ or custom_behaviors/custom_node_files/<language>/ is added to the project. A new code-node file must look like a node (for example a Python file with a CustomBTNode class); helper files are left alone.

  • A file that exists in both places: the project’s version is sent to the robot when it connects, and replaces any edits made on the robot’s disk in the meantime. Make changes to existing files on the dashboard.

  • If the project and the robot each have a different new version of the same file, nothing is overwritten: the Behaviour page shows a conflict banner where you choose which version to keep.

Files the robot keeps for itself

The robot’s own credential, the Files tool’s folder, logs and outgoing messages live next to its Python code, not in <share>; see What the robot keeps on its own disk.