Yes, CPU and memory can be limited on Linux systems using
systemctl set-property formant-agent.service MemoryLimit=<value> systemctl set-property formant-agent.service CPUQuota=<value>
For example, to lock the agent to using a maximum of one core:
systemctl set-property formant-agent.service CPUQuota=100%
Formant provides a few bandwidth control options:
In release 1.91 we introduced new protocols between the formant-agent and the backend that reduce the usage of the formant-agent. Update the agent by runing
sudo apt update && sudo apt upgrade formant-agent
After release 1.91, in your device's general settings, you can put the formant-agent in low bandwidth mode. This significantly reduces the amount of data the formant-agent uses for its passive duties (i.e., checking in with the formant-cloud)
Each data stream can be rate-limited, so you don't need to ingest data at high resolution if you don't need it. Find this in the settings for each stream.
Each data stream can be set to on-demand, so it is only ever uploaded if specifically requested (from the Formant UI, or programmatically, or by an event)
Instead of using compressed/raw image streams, the formant-agent can encode the video for you to significantly reduce the bandwidth of these streams. This is selected in the video encoding settings on an image stream.
For native installations, export
FORMANT_AGENT_PYTHON3_PATH to the desired values in
/var/lib/formant/.bashrc to specify the pythons the formant user will use. These values default to
For native installations, export the
SOURCE_SCRIPT environment variable in
/var/lib/formant/.bashrc to the location of the custom script. The "formant" user will source the provided script before executing the Formant agent process. See Environment variables for the agent.
A list of all optional environment variables that affect the behavior of the Formant agent can be found here
Please make sure to restart the agent (systemctl restart formant-agent) for the environment variables to take effect
Most parts of the formant agent ROS bridge are python3 processes. Try running import rospy in a python3 shell. If this import errors, you may have to install python3-roskpg-modules:
apt install python3-rospkg-modules
Please make sure you have the following packages installed on pyhton3 for ros_bridge:
The following packages need to be installed on python2 for tf2_bridge:
Some systems will not have a video streaming dependency installed. To fix, you can install the following:
apt install gir1.2-gst-rtsp-server-1.0
The system's policy-rd.d may be set up to disallow enabling services. Edit /usr/sbin/policy-rc.d to exit 0 instead of 101.
If the installation was successful, but the ROS based data is not displaying on the webapp, it is likely that the agent did not detect that it was ROS based device. Check if ROS_MASTER is set in your environment. If it is not set, then set it as follows:
Then rerun the agent installation command you ran without the token. If you ran the docker based agent installation, rerun the docker based command.
Updated about 2 months ago