Skip to main content

Module for finding casadi functions of forward kinematics and dynamics of a URDF chain.

Project description

URDF2CASADI

A module for generating the forward kinematics of a robot from a URDF. It can generate the forward kinematics represented as a dual quaternion or a transformation matrix. urdf2casadi works both in python 2 and 3, and any platform that supports CasADi and urdf_parser_py.

Other libraries

This module is implemented in Python, and was intended to explore a CasADi approach to forward kinematics and rigid body dynamics algorithms based on URDFs. For a more real-time control applicable alternative, consider the Pinocchio library.

Installation

With ROS:

  1. Get ROS (actually anything that installs urdfdom_py/urdf_parser_py will do).
  2. Get CasADi (e.g. pip install casadi).
  3. Run pip install --user . in the folder.

Without ROS:

  1. Change the urdfdom-py to urdf-parser-py in requirements.txt (line 3) and in setup.py (line 20).
  2. Get CasADi (e.g. pip install casadi).
  3. Run pip install --user . in the folder (--user specifies that it is a local install).

Usage example

import casadi as cs
from urdf2casadi import urdfparser as u2c
urdf_path = "../urdf/ur5_mod.urdf"
root_link = "base_link"
end_link = "tool0"
robot_parser = u2c.URDFparser()
robot_parser.from_file(urdf_path)
# Also supports .from_server for ros parameter server, or .from_string if you have the URDF as a string.
fk_dict = robot_parser.get_forward_kinematics(root_link, end_link)
print(fk_dict.keys())
# should give ['q', 'upper', 'lower', 'dual_quaternion_fk', 'joint_names', 'T_fk', 'joint_list', 'quaternion_fk']
forward_kinematics = fk_dict["T_fk"]
print(forward_kinematics([0.3, 0.3, 0.3, 0., 0.3, 0.7]))

Citation

The results were published in "Robot Dynamics with URDF & CasADi" at ICCMA 2019. Preprint]

@inproceedings{urdf2casadi,
  title={Robot Dynamics with URDF \& CasADi},
  author={Johannessen, Lill Maria Gjerde and Arbo, Mathias Hauan and Gravdahl, Jan Tommy},
  booktitle={2019 7th International Conference on Control, Mechatronics and Automation (ICCMA)},
  year={2019},
  organization={IEEE}
}

Todo/Implementation status

  • Forward kinematics with SE(3) matrix
  • Forward kinematics of rotation with quaternion
  • Dual Quaternions as alternative to SE(3) matrices
  • Dynamics from links and their inertia tags
  • Denavit Hartenberg?
  • Move numerical to a test folder
  • Examples

Project details


Download files

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

Source Distribution

urdf2casadi-1.0.0.tar.gz (13.5 kB view details)

Uploaded Source

Built Distribution

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

urdf2casadi-1.0.0-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

File details

Details for the file urdf2casadi-1.0.0.tar.gz.

File metadata

  • Download URL: urdf2casadi-1.0.0.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for urdf2casadi-1.0.0.tar.gz
Algorithm Hash digest
SHA256 859550a2067e3227abffee91636a4ec01a600fd4387ea32cbf731612f4d6ef0c
MD5 34a606cf692edeea09c95820708ee2e6
BLAKE2b-256 05b9764dae8b4a90003d139bc33ff705b373fb2c4e827f9935abd3405bee7c3f

See more details on using hashes here.

File details

Details for the file urdf2casadi-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: urdf2casadi-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 13.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for urdf2casadi-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9e55cffec658b22f0ee2e4e636c3a1b08306bc0f4b01586a1e733a88b057a5f0
MD5 76c5cdbc89539f9765e130edd1bca4d7
BLAKE2b-256 a9673698c55507e5270b4fc593341166178c05ea142b98192624a7409447a014

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