This repo implements the paper
F. Jakob, X. Chen, H. Sadeghian and S. Haddadin, "Enhancing the Tracking Performance of Passivity-based High-Frequency Robot Cloud Control," 2024 IEEE International Conference on Robotics and Automation (ICRA).
The purpose of this repo is to provide an exemplary implementation of a framwork to outsource high-frequency robot computations to the edge-cloud. Stabilization w.r.t. to communication delay and package loss is handled by the Time Domain Passivity Approach (TDPA). To handle the performance tradeoff, a position drift compensation and passivity-excess augmentation is implemented. For further details, refer to the paper.
This repo is divided into two branches:
Make sure to clone the respective branch on one PC connected to the robot and one PC running the cloud. Both PC has to be located in the same network. For communication, a UDP socket is implemented. This branch runs the robot side, and is only compatible with Franka Robotics robots that have the Franka Control Interface (FCI) feature installed.
The code has been written and tested on Ubuntu 20.04 and 22.04. A supported compiler and cmake is required, e.g. by running
sudo apt install build-essential
sudo apt install cmake
The dependencies are Eigen and libfranka. Make sure to clone and build libfranka into your home directory according to the installation instructions.
Clone the repo. To build the code, run
cmake -S . -B build
make -C build
Edit the configuration file local_parameter.json and adjust
- your robot IP
- the IP of the cloud PC
- the initial joint configuration that the robot should move to
- The run time
- whether you want to use TDPA
- if you use TDPA, the passivity augmentation constant
eta
The ports can be kept unless your machine is using them already. Optionally adjust the prompt printing rate and the recorder setting, that will save all data afterwards.
If your configurations are set, start the cloud controller on the remote PC. If the cloud is ready, run the code with
./build/local_controller
Make sure that the robot FCI is enabled and in execution mode. The code will terminate after the run time, specified by the configuration file.
Try running the setup using different configurations and try to impose artificial delay using tcgui.
After terminating the code, relevant variables will be saves in a Matlab file and saved in the directory data. For visualization, a Matlab script that parses and plots the data is provided.