COS for robotics components

The COS for robotics is meant to monitor your devices. This means that we have a server hosting all our applications and devices sending data to our server.

The server side, based on COS Lite is relying on Juju to orchestrate and MicroK8s to scale your applications. For the devices, all the components are snaps and can run on an Ubuntu machine or in the OS for robotics Ubuntu Core.

Server components

The charmed operators that make up COS for robotics are available as the pre-configured COS for robotics bundle. COS for robotics is made up of the following Juju charmed operators:

Additionally, you can package your own cloud application as a charm and deploy it along COS for robotics.

cos-registation-server-k8s

The cos-registration-server-k8s operator is the first entry point for devices. With this server, devices are going to register themselves and upload their configurations. The cos-registration-server-k8s is then synching all the configurations to the appropriate applications (Grafana, Prometheus, Loki, etc.). Additionally, the operator offers a UI for the user to retrieve devices and the corresponding visualization.

The cos-registration-server-k8s is a charm for the cos-registration-server working in complement with the cos-registration-agent.

foxglove-studio-k8s

The foxglove-studio-k8s operator is the charm of the former open-source version of Foxglove Studio. The charm is meant to work with the foxglove-bridge snap. The operator can be used to access live ROS data with the foxglove-bridge or to load bag files from the ros2bag-fileserver-k8s.

ros2bag-fileserver-k8s

The ros2bag-fileserver-k8s operator is used to store robotics data from devices. Robots are pushing data over SSH. The robotics data (ROS 2 bags), can latter be accessed with the file-server (Caddy) exposed by the operator. Additionally, the file-server has a UI so you can access the files and their links to provide them to other applications (i.e. Foxglove Studio file entry). The charm is meant to work with the ros2-exporter-agent.

Note

If the space on your server is limited, make sure to clear periodically the data stored by the ros2bag-fileserver-k8s.

COS Lite components

COS for robotics is extending COS Lite and thus include its applications:

Note

More information about the COS Lite components can be found in the COS Lite documentation.

Devices components

The snaps that make up COS for robotics are available on the Snap Store. COS for robotics is made up of the following snaps:

Additionally, you can package your own device application as a snap and deploy it along COS for robotics snaps.

cos-registration-agent

The cos-registration-agent snap is the single component directly talking to the cos-registration-server. It’s making sure the device configuration is propagated to the server. It’s reading its configuration from the rob-cos-demo-configuration. Additionally, it exposes some data to the rob-cos-data-sharing.

foxglove-bridge

The foxglove-bridge snap is meant to directly communicate with the foxglove-studio-k8s. The snap is packaging the official ros-foxglove-bridge. It is reading its configuration from the rob-cos-demo-configuration.

### ros2-exporter-agent

The ros2-exporter-agent snap is recording ROS 2 bags and sending them to the ros2bag-fileserver-k8s. The snap takes care of recording bag, sending them to the server and then clean old ROS bags. It is reading its configuration from the rob-cos-demo-configuration. Additionally, the snap reads credentials from the rob-cos-data-sharing.

rob-cos-data-sharing

The rob-cos-data-sharing snap is an almost empty snap. It is simply used to share data between different snaps, from the cos-registration-agent to the ros2-exporter-agent. The data currently shared with the rob-cos-data-sharing are: a UID file as well as an SSH public and private key.

rob-cos-grafana-agent

The rob-cos-grafana-agent snap is packaging the official grafana-agent. The snap is used to send data from the system as well as logs to different applications (Prometheus, Loki, etc.). The grafana-agent is configured in Flow mode. It reads its configuration from the rob-cos-demo-configuration.

rob-cos-demo-configuration

The rob-cos-demo-configuration snap is an example snap providing the configuration to all the COS for robotics snaps. The snap is meant to be used as a reference but could be used to try COS for robotics on your devices. You can find details about how-to write your own configuration file in the documentation: Write configuration snap for COS for robotics.