Skip to main content

The DARLi is a Python 3 library that supports both numerical and symbolical computations of open loop articulated robots provided urdf file.

Project description

Differential Articulated Robotics Library

The DARLi is a Python 3 library that supports both numerical and symbolical computations of open loop articulated robots provided urdf file.

In fact library is just a tiny layer around Pinocchio functions with input being CasADi symbols, this allow for AD capabilities, optimization and etc, as well as conventional numerical computations.

The backend is based on slightly modified version of casadi_kin_dyn but will be replaced with Pinocchio 3 when it will be released.

Installation

  1. To install into existing environment run:
pip3 install darli

For now the library is actively changing, so if you are one of contributors or want to keep track of recent changes without reinstalling use the develope mode:

pip3 install -e .
  1. In order to add darli dependency to your conda env look into example

Troubleshooting:

It may be the case that running the examples fails on the step of solving casadi problem. In this case you have to extend LD_LIBRARY_PATH of your current environment.

For conda users you can patch your environment by running the following command:

wget -O - https://raw.githubusercontent.com/lvjonok/cmeel-conda-patch/master/patch.sh | bash -s <conda env name>

For pip users you have to manually extend LD_LIBRARY_PATH by running the following command:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(python3 -m cmeel lib)

Note, that in both cases you have to restart your kernel/session/vscode or whatever you use to run python code.

Installation from source

  1. Clone the repository
git clone https://github.com/simeon-ned/darli
  1. Install using pip
pip3 install -e .
  1. You may install with [dev] option to install pre-commit. This library will ensure that your code is formatted the same way among all other developers:
pip3 install -e .[dev]
pre-commit install

Usage

The typical workflow as follows:

  • Build the urdf of your robot and create RobotModel instance
  • Add additional bodies and possibly contacts
  • Calculate the all necessary functions with ~.update_model() method
  • Access to casadi functions that are stored within RobotModel and use them either numerically or symbolically in other CasAdi empowered projects.

There are also banch of modules that facilitates work with given type of robots, i.e. manipulators, quadrupeds and bipeds.

The minimal example of using library:

from darli.backend import CasadiBackend
from darli.modeling import Robot
import numpy as np
import casadi as cs
from robot_descriptions import z1_description

# Initializing the RobotModel class
model = Robot(CasadiBackend(z1_description.URDF_PATH))
model.add_body({"end_effector": "link06"})

# Dynamics calculations
inertia = model.inertia
gravity_vector = model.gravity
coriolis = model.coriolis

# calling with CasAdi arguments
gravity_vector(cs.SX.sym("q", model.nq))
# calling with numpy arguments
gravity_vector(np.random.randn(model.nq))

nq = model.nq
# Body kinematics
model.body("end_effector").position
# Differential kinematics
model.body("end_effector").angular_velocity.local
# Adding contacts
model.body("end_effector").add_contact("wrench")

One may also use the prebuilded templates for some common robotics structures, i.e:

from darli.robots import biped

# Example for the bipedal robot
# foots are subject to wrench contact
from robot_descriptions import atlas_v4_description

biped_model = biped(
    Functional,
    CasadiBackend,
    atlas_v4_description.URDF_PATH,
    torso={"torso": "pelvis"},
    foots={
        "left_foot": "l_foot",
        "right_foot": "r_foot",
    },
)

biped_model.forward_dynamics
biped_model.body('torso').position
biped_model.body('torso').linear_velocity.world_aligned
biped_model.body('left_foot').contact

Please refer to dedicated example in ~/examples/01_models_and_robots to learn other capabilities of the library

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 Distribution

darli-0.2.8-py3-none-any.whl (31.4 kB view details)

Uploaded Python 3

File details

Details for the file darli-0.2.8-py3-none-any.whl.

File metadata

  • Download URL: darli-0.2.8-py3-none-any.whl
  • Upload date:
  • Size: 31.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for darli-0.2.8-py3-none-any.whl
Algorithm Hash digest
SHA256 f9fb64c60af06592a2ffbb31582d6b7749d112c675af606c304168c70e51ba8d
MD5 ce22c54f5bff3ac44f9c0058312aede7
BLAKE2b-256 5f8f648e57dd387128d14f684a9d7ca1b835e9e096aff3ecc2108c8302f0e0e3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page