ARC-OPT / wbc

C++ library for optimization-based control of redundant robots
https://arc-opt.github.io/Documentation/
BSD 3-Clause "New" or "Revised" License
35 stars 13 forks source link

Tasks/constraints refactor + Reduced TSID formulation #40

Closed ibergonzani closed 2 years ago

ibergonzani commented 2 years ago

Same as #30

Refactor for tasks (previously called Constraints) and actual linear constraints.

Currently added linear constraint:

velocity: joints limits (velocity, position) contacts (xero vel)

acceleration(tsid): joint limits (acceleration, velocity, position, effort) contacts (zero acc) rigidbody dynamics effort limits (for TSID Reduced scene)

In addition to a vector of tasks, a scene has now a vector of vector of constraints Inside the scene update, they are updated automatically using a RobotModelPtr (update implementation inside constraint class, not scene)

since the joint limits constraints need the control loop time dt. this is passed to the scene through the costructor (default parameter to avoid break existing code).

At the moment all constraints are hardcoded inside of Scenes In future they might be passed through the configure method?

dmronga commented 2 years ago

Thanks for contributing. I will take a look once I am done with robot models

ibergonzani commented 2 years ago

Added TSID reduced (no torques in QP) scene

ibergonzani commented 2 years ago

Tests are working fine but scene benchmark fails often in the VelocitySceneQuadraticCost because of jointLimits. At times, Joint position of actuated joints seems to be outside of bounds with the hyrodyn_hybrid model. (in base branch the joints position is not enforced)