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

Uploaded CPython 3.13macOS 14.0+ ARM64

marinholab_papers_tro2022_adaptivecontrol-25.5.6-cp312-cp312-macosx_14_0_arm64.whl (358.9 kB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

marinholab_papers_tro2022_adaptivecontrol-25.5.6-cp311-cp311-macosx_14_0_arm64.whl (357.8 kB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

marinholab_papers_tro2022_adaptivecontrol-25.5.6-cp310-cp310-macosx_14_0_arm64.whl (356.5 kB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

File details

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

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-25.5.6-cp313-cp313-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 52c3aa87dc11a3a6cb476e5fdb8faf82cf6db50ce4289c858c42b2868d75e8b9
MD5 89a982894f902c2a5538dd8551b19266
BLAKE2b-256 8c67b2090f1e9d70de73639ed70c47a3c48bbd4da58f896c880962aabf35b9d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-25.5.6-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 319c03ec29e58ab19a2155b8e2ee01b8361d36ec1ca001b40b24e9cc76a8ade7
MD5 7cf6d633a55c1bbd05e8630525780641
BLAKE2b-256 28542d35119a7b5ba24449588ad2706124f599d534c1909ee19b750d383e218a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-25.5.6-cp312-cp312-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 fbaea85e3a33d94da486a02d935d1e6c9a6b99025ef75aa50dc76229614d353a
MD5 6860d588129b85f288820ac958cb5940
BLAKE2b-256 b5c826b101c87279d183019e508958d2cc74425e8caa4665bbf974f3dba3ff6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-25.5.6-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 c284cacf9152c85afd751184863a0e06ca18db98bc7b122c5d1e29fc119d8d23
MD5 9bd41337d19944e4c4a80c575a66e95e
BLAKE2b-256 84cafa278e30ad46967b272feceb5ebe93ec54d3aad0f06e4e6419bf9ecb03c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-25.5.6-cp311-cp311-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 422b933bad654d41768d23dbe160df9f85ebef24d2aeaa771d71cecabb6d5387
MD5 b312a3e5f0aec31066382eacff5e3d9e
BLAKE2b-256 0252b90e567facc09ecd3737286b39e1edffccaa730998b7bdca079aee368e07

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-25.5.6-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 84983771ded773d5cbf39ce2a87259cc0147f6d2d2e302c8788ca0c70c5e6322
MD5 d01c93ca7f809fb5a47f282190049d65
BLAKE2b-256 b11cd842ecfec7240369ec4996fe354b410d65e066d116f38c16199974a21b86

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-25.5.6-cp310-cp310-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 1169c8c5e713fa0a88abf4bd9dc2541f2713d6dd0db23d6e2246cadf5642eecd
MD5 9746dc751cc1a2396701af4da69fc90c
BLAKE2b-256 025052a1865a5125c6df1073c23ba1d58aa41255e7344f05888cc10d13059634

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-25.5.6-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0fa1b8ddc4d781e8c67ee85308fbe3dd1b49ad69253f6610dc8277e9997c689d
MD5 cf7c0e9d30add3252e2a16bd6848f922
BLAKE2b-256 581e30b563aec2e95251b0fd3d9ce2928fcb5fe755580604d277b2bba5c0a219

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for marinholab_papers_tro2022_adaptivecontrol-25.5.6-cp39-cp39-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 9a254df9cb476b435a0eab9f88c1d4c87c9d2ffb445844c8a0ff1530586bd411
MD5 bf7bbda57501197cd782404c08cae945
BLAKE2b-256 f4796126e9a340b085a9a9a464ebcb58f8996ed79bc040196ed922c402de150d

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