Reduce bandwidth in constrained situations

Remote operation of a device can be crucial to scaling your fleet of devices. A key component of remote operation and monitoring is the network connection of both the device’s network as well as the client/operator accessing Formant. When devices/clients don’t have sufficient network they may see a degraded experience crucial teleoperation session, grainy/low-quality video, or unstable ssh connections. Many things can affect the quality of the network on either end, including but not limited to the following:

  • Network congestion during peak usage; multiple devices sharing a network

  • ISP imposed data caps

  • Weak signal strength

  • Physical obstacles like buildings, foliage, etc can block or weaken signals

To check your available bandwidth, you can use a tool like speedtest-cli. Once you are aware of your bandwidth capabilities, use a tool such as nethogs to discern which process is utilizing the network.

While Formant cannot alter or improve the quality of your network on either end, there are steps you can take to optimize the available bandwidth between the device and client. Below, we outline some of the primary ways to reduce bandwidth of the data being sent to Formant, helping to ensure that robots remain operational even in challenging network conditions.

Using Low-Bandwidth Mode

In order to facilitate low-bandwidth applications, Formant has introduced a couple knobs which users can adjust to enable smooth operation.

The first is to enable “Low Bandwidth Agent” in the device configuration General settings. Enabling this will reduce the ingestion rate of host streams (things like CPU, Battery, Network, etc) and reduce the frequency that the agent checks in with the back end to facilitate things like executing commands, looking for updated device configurations, or establishing new real-time connections.

Enable Low Bandwidth Agent from device configuration

Enable Low Bandwidth Agent from device configuration.

In a device’s teleoperation configuration screen (shown below), there is also a slider to enable “Allow low bandwidth mode”. If enabled, this will create a button in teleop sessions which operators can use to force the agent to encode the real time videos at a configurable bitrate (generally a lower bitrate) and transmits them at 5 frames per second. This configurable bitrate can be set by using the FORMANT_LOW_BANDWIDTH_BITRATE environment variable, as outlined in Environment variables for the agent.

Enable **Allow low bandwidth mode** to allow operators to temporarily reduce the quality of real time video streams

Enable Allow low bandwidth mode to allow operators to temporarily reduce the quality of real time video streams.

Updating the ingestion frequency of streams

Telemetry data can serve as a solid data collection method, enabling operators or engineers to playback mission data and observe anomalies after the fact. Often times, however, we see that there is more data collected than is necessary. It is important to balance the bandwidth used ingesting telemetry data vs. that used for real-time operations.

Consider adjusting the stream rate for whole devices or individual telemetry streams from the default 0.5 Hz to a lower value that aligns with your application specific data requirements.

Additionally, switch telemetry streams to on-demand mode will store data on a local (circular) buffer, which users can then manually instruct to ingest to the Formant data storage when they prefer. This approach can be triggered via front-end inputs or programmatically; enabling a more targeted approach to data acquisition.

Utilizing configuration templates that configure more lean data ingestion

Depending on the context of the device, you may want to prioritize certain streams for ingestion over others. Or you may want to set some streams to ingest at a much higher rate while others can ingest much more sparsely. With configuration templates, you can create ingestion profiles where you can fine tune the ingestion rate, add/remove streams from ingestion, and more. These configuration templates can be quickly applied to a device, either manually from the Formant front end, programmatically from an event, or using our API calls.

Reducing the resolution of data sent to Formant

If the steps above are not enough, you may consider reducing the resolution of the data being sent to Formant. Perhaps one of the cameras needs to be high resolution to capture details of your surrounding while it is acceptable for the other camera stream to be less clear. In network constrained situations, it is suggested to reduce the resolution of video streams to the minimum operational quality. Or, try stitching two video feeds together and sending them as one combined video, as this improves performance. Additionally, it is common to filter dense point clouds before ingesting them to Formant.

👋

If you notice an issue with this page or need help, please reach out to us! Use the 'Did this page help you?' buttons below, or get in contact with our Customer Success team via the Intercom messenger in the bottom-right corner of this page, or at [email protected].