Logs are an essential part of troubleshooting application and infrastructure performance. They help provide visibility into how your applications run on each of the various infrastructure components. It becomes more acute in the context of distributed robotics applications. rapyuta.io provides a set of features specifically targeted to meet the different needs.
rapyuta.io enables you to collect critical system metrics such as CPU usage, memory consumption, etc. as well as directly subscribe to arbitrary ROS topic types. One could use this to collect measurements about parameters like temperature, distance or even application and business metrics such as orders completed or time to delivery.
After collecting metrics of s device, the user can query and visualize this information on a dashboard.
The unique communication architecture in rapyuta.io solves many of the challenges associated with running ROS1 across multiple robots in a local network or even across the public internet.
It sports first-class support for ROS topics, services and actions adding crucial features like QoS, compression, mutual authentication, encryption etc. while protecting you against adverse effects of transient network errors. It works for arbitrary message types and only requires the user to provide topic/service/action names and zero changes to your application source.
ROS has several key pain points when working with multi-robot systems that often need error-prone setups involving specific launch sequences, roslaunch/xml files, and remappings. rapyuta.io ships with special support for multi-robot systems and enforces runtime identities to robots to automatically wrap and unwrap for the right agent.
rapyuta.io allows your applications running in the cloud to declaratively expose HTTP/HTTPS Websocket/WSS and raw TLS endpoints to enable integration with any other popular web services and protocols.
The behavior of a robot is determined by a set of parameters like the robot’s velocity, controller gains, threshold value, etc. As a robotic developer, you may need to represent, store, and review parameters. Additionally, you may want to access parameters in your source code, modify a subset of parameters for a particular robot, or add new parameters and apply those to a group of robots.
rapyuta.io organizes a configuration into a tree-like hierarchical structure called a configuration hierarchy. It allows a user to inherit values and optionally override sections based on particular criteria, e.g., robot_type, client_type. Additionally, it decouples the process of describing these overriding criteria from the process of consuming the resultant configuration at runtime by leveraging metadata tags present on the device.
It allows the developer abstract out hierarchies based on differences in certain traits or properties of the robot/software/location without having to bother about the actual hardware deployment scenario. At the same time individuals responsible for maintaining or provisioning the device does not need to be aware of the hierarchy and only need to assign the relevant metadata tags to the device.
When defining packages rapyuta.io allows the developer to directly reference source code from a VCS like GitHub or Bitbucket. The platform is then responsible for cloning, building, and delivering the software across the cloud and device.
Under the hood, rapyuta.io solves the hard problems of native arm compiles, software versioning, artifact delivery, transactional upgrades and provisioning.
With all these features backed by a complete API, it makes it possible for the developer to automate the flow from git to operations and integrate it with existing CI/CD systems and QA processes.
rapyuta.io supports workflows that let the user combine these packages at build time or runtime, combine multiple packages and deployments that rely on each other to make possible complex functionalities and behavior.