Python inverse kinematics based on Pinocchio
APACHE-2.0 License
This major release adds Control Barrier Functions developed by @domrachev03 and @simeon-ned 👍 Examples of what we can do with barriers include:
https://github.com/domrachev03/pink/assets/28687492/d64163b6-399f-4bbf-ac50-1135fa69c2da
Another API-breaking change to the library is that limits are now optional and can be extended (for instance with the new acceleration limit) or disabled. New limits and tasks include:
AccelerationLimit
ComTask
for center-of-mass tracking (thanks to @simeon-ned)LowAccelerationTask
for smoother velocities.Check out the full changelog below for other changes and fixes. May the Motion be with you!
limits
argument to build_ik
and solve_ik
check_limits
method now includes an optional safety_break
argument to control whether execution should stop on exception.solve_ik
function now includes the safety_break
that is forwarded to check_limits
.Barrier
PositionBarrier
BodySphericalBarrier
SelfCollisionBarrier
PositionBarrier
BodySphericalBarrier
AccelerationLimit
ComTask
for center-of-mass tracking (thanks to @simeon-ned)LowAccelerationTask
for smoother velocities.lm_damping
parameter from DampingTask where it wasn't usedPublished by stephane-caron 7 months ago
This release adds the RelativeFrameTask
developed with @ymontmarin 👍 This new task is a generalization of the frame task that accepts targets with respect to any robot frame. For example:
https://github.com/stephane-caron/pink/assets/1189580/f349bb55-c7f6-4074-a8bf-0b86a5693098
stretch_relative_target.py
example)stretch_world_target.py
example)This release also brings a few quality-of-use improvements to configurations and costs.
get_transform
in the Configuration classPublished by stephane-caron 8 months ago
This release brings a number of fixes and completes the renaming of the BodyTask to FrameTask (details below). It also distributes Pink on conda-forge, which is now the recommended way to install for best performance:
conda install -c conda-forge pink
gain
keyword argument to all task constructors where is makes sensepink
moduleBodyNotFound
exception to FrameNotFound
FrameTask.body
to FrameTask.frame
Published by stephane-caron 9 months ago
This release fixes a bug when handling configuration limits for models that contain unbounded revolute joints.
Published by stephane-caron over 1 year ago
This is the first major release of Pink, Python inverse kinematics for articulated robot models, based on Pinocchio. The main update since v0.11.0 is the definition of a proper linear holonomic task on tangent spaces, with accompanying documentation, by @ymontmarin. Thanks! 👍
API-wise, Levenberg-Marquardt damping is now defined in the base Task
class and can therefore be set in any task. This release drops support for Python 3.7, and brings a seasonal batch of new examples and bug fixes.
Published by stephane-caron over 1 year ago
This release upgrades the BodyTask
to a FrameTask
handling all kinds of frames defined in the robot description. It was contributed by @proyan, thanks! 😃
BodyTask
to FrameTask
Published by stephane-caron over 1 year ago
This release fixes handling of models with/without configuration limits and with/without velocity limits.
Limit
for configuration and velocity limitspink.limits
submoduleConfigurationLimit
classVelocityLimit
classPublished by stephane-caron over 1 year ago
This release adds the joint-coupling and linear-holonomic tasks contributed by @shbang91 👍 The tasks are unit tested and illustrated by a new humanoid example 💪
apply_configuration
into Configuration
constructorassume_configuration
into Configuration
constructorcompute_error
and compute_jacobian
Published by stephane-caron over 1 year ago
This release fixes the Jacobian of the body task, with a dedicated blog post to explain the fix. In short: we were using the frame Jacobian instead of the full task Jacobian (which includes a log-derivative). Using the frame Jacobian works fine in many use cases, but it can also fail drastically in weighted inverse kinematics. Example and details in the blog post 🗒️
Thanks to @aescande and @Gregwar for their help 👍
solve_ik
to the backend QP solvercompute_velocity_limits
now includes optionalsPublished by stephane-caron almost 2 years ago
This revision improves joint limit computations significantly, with fixes, new unit tests and examples on the side.
pink.Task
from top-level modulePublished by stephane-caron about 2 years ago
With this release, Pink handles more general joint types, including fixed or free flyer root joints, unbounded joints (called continuous
in URDF), etc. New examples showcase this on both arms 🦾 and legged 🦿 robots.
Under the hood, this release also improves on various points of the QP formulation (joint limits, posture task, ...) so that it works nicely with more solvers (e.g. CVXOPT), beyond quadprog and OSQP which were the two main solvers so far.
pink.utils
pink.models
to robot_descriptions
Published by stephane-caron over 2 years ago
This release brings documentation, full test coverage, and handles robot models installed from PyPI.
Also, it indulges in a project icon 😉
build_from_urdf
functions is now the path to the URDF filejvrc_description
and upkie_description
packagesPublished by stephane-caron over 2 years ago
This release adds proper handling of joint position and velocity limits.
Published by stephane-caron over 2 years ago
This pre-release adds the regularizing posture task and corresponding unit tests.
build_jvrc_model
is now build_from_urdf
Published by stephane-caron over 2 years ago
This is a first working version of the library with a humanoid example that can be run and tweaked. Keep in mind that 0.x versions mean the library is still under active development, with the goal that 1.0 is the first stable version. So, this is still the very beginning 😉