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-25.5.4-cp313-cp313-macosx_14_0_arm64.whl (550.3 kB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

marinholab_papers_tro2022_adaptivecontrol-25.5.4-cp312-cp312-macosx_14_0_arm64.whl (550.2 kB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

marinholab_papers_tro2022_adaptivecontrol-25.5.4-cp311-cp311-macosx_14_0_arm64.whl (549.4 kB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

marinholab_papers_tro2022_adaptivecontrol-25.5.4-cp310-cp310-macosx_14_0_arm64.whl (548.2 kB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

marinholab_papers_tro2022_adaptivecontrol-25.5.4-cp39-cp39-macosx_14_0_arm64.whl (548.3 kB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

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

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-25.5.4-cp313-cp313-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 1c0e92cf850fec2880777fa5d4b7322b69982df7f047d26042d68e1752cd2cf4
MD5 bfbe230e021652706d5ea41e0ed1c962
BLAKE2b-256 6c776fcab2797f8644fa9321809c845f2eb8ca1949dbda4c4dc6472447efb290

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-25.5.4-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0e4c1b100dca33c152919fa9ae03c647fbd02c271731a47ab47bee48433ebad6
MD5 b93afa1f4fadffea4f25e4dc2ab63e6f
BLAKE2b-256 ce89e8dad52d2ed608665e8219e9d3e13c25056113649d2650d22671a8fff131

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-25.5.4-cp312-cp312-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 6506c708a34c81c7cd972fd440e84068885d0128e1a707f7d21c294bdd0ebf62
MD5 d98fdb275728cda74c14007daf9b74e8
BLAKE2b-256 eb5e922c7eb6d7230381b8211aae8ceeffa4d86e865b0e0799cb1260447ec829

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-25.5.4-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 aa26f80ab6c1f455105c2b75f7a6deae9d6dc9c694c936419377d5328713c2a6
MD5 924bf72490c87c32136b5a718bccf201
BLAKE2b-256 e7abf33bc5e024e54f3568ab515d0f41f3572f5e6dcbed9ae075e08184a1d1c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-25.5.4-cp311-cp311-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 5deb888ed395226ef4408a397f30ce85c26160d08d76fbcbec55f2cd4ffa4b89
MD5 9a779d3dd13674260b12e9269ef8921e
BLAKE2b-256 92e7481848fbc7604a65a6aaedd38e884656d485bd862e606d14877e9e4843f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-25.5.4-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 69fbbca0f01bdd1210592b349f4abd12d682f7c11abf922a37772371dcb2aec1
MD5 77a059067837ed4da86cc8cfeb5a7f43
BLAKE2b-256 048547ea754b1fc807d227cd4ac74de6a319bf87393727be79c1f14e9da34d8d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-25.5.4-cp310-cp310-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 e5acc71c4f2adfc033add806bf2d03efeb51682de753b854f8951f0752b0a3d3
MD5 d04907c20d9596f59da0e1429179099a
BLAKE2b-256 9c4406df38e28751855a828a0ba65ec48e8392728ada8fa825750008ab3c69bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-25.5.4-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 03eb3f7461822a55a8d64c99299ac19d3f2a8d7bd11493810000ff5d055d5fb4
MD5 6731655daae11e63fee5c318bfbd6c2a
BLAKE2b-256 27cff6e9b01a3158308a08b94f908642092cb3e058722b95454fa9d9984220f0

See more details on using hashes here.

File details

Details for the file marinholab_papers_tro2022_adaptivecontrol-25.5.4-cp39-cp39-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-25.5.4-cp39-cp39-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 1b577cdfb60cdd729fb1cad3807b88dfa307e8d3b2174b47f458ecd47036ae65
MD5 deaac63a3e4e9ae5b2bcd72450ff6f51
BLAKE2b-256 5127cdfbaea38e59041cb4f76fd6cd19fef1019ab6b868ad7f062fd033168cd4

See more details on using hashes here.

File details

Details for the file marinholab_papers_tro2022_adaptivecontrol-25.5.4-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-25.5.4-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 44193cad8bc590edea419236f57d3ff5d594b9d5c380cdc56ee8065bad4b4b84
MD5 1ce9c948e97f24cb7d7caafde6c3c816
BLAKE2b-256 c3b44991afe07a12e6afe27c6d3df148e51874e1981f60d38f1562348561c786

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