-
Notifications
You must be signed in to change notification settings - Fork 2
Description
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
- Base C3 code @Brian-Acosta
- Start from one of Will's branches/PR in dairlib
- Examples with a hand-coded LCS
- Unit tests that confirm that C3 runs without crashing
- Examples run C3 on specific current states, but do not include simulation or a Drake system
- 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)
- 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