Flexiv TDK (Teleoperation Development Kit) is an SDK for building custom robot-to-robot or device-to-robot teleoperation applications with Flexiv's adaptive robots. It enables synchronized, force-guided motion using high-fidelity perceptual feedback and supports both LAN (Local Area Network) and WAN (Internet) connections.
Flexiv TDK has been recognized on the Manipulation Net Peg-in-Hole Leaderboard. The Manipulation Net is a public benchmark for robotic manipulation in the real world at scale with any robot at any time and anywhere. This provides external evidence for the contact-rich manipulation capability relevant to TDK use cases, including compliant insertion, alignment, and force-sensitive teleoperation workflows.
๐ฌ Flexiv's TDK | Teleoperation Made Simple
(Click image below to play)
Flexiv TDK Page is the main reference. It contains important information including user manual and API documentation. The instructions below serve as a quick reference, and you can find the full documentation at Flexiv TDK Manual.
| OS | Processor | Languages | Compiler Requirements | Python Versions |
|---|---|---|---|---|
| Ubuntu 22.04+ | x86_64, aarch64 | C++, Python | GCC โฅ 9.4, CMake โฅ 3.16.3 | 3.8, 3.10, 3.12 |
๐ก Need support for other platforms? Contact Flexiv.
On all supported platforms, the Python package of TDK and its dependencies for a specific Python version can be installed using the pip module:
python3.x -m pip install spdlog flexivtdk
NOTE: replace 3.x with a specific Python version.
After the flexivtdk Python package is installed, it can be imported from any Python script. Test with the following commands in a new Terminal, which should start Flexiv TDK:
python3.x
import flexivtdk
flexivtdk.__version__
Accurate time sync is critical for teleop over the internet. For WAN teleop, there are two edge computers, one acting as a server and the other as a client, and the system time of these two computers needs to be calibrated.
Note: This is only required for WAN Teleoperation, users can skip this section if only using LAN teleoperation.
- Install & Start chrony
sudo apt install chrony -y
systemctl status chrony # Should show "active (running)"- Check Sync Accuracy
chronyc tracking | grep 'System time\|RMS offset'System time: the instantaneous offset between local system clock and NTP reference
RMS offset: the long-term average offset (root mean square) over time
| Network Condition | Good (ms) | Acceptable (ms) | Poor (ms) |
|---|---|---|---|
| System time | < 1 | 1 - 10 | > 10 |
| RMS offset | < 5 | 5 - 20 | > 20 |
- Force Immediate Sync (if needed)
sudo chronyc burst 4/4
sudo chronyc makestep๐ After network changes (e.g., Wi-Fi โ Ethernet), restart:
sudo systemctl restart chronyd
sleep 5
sudo chronyc makestep- Learn more: Chrony Documentation
To allow a regular user to create high-priority (real-time) threads without sudo, configure system to apply real-time and nice priority limits:
echo "${USER} - rtprio 99" | sudo tee -a /etc/security/limits.conf
echo "${USER} - nice -20" | sudo tee -a /etc/security/limits.confLog out and log back in (or reboot) for the settings to take effect.
To run an example Python script in this repo:
cd flexiv_tdk/example_py
python3.x <example_name>.py [arguments]Check each exampleโs source code for usage details.
The TDK is distributed as a modern CMake project named flexiv_tdk.
sudo apt install build-essential cmake cmake-qt-gui -yExample: ~/tdk_install
cd flexiv_tdk/thirdparty
bash build_and_install_dependencies.sh ~/tdk_installcd flexiv_tdk
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=~/tdk_install
cmake --build . --target install --config Release๐ Internet connection to GitHub is required for 3. Build & Install Third-Party Dependencies and 4. Configure & Install TDK.
After the TDK library is installed, it can be found as a CMake target and linked to from other CMake projects. Using the provided examples project for instance:
cd flexiv_tdk/example
mkdir build && cd build
cmake .. -DCMAKE_PREFIX_PATH=~/tdk_install
cmake --build . --config Release -j 4NOTE: -D followed by CMAKE_INSTALL_PREFIX tells the user project's CMake where to find the installed TDK library.
cd flexiv_tdk/example/build
LD_LIBRARY_PATH=~/tdk_install/lib ./<program_name> [arguments]LD_LIBRARY_PATH is used to specify where the shared libraries of the dependencies are installed.
Check each exampleโs source code for usage details.
The complete and detailed API documentation of the latest release can be found at API Reference. The API documentation of a previous release can be generated manually using Doxygen. For example, on Linux:
sudo apt install doxygen-latex graphviz
cd flexiv_tdk
git checkout <tag_name>
doxygen docs/doxygen/Doxyfile.inOpen flexiv_tdk/docs/api/doxygen/index.html in your browser.