Skip to main content

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 xd0 and xd1 objects in the scene, as long as you do it before the simulation starts.

https://github.com/mmmarinho/tro2022_adaptivecontrol/assets/46012516/2abe0b0b-6e48-46e9-9a86-061ba013b355

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

  1. Open the example scene, namely tro2022_adaptivecontrol_example/TRO2022_MarinhoAdorno_ReferenceScene.ttt on CoppeliaSim.
  2. 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_robot towards the ideal kinematic model defined by real_robot in 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

  1. Open the example scene, namely TRO2022_MarinhoAdorno_ReferenceScene.ttt on CoppeliaSim.
  2. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp313-cp313-macosx_14_0_arm64.whl (354.8 kB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp312-cp312-macosx_14_0_arm64.whl (354.7 kB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp311-cp311-macosx_14_0_arm64.whl (353.6 kB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp310-cp310-macosx_14_0_arm64.whl (352.3 kB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

File details

Details for the file marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp313-cp313-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp313-cp313-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 f80b2c56190f935c2634025fb330bdb8a9f22029103cb65917e4d426c53cffd7
MD5 676396c834752a136217e0efbd66058a
BLAKE2b-256 1d4322a6922afc4d37b1e0170fa392aff31a2108248f914453e8a9a2dfa38e87

See more details on using hashes here.

File details

Details for the file marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0a15601dd7a871663453ddd974c968f8e6d73cc8d89941f13da41b794aa3bc05
MD5 4355437e074b4eaef9a1288f04586e6e
BLAKE2b-256 707407ffa75cef2081208667b99ba0a7c2b896f9a4792690ccc663310bb0d09b

See more details on using hashes here.

File details

Details for the file marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp312-cp312-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp312-cp312-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 028135e30c03038fcfc22a09770ab74eb3a9c81e4e13296afc350cb55566c694
MD5 b9f488b42dbde0d31e38d0c44f6860fa
BLAKE2b-256 a10c4bb826399f3a5155c3c8af9bf6dd07d169c5f950cc31b4670a35338daa08

See more details on using hashes here.

File details

Details for the file marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 7b49aea7be61e512c2ec3f0627f5e49bebc3884d7165cd1a803d495c78ad5b04
MD5 b3a6c09d9437e071334298628fb03ea8
BLAKE2b-256 65f463679848bdd94fd2ed33b5cc9ae3cd5db9d403125e50e57ff5c010e6af5b

See more details on using hashes here.

File details

Details for the file marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp311-cp311-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp311-cp311-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 9bab71674003cc152f8422796a9aceea746dfa48e9119c79946153a0253d51c9
MD5 44262c688e193fa4b65085a22e4d0f11
BLAKE2b-256 38a487fcf85c3e58600b83c6c9ef6ff0ce13a1ce8251c06d8c77eef87cd70bb5

See more details on using hashes here.

File details

Details for the file marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 6392e373bb4b6799b1405310052500a8e9a94209e86a1b3c82331e6789ceaf83
MD5 3480fedc322920e857667e4b2987435b
BLAKE2b-256 d8e21c54450da284e7ce6407734e1ca42c027c58aceb8ab114048bf2f6b021aa

See more details on using hashes here.

File details

Details for the file marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp310-cp310-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp310-cp310-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 786a175ff8bb358097df12f9a444265d8416c62634bc5e40e957681056550a47
MD5 2cc653c9d27a2a943134e5b9326afb35
BLAKE2b-256 22e36375425b9446606fb096a3fad96a3ba4f227d6acd9a0951d5b936004ad3a

See more details on using hashes here.

File details

Details for the file marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-0.0.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 5919b9325ef958a6ef1836170b563aa218f1a243160c3db42546133ada4235f3
MD5 75d1a2ef4dc26040a3aefaa83465d427
BLAKE2b-256 b0b19b6fd29e84f5d17ffc62da40ea5fbe864e5545cbbab098d0fb9a56b6581a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page