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:
- Get ROS (actually anything that installs
urdfdom_py
/urdf_parser_py
will do). - Get CasADi (e.g.
pip install casadi
). - Run
pip install --user .
in the folder.
Without ROS:
- Change the
urdfdom-py
tourdf-parser-py
inrequirements.txt
(line 3) and insetup.py
(line 20). - Get CasADi (e.g.
pip install casadi
). - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for urdf2casadi-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e55cffec658b22f0ee2e4e636c3a1b08306bc0f4b01586a1e733a88b057a5f0 |
|
MD5 | 76c5cdbc89539f9765e130edd1bca4d7 |
|
BLAKE2b-256 | a9673698c55507e5270b4fc593341166178c05ea142b98192624a7409447a014 |