aurt

AU Robotics Toolbox (AURT)

https://github.com/into-cps-association/aurt

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.8%) to scientific vocabulary
Last synced: 11 months ago · JSON representation

Repository

AU Robotics Toolbox (AURT)

Basic Info
  • Host: GitHub
  • Owner: INTO-CPS-Association
  • License: other
  • Language: Python
  • Default Branch: master
  • Size: 289 MB
Statistics
  • Stars: 9
  • Watchers: 4
  • Forks: 6
  • Open Issues: 6
  • Releases: 1
Created about 5 years ago · Last pushed about 4 years ago
Metadata Files
Readme License Citation

README.md

Install and run api tests

Aarhus University Robotics Toolbox (AURT) Overview

Installation

To install the tool, type: pip install aurt or, if plotting and visualization features are needed, pip install aurt[vis]

Command Line Interface

The following shows the different use cases that aurt supports. In order to improve performance, the model is compiled in different stages, in a way that allows the user to try alternative joint dynamics models without having to re-create the full model, which is a computationally demanding procedure.

Compile Rigid Body Dynamics Model

aurt compile-rbd --mdh mdh.csv --out rigid_body_dynamics Reads the Modified Denavit-Hartenberg (MDH) parameters in file mdh.csv and outputs rigid-body dynamics model to file rigid_body_dynamics. The generated model does not include the joint dynamics. To visualize the kinematics of the robot, make sure the roboticstoolbox-python is installed, and add the argument --plot to the compile-rbd command.

MDH plot

Compile Robot Dynamics Model

aurt compile-rd --model-rbd rigid_body_dynamics --friction-torque-model square --friction-viscous-powers 2 1 4 --out robot_dynamics

Reads the rigid-body dynamics model created with the compile-rbd command, and generates the robot dynamics model, taking into account the joint dynamics configuration.

The friction configuration options are: - --friction-torque-model TYPE where TYPE in {none, square, absolute} are depicted in the figure below for, respectively, parts (a), (b), and (c).

The different possibilities for joint torque-dependent friction models

  • --friction-viscous-powers POWERS where POWERS is a set of integers having the format P1 P2 ... used to define the odd polynomial function in the angular velocity of any joint as

with the viscous coefficient of friction corresponding to the integer element of , if is even and otherwise.

Calibrate

aurt calibrate --model robot_dynamics --data measured_data.csv --gravity GX GY GZ --out-params calibrated_parameters.csv --out-calibrated-model rd_calibrated --plot

Reads; 1) the model produced by the compile-rd command, 2) the measured data in measured_data.csv, and 3) the gravity components GX GY GZ (0 0 -9.81 if the robot is "table mounted", i.e. having the axis of rotation for the first joint parallel to the direction of the gravitational acceleration) and writes; 1) the values of the calibrated base parameters to calibrated_parameters.csv and 2) the calibrated robot dynamics model to rd_calibrated. The gravity vector determines the orientation of the robot base for which the parameters will be calibrated. For showing the calibration plot, use the argument --plot.

The measured data should contain the following fields: - timestamp of type float, representing the number of seconds passed from a given reference point. - actual_q_j of type float, representing the jth joint angle, as measured by the robot controller, where j is an integer in {0, 1, ..., N}. - actual_current_j of type float, representing the jth joint current, as measured by the robot controller, where j is an integer in {0, 1, ..., N}.

Predict

aurt predict --model rd_calibrated --data measured_data.csv --gravity GX GY GZ --out predicted_output.csv

Reads; 1) the model produced by the calibrate command, 2) the measured data in measured_data.csv, and 3) the gravity components GX GY GZ, e.g. 0 0 -9.81 if the robot is "table mounted", i.e. having the axis of rotation for the first joint parallel to the direction of the gravitational acceleration, and writes the predicted output to predicted_output.csv.

The prediction fields are: - timestamp of type float, referring to the time of the measured data, as in Calibrate. - predicted_current_j of type float, representing the jth joint current as predicted by the model rd_calibrated, where j is an integer in {0, 1, ..., N}.

Calibrate and Validate

aurt calibrate-validate --model robot_dynamics --data measured_data.csv --gravity GX GY GZ --calibration-data-rel FRACTION --out-params calibrated_parameters.csv --out-calibrated-model rd_calibrated --out-prediction predicted_output.csv --plot Simultaneously calibrates and validates the robot dynamics model using the dataset measured_data.csv. The command implements the functionalities of the commands calibrate and predict. The data of measured_data.csv is separated into two consecutive parts 1) calibration data and 2) validation data. The calibration data has a duration of 0.1 < FRACTION < 0.9 times the duration of measured_data.csv while the remaining part of the data is used for validation.

Functional Mockup Units

It is possible to obtain Functional Mockup Units (FMUs) of a calibrated robot dynamics model (obtained using either of the commands aurt calibrate and aurt calibrate-validate). This work is based on UniFMU. There is a limit of 10 on the maximum allowed number of robot joints. Two types of FMUs are available distinguished by the model type, i.e. which quantities are considered as inputs and which are considered as outputs: 1. Forward Dynamics Model, sometimes referred to as Direct Dynamics Model (DDM). It is an Initial Value Problem (IVP) with input and outputs and , thus initial values and need be provided. If any joint torque-dependent friction model is present it will be removed, i.e. for each joint the friction , because otherwise it would not be possible to obtain the closed-form expression . 2. Inverse Dynamics Model (IDM). It's a closed-form expression with inputs , , and and output . The output with .

To generate an FMU: 1. Copy or move the calibrated robot dynamics model rd_calibrated.pickle to either of the folders ./fmu/forward_dynamics/resources/ or ./fmu/inverse_dynamics/resources/ depending on the desired FMU type. Note that the filename of the robot dynamics must be rd_calibrated.pickle. 2. Construct a zip archive containing all contents in either of the folders ./fmu/forward_dynamics/ or ./fmu/inverse_dynamics/ depending on the desired FMU type. 3. Change the file extension of the zip archive from .zip to .fmu.

Contributing

Development environment

To setup the development environment: 1. Open terminal in the current folder. 2. Install all packages for development: pip install -e .[vis]. 3. Unpack the datasets (see Dataset management) 4. To run all non live tests, open a command prompt or powershell in the repository root, and run python build.py --run-tests all-non-live. If you are using Linux, use python3 instead of python.

NOTE: Run tests before commits. If they don't pass, fix them before committing.

Publishing this package on pypi

  1. Update version in setup.py
  2. Make sure all tests, except the live ones, are passing.
  3. Delete folders dist build if they exist.
  4. Activate virtual environment.
  5. Install twine and wheel: pip install twine wheel
  6. Create a source distribution: python setup.py sdist
  7. Create the binary distribution: python setup.py bdist_wheel
  8. Upload distribution to PyPI: python -m twine upload dist/* (on Windows, use Command Prompt for this command)
  9. When asked for username and password, use the token and password created with your PyPI account.

Dataset management

Small dataset (< 100MB compressed)

If the data is small, then: - Each round of experiments should be placed in a folder with an informative name, inside the Dataset folder. - There should be a readme file in there explaining the steps to reproduce the experiment, parameters, etc... - The csv files should be 7ziped and committed. Do not commit the csv file. - There should be tests that use the data there.

Large Datasets (>= 100MB compressed)

If the data is large, then:

  • A "lite" version of the dataset should be in the dataset folder (following the same guidelines as before)
    • This is important to run the tests.
  • the larger version should be placed in the shared drive (see below).

There is a shared drive for large datasets. The shared drive Nat_robot-datasets has been created with Emil Madsen as owner.

| Shared Drive | Owner | E-mail | Department | | ------------------ | ---------------------- | ------------------------------------- | ----------------------------------------- | | Nat_robot-datasets | au504769 (Emil Madsen) | ema@ece.au.dk | Electrical and Computer Engineering (ECE) |

Read/write access is assigned to:

| Username | Name | E-mail | Department | | ------------ | ------------------------------ | --------------------------------------------------------- | ----------------------------------------- | | au602135 | Cludio ngelo Gonalves Gomes | claudio.gomes@ece.au.dk | Electrical and Computer Engineering (ECE) | | au522101 | Christian Mldrup Legaard | cml@ece.au.dk | Electrical and Computer Engineering (ECE) | | au513437 | Daniella Tola | dt@ece.au.dk | Electrical and Computer Engineering (ECE) |

For more information on access, self-service and management of files: https://medarbejdere.au.dk/en/administration/it/guides/datastorage/data-storage/

Owner

  • Name: The INTO-CPS Association
  • Login: INTO-CPS-Association
  • Kind: organization
  • Email: pgl@eng.au.dk

INtegrated TOol chain for model-based design of CPSs repositories

GitHub Events

Total
  • Watch event: 4
  • Fork event: 1
Last Year
  • Watch event: 4
  • Fork event: 1

Committers

Last synced: over 3 years ago

All Time
  • Total Commits: 233
  • Total Committers: 7
  • Avg Commits per committer: 33.286
  • Development Distribution Score (DDS): 0.588
Top Committers
Name Email Commits
EmilMadsen90 e****a@e****k 96
Emil Madsen 6****0@u****m 41
Claudio Gomes c****s@e****k 38
Daniella1 d****5@l****m 30
Claudio Gomes c****s@g****m 21
Daniella Tola d****t@t****k 5
Daniella Tola a****7@u****k 2
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 11 months ago

All Time
  • Total issues: 13
  • Total pull requests: 3
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 6 days
  • Total issue authors: 7
  • Total pull request authors: 2
  • Average comments per issue: 1.08
  • Average comments per pull request: 2.33
  • Merged pull requests: 3
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • clagms (5)
  • EmilMadsen90 (2)
  • Daniella1 (2)
  • hengrui1012 (1)
  • songhongxiang (1)
  • jack-sherman01 (1)
  • SoonwoongHwang (1)
Pull Request Authors
  • EmilMadsen90 (2)
  • clagms (1)
Top Labels
Issue Labels
bug (3) enhancement (2)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 24 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 4
  • Total maintainers: 3
pypi.org: aurt

A robot dynamic parameters calibration toolbox.

  • Versions: 4
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 24 Last month
Rankings
Dependent packages count: 10.1%
Forks count: 16.9%
Stargazers count: 21.6%
Average: 30.5%
Downloads: 36.7%
Dependent repos count: 67.2%
Last synced: 11 months ago