A Python implementation of an example of 'Adaptive Constrained Kinematic Control using Partial or Complete Task-Space Measurements'
Project description
Adaptive Constrained Kinematic Control using Partial or Complete Task-Space Measurements
Python Users
venv
python3 -m venv venv
source venv/bin/activate
python3 -m pip install dqrobotics --pre
python3 -m pip install marinholab-papers-tro2022-adaptivecontrol
When you cannot use a venv (e.g. ROS2)
python3 -m pip install dqrobotics --pre --break-system-packages
python3 -m pip install marinholab-papers-tro2022-adaptivecontrol --break-system-packages
Reference
Sample code and minimal example for our TRO2022 paper.
@Article{marinhoandadorno2022adaptive,
author = {Marinho, M. M. and Adorno, B. V.},
title = {Adaptive Constrained Kinematic Control using Partial or Complete Task-Space Measurements},
journal = {IEEE Transactions on Robotics (T-RO)},
year = {2022},
month = dec,
doi = {10.1109/TRO.2022.3181047},
volume = {38},
number = {6},
pages = {3498--3513}
}
Standalone Example
- The red object represents the estimated robot, initially very wrong on purpose to evaluate the adaptation.
- The estimation usually converges within a few seconds using measurements from a simulated sensor.
- Simultaneously, the robot proceeds through the box, toward the target poses, without collisions.
- You can change the pose of the
xd0andxd1objects in the scene, as long as you do it before the simulation starts.
Usage
Download & extract the standalone version (only do this once)
cd ~
sudo apt install curl jq -y
wget $(curl -sL https://api.github.com/repos/mmmarinho/tro2022_adaptivecontrol/releases/latest | jq -r '.assets[].browser_download_url')
tar -xvf tro2022_adaptivecontrol_example.tar.xz
Running
- Open the example scene, namely
tro2022_adaptivecontrol_example/TRO2022_MarinhoAdorno_ReferenceScene.ttton CoppeliaSim. - Run
cd ~/tro2022_adaptivecontrol_example
./run_example.sh
Troubleshooting
If you have the error below when running the pre-compiled example, please use Ubuntu 22.04 or later.
./run_example.sh
bin/adaptive_control_example: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32' not found (required by bin/adaptive_control_example) bin/adaptive_control_example: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.34' not found (required by bin/adaptive_control_example)
bin/adaptive_control_example: /lib/x86_64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.29' not found (required by bin/adaptive_control_example) bin/adaptive_control_example: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32' not found (required by lib/libdqrobotics.so)
bin/adaptive_control_example: /lib/x86_64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.29' not found (required by lib/libdqrobotics-interface-vrep.so) bin/adaptive_control_example: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32' not found (required by lib/libdqrobotics-interface-vrep.so)
bin/adaptive_control_example: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by lib/libdqrobotics-interface-vrep.so)
Known limitations of this example/TODO list/Extra info
- The stopping criterion is elapsed time, so it might not converge for all initial parameters.
- The initial convergence to measurements mentioned in the paper TODO for this example.
- The estimated model is randomized so it might start in an implausible zone. Fixing this is TODO for this example.
- Sample code for partial measurements is included, but they have not been tested in this example, only in the physical robot.
The adaptation is supposed to move the parameters of the
estimated_robottowards the ideal kinematic model defined byreal_robotin the code. The robot model in CoppeliaSim is for visualization only. - A different solver was used in the paper's experiments, in this example we use an open-source solver, so the behavior might be somewhat different.
- The final target position is, ON PURPOSE, chosen as somewhere the robot cannot reach. It serves to show that even in such case the robot does not collide with the environment.
Build from source
Just in case
sudo apt install g++ cmake git libeigen3-dev
macos
brew install cmake eigen cppzmq boost
Download the repo
cd ~
mkdir git
cd git
git clone https://github.com/mmmarinho/tro2022_adaptivecontrol.git --recursive
Build
With all dependencies correctly configured,
cd ~/git/tro2022_adaptivecontrol
chmod +x .build.sh
./.build.sh
Running
- Open the example scene, namely
TRO2022_MarinhoAdorno_ReferenceScene.ttton CoppeliaSim. - Run
cd ~/git/tro2022_adaptivecontrol
chmod +x .run.sh
./.run.sh
Example console output of the results
Running on an 8 core Ubuntu VM.
Not considering the setup step prints
Reference timeout for xd0
Average computational time = 0.00126314 seconds.
Clock overruns =7 (Too many, i.e. hundreds, indicate that the sampling time is too low for this CPU).
Final task pose error norm 2.37699e-15 (Dual quaternion norm).
Final task translation error norm 0 (in meters).
Final measurement error norm 9.3756e-16 (Dual quaternion norm).
Final measurement translation error norm 0 (in meters).
Reference timeout for xd1
Average computational time = 0.000902905 seconds.
Clock overruns =7 (Too many, i.e. hundreds, indicate that the sampling time is too low for this CPU).
Final task pose error norm 0.0225817 (Dual quaternion norm).
Final task translation error norm 0.044178 (in meters).
Final measurement error norm 0.000940036 (Dual quaternion norm).
Final measurement translation error norm 0.001836 (in meters).
Tested on
- Ubuntu 22.04
5.19.0-41-generic #42~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Apr 18 17:40:00 UTC 2 x86_64 x86_64 x86_64 GNU/Linux - g++ --version
g++ (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0 - CoppeliaSim EDU 5.4.1 (rev4)
- DQ Robotics cpp as shown in the submodule information.
- DQ Robotics cpp-interface-vrep as shown in the submodule information.
- DQ Robotics cpp-interface-qpoases as shown in the submodule information.
- qpOASES as shown in the submodule information.
- sas_core as shown in the submodule information.
Python binding installation
All dependencies MUST be installed as system-wide packages. Also
sudo apt install pybind11-dev
Supposing there is a venv installed as
~/git/tro2022_adaptivecontrol
python3 -m venv venv
Once
At the root of this directory
~/git/tro2022_adaptivecontrol
source venv/bin/activate
python3 -m pip install ./python_wrapper
Using it
python3
>>> from adaptive_control_example import *
Changelog
- 2025.05. Updating code to work with
DQ_CoppeliaSimInterfaceZMQ.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp313-cp313-manylinux1_x86_64.whl.
File metadata
- Download URL: marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp313-cp313-manylinux1_x86_64.whl
- Upload date:
- Size: 468.2 kB
- Tags: CPython 3.13
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f80b2c56190f935c2634025fb330bdb8a9f22029103cb65917e4d426c53cffd7
|
|
| MD5 |
676396c834752a136217e0efbd66058a
|
|
| BLAKE2b-256 |
1d4322a6922afc4d37b1e0170fa392aff31a2108248f914453e8a9a2dfa38e87
|
File details
Details for the file marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp313-cp313-macosx_14_0_arm64.whl.
File metadata
- Download URL: marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp313-cp313-macosx_14_0_arm64.whl
- Upload date:
- Size: 354.8 kB
- Tags: CPython 3.13, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a15601dd7a871663453ddd974c968f8e6d73cc8d89941f13da41b794aa3bc05
|
|
| MD5 |
4355437e074b4eaef9a1288f04586e6e
|
|
| BLAKE2b-256 |
707407ffa75cef2081208667b99ba0a7c2b896f9a4792690ccc663310bb0d09b
|
File details
Details for the file marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp312-cp312-manylinux1_x86_64.whl.
File metadata
- Download URL: marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp312-cp312-manylinux1_x86_64.whl
- Upload date:
- Size: 467.2 kB
- Tags: CPython 3.12
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
028135e30c03038fcfc22a09770ab74eb3a9c81e4e13296afc350cb55566c694
|
|
| MD5 |
b9f488b42dbde0d31e38d0c44f6860fa
|
|
| BLAKE2b-256 |
a10c4bb826399f3a5155c3c8af9bf6dd07d169c5f950cc31b4670a35338daa08
|
File details
Details for the file marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp312-cp312-macosx_14_0_arm64.whl.
File metadata
- Download URL: marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp312-cp312-macosx_14_0_arm64.whl
- Upload date:
- Size: 354.7 kB
- Tags: CPython 3.12, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b49aea7be61e512c2ec3f0627f5e49bebc3884d7165cd1a803d495c78ad5b04
|
|
| MD5 |
b3a6c09d9437e071334298628fb03ea8
|
|
| BLAKE2b-256 |
65f463679848bdd94fd2ed33b5cc9ae3cd5db9d403125e50e57ff5c010e6af5b
|
File details
Details for the file marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp311-cp311-manylinux1_x86_64.whl.
File metadata
- Download URL: marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp311-cp311-manylinux1_x86_64.whl
- Upload date:
- Size: 468.4 kB
- Tags: CPython 3.11
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9bab71674003cc152f8422796a9aceea746dfa48e9119c79946153a0253d51c9
|
|
| MD5 |
44262c688e193fa4b65085a22e4d0f11
|
|
| BLAKE2b-256 |
38a487fcf85c3e58600b83c6c9ef6ff0ce13a1ce8251c06d8c77eef87cd70bb5
|
File details
Details for the file marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp311-cp311-macosx_14_0_arm64.whl.
File metadata
- Download URL: marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp311-cp311-macosx_14_0_arm64.whl
- Upload date:
- Size: 353.6 kB
- Tags: CPython 3.11, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6392e373bb4b6799b1405310052500a8e9a94209e86a1b3c82331e6789ceaf83
|
|
| MD5 |
3480fedc322920e857667e4b2987435b
|
|
| BLAKE2b-256 |
d8e21c54450da284e7ce6407734e1ca42c027c58aceb8ab114048bf2f6b021aa
|
File details
Details for the file marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp310-cp310-manylinux1_x86_64.whl.
File metadata
- Download URL: marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp310-cp310-manylinux1_x86_64.whl
- Upload date:
- Size: 466.9 kB
- Tags: CPython 3.10
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
786a175ff8bb358097df12f9a444265d8416c62634bc5e40e957681056550a47
|
|
| MD5 |
2cc653c9d27a2a943134e5b9326afb35
|
|
| BLAKE2b-256 |
22e36375425b9446606fb096a3fad96a3ba4f227d6acd9a0951d5b936004ad3a
|
File details
Details for the file marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp310-cp310-macosx_14_0_arm64.whl.
File metadata
- Download URL: marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp310-cp310-macosx_14_0_arm64.whl
- Upload date:
- Size: 352.3 kB
- Tags: CPython 3.10, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5919b9325ef958a6ef1836170b563aa218f1a243160c3db42546133ada4235f3
|
|
| MD5 |
75d1a2ef4dc26040a3aefaa83465d427
|
|
| BLAKE2b-256 |
b0b19b6fd29e84f5d17ffc62da40ea5fbe864e5545cbbab098d0fb9a56b6581a
|