Skip to content

Unify C3 code and examples #2

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
mposa opened this issue Jan 10, 2025 · 0 comments
Open

Unify C3 code and examples #2

mposa opened this issue Jan 10, 2025 · 0 comments

Comments

@mposa
Copy link
Contributor

mposa commented Jan 10, 2025

Per lab meeting discussion on 1/9, we have to goal of unifying the fragmented C3 code split across branches in dairlib. This issue summarizes the core aim of this transition, with the aim of completion of steps 1-3 by the end of the spring semester.

Repository structure

C3 Repository (this)

This repository will house the core C3 algorithm and the LCS factory methods which construct linear complementarity systems from a URDF. This will require dependency on Drake for RigidBodyDynamics, URDF parsing, and for Drake's MathematicalProgram code.

This repository will be as clean and lightweight as possible, suitable for public use without requiring everything in dairlib.

Dairlib

Most of the C3-related code in dairlib will ultimately end up in the C3 repository. Examples in dairlib which require the construction of abstractions and simple models (and the corresponding use of the OSC) will continue to existin dairlib, which will bring C3 in as a dependency.

Code requirements

  • All commits should be well-documented
  • Unit tests should be created as appropriate
  • This repository will require functioning continuous integration
  • All merges should include Python bindings and README updates
  • Code should be passed through Drake's clang autoformatter before merging

Core Commit Sequence

  1. Base C3 code @Brian-Acosta
  1. C3 controller system @ebianchi
  • Add the C3ControllerSystem which wraps C3 into a Drake System
  • Update the above example(s) w/LCS simulation, MeshcCat visualization, and plotting (all via Python)
  1. LCS Factory @xuanhien070594
  • Add LCS Factory classes which construct an LCS from a URDF (via MultibodyPlant) and a given state
  • Add cart-pole example (from URDF) in Python

Next steps

Following the three primary pull requests above, next steps include

  • Update installation process via Python wheel/pip
  • Add remaining examples:
    • Abstracted waiter example/ball rolling (C3)
    • Waiter, ball rolling in dairlib main w/OSC
  • Make sure that everyone's branches are updated to build on these changes
  • Add tutorial for new users
  • Restore and update Fast OSQP
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant