Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
983 commits
Select commit Hold shift + click to select a range
62704e4
working on very slightly more expressive workspace constraints
yangwill Mar 30, 2024
70cae27
task at different angle mostly works, workspace limits seem off still
yangwill Mar 31, 2024
5c2cbc5
options to add another object to franka examples
yangwill Mar 31, 2024
8a1fa88
working on a more flexible scene specification
yangwill Mar 31, 2024
6b333ba
separating scene to separate yaml
yangwill Mar 31, 2024
3e40ae3
specifying wall example
yangwill Mar 31, 2024
6d2e0ae
wall scene wroks
yangwill Mar 31, 2024
288e94e
allowing sim to be specified with a scene file as well
yangwill Apr 1, 2024
5277f65
working on tuning wall scene
yangwill Apr 1, 2024
b21634a
still tuning wall example
yangwill Apr 1, 2024
b87ee50
gains that somewhat work for wall example
yangwill Apr 1, 2024
401cfe3
reverting visualization scaling and small tweaks to fix rotated suppo…
yangwill Apr 2, 2024
33f2ca5
working on other scenes
yangwill Apr 2, 2024
26dd238
adding external force
yangwill Apr 3, 2024
6f7530e
fixing conflict on channel 11
yangwill Apr 3, 2024
8048e54
working on rotating with wall
yangwill Apr 3, 2024
5f37ad6
still working on rotating with wall
yangwill Apr 4, 2024
70453a2
working wall task
yangwill Apr 4, 2024
715f5db
commiting gains that kind of work on april7
yangwill Apr 7, 2024
2020479
minor gain changes for perturbation rejection
yangwill Apr 9, 2024
3d0e7ab
final working gains
yangwill Apr 10, 2024
9b843c6
visualization changes
yangwill Apr 11, 2024
45287a1
last changes from rebuttal
yangwill Apr 29, 2024
14b9776
Merge branch 'plate_balancing' of github.com:DAIRLab/dairlib into pla…
yangwill Apr 29, 2024
9fd76d3
bazel settings for new version of drake
yangwill Apr 29, 2024
507b2f6
changes for updating to drake, still need to resolve drake model paths
yangwill Apr 29, 2024
bb0dfe4
using new franka model path
yangwill Apr 29, 2024
a505c42
filtering out collision geometry that i previously removed in my prev…
yangwill Apr 29, 2024
30608ef
fixing some more model paths
yangwill Apr 29, 2024
42b96ad
scaling lambda only within c3 instead of in lcs factory
yangwill Apr 29, 2024
1f650ee
fixing bug in scaling visualization
yangwill Apr 29, 2024
2fdb93d
minor chagnes to scaling
yangwill Apr 30, 2024
7697f9f
outputting c3 debug information
yangwill May 2, 2024
e6bfc36
adding flag to publish object velocities
yangwill May 2, 2024
6dcc3c4
adding bridge to use drake lcm driver
yangwill May 3, 2024
f2bb7ae
minor cleanup
yangwill May 6, 2024
47b1d85
minor formatting and clean up along with dynamic camera tracking
yangwill May 7, 2024
d015b51
adding example procman script and README for franka examples
yangwill May 8, 2024
1592909
working on robust formulation anitescu, need to verify activation
yangwill May 8, 2024
f9e6ae1
robust formulation runs but doesn't work
yangwill May 10, 2024
7a3ee46
trying to tune for stewart and trinkle
yangwill May 13, 2024
fe0e018
updating procman script
yangwill May 14, 2024
63cc66a
fixing bug in visualizing stewart and trinkle forces
yangwill May 15, 2024
cd5ea5b
minor renaming for visualizing force code
yangwill May 15, 2024
9196ed8
updating readme
yangwill May 15, 2024
be5fec7
only using robust projection on the last admm iteration
yangwill May 16, 2024
52496c5
reasonably working params on fast computer
yangwill May 16, 2024
2205b12
fixing constraint construction
yangwill May 16, 2024
2a1e45b
finally propering visualizing stewart and trinkle forces
yangwill May 16, 2024
2f70695
minor fixes
yangwill May 16, 2024
62b4b56
still working on getting framework to be more reliable
yangwill May 22, 2024
8850d56
cleaning up code and debugging anitescu
yangwill May 27, 2024
66e3a76
trying init state constraint in projection step
yangwill May 27, 2024
2e92c6c
cleaning up initial state constraint in projection, and robust constr…
yangwill May 28, 2024
d3908a4
working on robust formulation
yangwill May 28, 2024
f2ff8ed
updating to work with drake lcm driver
yangwill Jun 5, 2024
7cf1cda
updaing visualization
yangwill Jun 5, 2024
938a815
cleaning up code
yangwill Jun 5, 2024
82131d0
updating franka hardware procman
yangwill Jun 6, 2024
2a76134
updating franka readme with new hardware instructions for 22.04
yangwill Jun 6, 2024
7f31546
working on simple example
yangwill Jun 10, 2024
2330539
minor refactoring
yangwill Jun 11, 2024
570e392
moving c3 controller to separate folder
yangwill Jun 11, 2024
f6c84b9
playing with visualization
yangwill Jun 14, 2024
4bebe5b
renaming and adding comments
yangwill Jun 14, 2024
2fe13d7
successfully bound lcs factory, need to update simple model
yangwill Jun 15, 2024
148bc2e
simple python example is running but doesn't work
yangwill Jun 16, 2024
2ea7227
fixing planar lcs, gains work but are not convincing
yangwill Jun 20, 2024
bda5d64
working but not great example
yangwill Jun 20, 2024
44f28ee
debugging consensus const
yangwill Jun 20, 2024
831cdbf
reexamining planar box example because sdf links have default mass of 1
yangwill Jun 21, 2024
3dbad2d
planar box results still don't make sense
yangwill Jun 21, 2024
5d86320
Update Drake version to enable building of branch (#369)
sharanyashastry May 20, 2025
df15fe6
Expose Franka systems for use in other examples, e.g. future sampling…
sharanyashastry May 21, 2025
4af86ae
Quaternion error hessian (#372)
ebianchi May 22, 2025
d12eb6d
First sampling C3 example: jack (#370)
sharanyashastry Jun 27, 2025
3f50df0
Update Drake version to 1.39 (#378)
mposa Jun 28, 2025
05d1aec
Fixes to bazel build files (#381)
mposa Jul 2, 2025
1ccb1a6
OSQP fix after Drake (and OSQP) upgrade (#383)
ebianchi Jul 2, 2025
62ea631
Update to Drake 1.42 (#382)
mposa Jul 3, 2025
fae4ba2
Second sampling C3 example: push T (#384)
ebianchi Jul 3, 2025
22bdee6
Add README for sampling C3 documentation
ebianchi Jul 3, 2025
888b992
Create new 'anything' demo; currently not working since sampling uses…
ebianchi Jul 3, 2025
d49c7ae
WIP: merging features from push_everything into push_anything
cuie23 Jul 3, 2025
1ec57a7
Resolve sphere-mesh contacts with non-convex meshes without convexifying
ebianchi Jul 3, 2025
657e376
Minor parameter update for more obvious sampling inside/outside frame…
ebianchi Jul 3, 2025
8d4b0a0
Finished merging push_everything into push_anything
cuie23 Jul 7, 2025
8a2b325
general cleanup
cuie23 Jul 7, 2025
5dce02b
Fix intended checks for resolving contact pairs and maintaining sampl…
ebianchi Jul 8, 2025
a0c0356
Use correct number of contacts for push-anything demo
ebianchi Jul 8, 2025
534f7b3
Add parameters for different contact pair configurations
ebianchi Jul 8, 2025
2e4ee92
Remove unnecessary yaml parameters for anything demo
ebianchi Jul 8, 2025
c5cfd34
(test) adding objects to sim
cuie23 Jul 9, 2025
70da78f
fixing full script
siddhantmody Jul 10, 2025
26374d2
multi object file add to plant
cuie23 Jul 10, 2025
493931a
controller cleanup
siddhantmody Jul 10, 2025
398ba70
Merge branch 'push_anything' into push_anything_merge
ebianchi Jul 10, 2025
0a8d913
implemented pr revision changes
siddhantmody Jul 10, 2025
011e251
Merge branch 'push_anything_merge' of https://github.com/DAIRLab/dair…
siddhantmody Jul 10, 2025
aee5570
multi-object helper function support
cuie23 Jul 10, 2025
4652579
WIP reindexing to support multi-object
cuie23 Jul 10, 2025
8bad2dc
added the rest of the PR 388 change requests
siddhantmody Jul 11, 2025
4c665e2
WIP support for multi-object
cuie23 Jul 11, 2025
e835cda
Implemented second round of changes for PR 388
siddhantmody Jul 11, 2025
3d1cff6
Added multi-object support to goal_gen/visualizer/kinematics, WIP fra…
cuie23 Jul 11, 2025
d52cf16
Added multi-object contact pairs
cuie23 Jul 11, 2025
fbf56d6
Process of multi yaml rewriting
siddhantmody Jul 11, 2025
ffedc18
Integrating Sid and Eric's changes
siddhantmody Jul 11, 2025
8f2d44e
WIP fixing controller
cuie23 Jul 14, 2025
ad93fa5
Changed calccost and franka_sim for multi object
siddhantmody Jul 14, 2025
5eb267e
Merge Eric and Sid's changes
siddhantmody Jul 14, 2025
80ee18d
fixing some errors for Eric
siddhantmody Jul 14, 2025
ce9b575
bug fixing
cuie23 Jul 14, 2025
cc84a2e
More bug fixes
cuie23 Jul 14, 2025
e38b013
Fixing sampling
cuie23 Jul 15, 2025
006e028
Merge branch 'push_anything_dev' of https://github.com/DAIRLab/dairli…
siddhantmody Jul 15, 2025
10dc8ff
merging a working version of push_anything_merge onto push_anything_dev
siddhantmody Jul 15, 2025
c139e78
fixed visualizer port errors
siddhantmody Jul 15, 2025
bae54cb
bug fixing
cuie23 Jul 15, 2025
fb7714a
Merging Sid and Eric's changes
cuie23 Jul 15, 2025
a6f5a60
debugging
cuie23 Jul 16, 2025
cb14fd5
bug fixes
cuie23 Jul 16, 2025
c17793c
bug fixing
cuie23 Jul 17, 2025
84493a2
Controller doesn't segfault
cuie23 Jul 17, 2025
75837b0
small changes to visualizer
cuie23 Jul 17, 2025
0c66357
Successfully runs with multiple objects, does not achieve goals
cuie23 Jul 17, 2025
ec8a188
WIP adding c3 plan to visualizer
cuie23 Jul 21, 2025
c6e90a8
Visuzlizer doesn't crash
cuie23 Jul 21, 2025
5d0b668
Fixed visualizer plans
cuie23 Jul 21, 2025
fbb899e
Fixed target visualization
cuie23 Jul 21, 2025
af1af67
Initial "push anything" feature implementations for single object (#388)
siddhantmody Jul 22, 2025
2515613
Minor formatting bug fixes
ebianchi Jul 22, 2025
a888751
Added higher resolution dt for cost + fixed target generation
cuie23 Jul 22, 2025
a9e8ca3
Param tuning
cuie23 Jul 22, 2025
21f4cf5
Mostly working, fixed cost lcs thing
cuie23 Jul 23, 2025
f11de37
Working multi-object
cuie23 Jul 24, 2025
880cbbf
WIP implementing smart ee orientation
cuie23 Jul 30, 2025
bac53cc
Added adaptive ee orientation
cuie23 Jul 31, 2025
6b41805
Added walls
cuie23 Aug 1, 2025
127b5e9
Bug fixing
cuie23 Aug 1, 2025
e984f6b
Update for HW experiments; tested on push_t demo (not anything demo)
ebianchi Aug 2, 2025
64ca222
Integrate new C3 algorithm
xuanhien070594 Jul 11, 2025
ed4141c
Tune new C3 parameters
xuanhien070594 Jul 14, 2025
0782f87
Fix bug that wrongly computes the size of z and delta vectors.
xuanhien070594 Jul 14, 2025
269715e
Remove unnecessary use of epsilon in new c3 projection step; update l…
xuanhien070594 Jul 15, 2025
ce275f6
Add log directory to .gitignore to prevent logging files from being t…
xuanhien070594 Jul 15, 2025
a94e501
Minor changes
xuanhien070594 Jul 15, 2025
c6bff3c
Add documentation and address comments
xuanhien070594 Jul 16, 2025
a57ef02
Refactor C3 solver structure:
xuanhien070594 Jul 25, 2025
ab6bdff
Update C3 solver implementation:
xuanhien070594 Jul 28, 2025
234e216
Clean up codes
xuanhien070594 Jul 28, 2025
09f1c2e
Replace all NEXTGEN name by C3+
xuanhien070594 Jul 28, 2025
66b912c
Minor changes
xuanhien070594 Jul 28, 2025
c9d580e
Add C3+ parameters to jacktoy and push-anything examples
xuanhien070594 Jul 29, 2025
1c0c26e
Add missing placeholders in sampling_c3_options.yaml of push-anything…
xuanhien070594 Jul 29, 2025
3221c2d
Change class name BaseC3 to C3Base
xuanhien070594 Aug 1, 2025
469dd67
Remove unnecessary small functions and remove obsolete SolveRobustSin…
xuanhien070594 Aug 1, 2025
5297841
Modify C3Base constructor to accept z_size and add overloaded constru…
xuanhien070594 Aug 1, 2025
fc33212
Use fully vectorized code in c3plus projection step
xuanhien070594 Aug 3, 2025
71da393
Throw error if any weights of the cost matrix U are negative.
xuanhien070594 Aug 4, 2025
779a1e4
Merge branch 'working_multi_object' into hien/c3plus_multi_object
xuanhien070594 Aug 4, 2025
a200b17
Retune C3+ for multi-object task
xuanhien070594 Aug 4, 2025
b3ceb67
Added new sampling/target generation logic
cuie23 Aug 4, 2025
b49f42a
Added xy position goal param
cuie23 Aug 5, 2025
c3d49ff
Merge branch 'hien/c3plus_multi_object' into push_anything_dev
cuie23 Aug 5, 2025
b61248b
Single object with walls, decent tuning
cuie23 Aug 6, 2025
e76a09e
Multi-object tuned
cuie23 Aug 7, 2025
5e09bce
WIP 4 objects with walls tuning
cuie23 Aug 7, 2025
8db31fb
Tuned 2 object no walls
cuie23 Aug 7, 2025
69668ba
Merge branch 'push_anything_dev_temp' into push_anything_dev
cuie23 Aug 7, 2025
1eb3adf
Time vector patch + PD control smoothing
cuie23 Aug 8, 2025
2caddad
Fixed force constraints in controller
cuie23 Aug 8, 2025
36fe51f
Preliminary single coarse T tuning on fast computer
xuanhien070594 Aug 11, 2025
81275a1
coarse bundlesdf T tuned, 20 goals in 11 mins
xuanhien070594 Aug 12, 2025
9925333
Cleaning up yaml pipeline, decompose controller sdf into convex pieces
cuie23 Aug 12, 2025
99a8aba
Single object tuned, fast lcp solver
cuie23 Aug 12, 2025
12c0204
slight target generation tweaks for multi-object
cuie23 Aug 12, 2025
1e4098d
ICRA tuned
cuie23 Aug 13, 2025
3f141d4
finish fixing the planar contact feature
Aug 13, 2025
afd7d61
make some changes to planar contact feature
Aug 14, 2025
ffcfbc2
delete unnecessary changes
haorany8 Aug 14, 2025
09807c6
fix unnecessary changes.
haorany8 Aug 14, 2025
5f8c96f
fix unnecessary changes
haorany8 Aug 14, 2025
5d44cc5
fix unnecessary changes
haorany8 Aug 14, 2025
455e68e
fix unnecessary changes
haorany8 Aug 14, 2025
592c1d2
delete print
haorany8 Aug 14, 2025
361ec28
fix unnecessary changes
haorany8 Aug 14, 2025
b9afb03
fix unnecessary changes
haorany8 Aug 14, 2025
493fe08
fix unnecessary changes
haorany8 Aug 14, 2025
31bf066
fix unnecessary changes
haorany8 Aug 14, 2025
4121e2d
small change
haorany8 Aug 14, 2025
76f6d82
Single object tuned on hardware
cuie23 Aug 14, 2025
f1bdb1c
small change
haorany8 Aug 14, 2025
93b3507
coarse bundlesdf T tuned on hardware
cuie23 Aug 15, 2025
63385f4
fix some problems
Aug 15, 2025
a67cfb5
2 object tuned hardware
cuie23 Aug 15, 2025
d0781b0
fix small PR problem
haorany8 Aug 18, 2025
c5d42b6
Merge branch 'push_anything_dev' into push_anything_dev
haorany8 Aug 18, 2025
064d6b0
3-object tuned hardware
cuie23 Aug 19, 2025
b4f2dac
Merge branch 'push_anything_dev' into push_anything_dev
haorany8 Aug 20, 2025
35652d1
Ensure mesh files have normals
ebianchi Aug 22, 2025
cb1b5c1
Include LCM log processing script for generating plots and videos
ebianchi Aug 22, 2025
53cac83
Add feature of making contact planar (#394)
haorany8 Aug 22, 2025
3dce9a5
Merge branch 'push_anything_dev' into bibit/push_anything_log_processing
ebianchi Aug 22, 2025
ed32717
Fix some compilation error in the last commit
xuanhien070594 Aug 22, 2025
52ab445
Define bin walls to match hardware setup
ebianchi Aug 22, 2025
02706ec
Implement more robust goal generation method for multiple objects
xuanhien070594 Aug 22, 2025
443f786
4-object tuned hardware
cuie23 Aug 25, 2025
e119fb7
Add two new letter C_compromise and bigger plus
xuanhien070594 Aug 25, 2025
bdddd7d
Do not write new wall urdfs with multiyaml rewrite (wall geometries a…
ebianchi Aug 25, 2025
304f03d
Added sampling on top of walls, geomgeomcollider fix
cuie23 Aug 25, 2025
d26f795
Fix bugs in defining object-object and object-wall contact pairs (#396)
xuanhien070594 Aug 26, 2025
eaebe7c
Tune parameters for single object with walls
cuie23 Aug 27, 2025
5f2f515
Upgrade franka_joint_osc_controller to allow moving Franka to differe…
xuanhien070594 Aug 28, 2025
0272882
Scale back the lambda in zfin
xuanhien070594 Aug 28, 2025
ba0fa42
Tune parameters
xuanhien070594 Aug 28, 2025
2b019d0
Increase ADMM iterations for C3+
xuanhien070594 Aug 29, 2025
cf55ad5
Add new object models and change the end-effector velocity limits
cuie23 Aug 29, 2025
c338196
Impose large augmented cost on eta and lambda in the last qp
xuanhien070594 Aug 29, 2025
6a8ffe8
Keep track of previously attempted samples and avoid repeating if ine…
ebianchi Aug 29, 2025
16b8e94
Tuned parameters for C letter
cuie23 Aug 29, 2025
bdad8c6
Add glass box model
cuie23 Aug 30, 2025
b4b0a86
Merge branch 'hien/tune_single_object_c3plus' into push_anything_dev
cuie23 Aug 30, 2025
90837a0
Reduce the progress_enforced_over_n_loops
xuanhien070594 Aug 30, 2025
2d96457
Single object tuned parameters
cuie23 Sep 3, 2025
82deeec
Handle travel cost in sample buffer -- store without travel cost, com…
ebianchi Sep 4, 2025
d2c0324
2-object tuned parameters for hardware
cuie23 Sep 5, 2025
fc1735f
Add chicken broth and santa mug models
cuie23 Sep 5, 2025
dc3119c
Remove feature that weights the number of samples based on object area
cuie23 Sep 6, 2025
9980fe0
Tuned parameters for single object Sep 7, 2025
cuie23 Sep 7, 2025
8ae07c5
Tuned parameters for 4-objects Sep 13, 2025
cuie23 Sep 13, 2025
7551646
Updates to four object experiments
cuie23 Sep 13, 2025
c469738
Adaptively set first goal state per letter; add way to visualize init…
ebianchi Sep 19, 2025
03a0563
Have robot move out of the way after reaching a fixed goal
ebianchi Sep 22, 2025
fc74712
Robot moves out of the way decisively after reaching fixed goal (stay…
ebianchi Sep 23, 2025
613d0c5
Modify multiyaml_rewrite to automatically change the c3_options based…
xuanhien070594 Sep 23, 2025
d3d0cad
Minor fix to multiyaml_rewrite
xuanhien070594 Sep 23, 2025
4ab8254
Publish object names over LCM for better automation of object tracking
ebianchi Sep 23, 2025
a4f5f72
Merge branch 'push_anything_dev' of github.com:DAIRLab/dairlib into p…
ebianchi Sep 23, 2025
73bab2b
Fix error in quaternion error hessian (fraction inadvertently convert…
ebianchi Oct 17, 2025
a55c8a4
config: fix config for 4 objects
Meow404 Dec 16, 2025
90b2f9d
style: clang format a few files
Meow404 Dec 16, 2025
1d8e6e8
example(sampling-c3) : Add C3 as an external dependency for C3+ (#392)
Meow404 Feb 12, 2026
35efe8f
feat(sampling-c3): use c3 to resolve active contacts (#402)
Meow404 Feb 23, 2026
215e0b7
chore(push_anything_dev) : update drake v1.51.1 (#405)
Meow404 Apr 13, 2026
7035084
build(c3) : remove c3 stack and franka (waiter-task) example from dai…
Meow404 Apr 20, 2026
4b456f9
example(sampling-c3) : Use C3's new cost computation helpers (#404)
ebianchi Apr 23, 2026
4e3db64
Fix issues arising from rejecting previous repositioning target if be…
ebianchi May 22, 2026
55dda62
Adding instructions for running Push Anything in simulation (#407)
xuanhien070594 May 28, 2026
257e3ed
feat(osc): refactor - bring remaining changes from sampling_based_c3…
Meow404 Jun 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .bazelignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.cache
6 changes: 6 additions & 0 deletions .bazeliskrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Keep this version number in sync with the Ubuntu deb installed by
# drake/setup/ubuntu/source_distribution/install_bazel.sh.
#
# These files should also be updated:
# drake/tools/workspace/drake_visualizer/image/provision.sh
USE_BAZEL_VERSION=8.4.0
13 changes: 10 additions & 3 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ test --test_output=errors
test --test_summary=terse

# Use C++14.
build --cxxopt=-std=c++17
build --host_cxxopt=-std=c++17
build --cxxopt=-std=c++20
build --host_cxxopt=-std=c++20

# https://github.com/bazelbuild/bazel/issues/1164
build --action_env=CCACHE_DISABLE=1
Expand All @@ -52,7 +52,14 @@ build --action_env=LD_LIBRARY_PATH=
# customizations somehow.

# build with snopt
build --define=WITH_SNOPT=ON
build --define=WITH_GUROBI=ON
build --define=NO_CLARABEL=ON

build:omp --copt=-DEIGEN_DONT_PARALLELIZE
build:omp --copt=-fopenmp
build:omp --linkopt=-fopenmp

# use python3 by default
build --python_path=python3

common --enable_bzlmod
89 changes: 28 additions & 61 deletions .cirrus.yml
Original file line number Diff line number Diff line change
@@ -1,91 +1,58 @@
registry_config: ENCRYPTED[!88cf0d757d2f8b93dca9e57dc166b65ddedef6378e7ac12a91a022ab3fb28dd47b10d452dc5c53a68e144e6bdbae999b!]
build_jammy_task:
timeout_in: 120m
container:
dockerfile: install/jammy/Dockerfile
image: ghcr.io/dairlab/docker-dair/jammy-dair-base:v1.42.0-2
cpu: 8
memory: 24
memory: 24G
test_script:
- export CC=clang-12
- export CXX=clang++-12
- bazel build
--define=WITH_SNOPT=OFF
--local_ram_resources=24000
--local_cpu_resources=8
--local_resources=memory=24000
--local_resources=cpu=8
--jobs=8
--remote_http_cache=http://$CIRRUS_HTTP_CACHE_HOST
//...
- bazel test
--define=WITH_SNOPT=OFF
--local_ram_resources=24000
--local_cpu_resources=8
--local_resources=memory=24000
--local_resources=cpu=8
--remote_http_cache=http://$CIRRUS_HTTP_CACHE_HOST
//...
build_focal_task:

build_noble_task:
timeout_in: 120m
container:
dockerfile: install/focal/Dockerfile
image: ghcr.io/dairlab/docker-dair/noble-dair-base:v1.42.0-2
cpu: 8
memory: 24
memory: 24G
test_script:
- export CC=clang-12
- export CXX=clang++-12
- bazel build
--define=WITH_SNOPT=OFF
--local_ram_resources=24000
--local_cpu_resources=8
--local_resources=memory=24000
--local_resources=cpu=8
--jobs=8
--remote_http_cache=http://$CIRRUS_HTTP_CACHE_HOST
//...
- bazel test
--define=WITH_SNOPT=OFF
--local_ram_resources=24000
--local_cpu_resources=8
//...
build_with_ros_task:
timeout_in: 120m
container:
dockerfile: install/focal/ros/Dockerfile
cpu: 8
memory: 24
env:
DAIRLIB_WITH_ROS: ON
test_script:
- cd tools/workspace/ros
- ./compile_ros_workspace.sh
- cd ../../../
- bazel build
--define=WITH_SNOPT=OFF
--local_ram_resources=24000
--local_cpu_resources=8
--jobs=8
//...
- bazel test
--define=WITH_SNOPT=OFF
--local_ram_resources=24000
--local_cpu_resources=8
--jobs=8
--local_resources=memory=24000
--local_resources=cpu=8
--remote_http_cache=http://$CIRRUS_HTTP_CACHE_HOST
//...

drake_master_build_task:
timeout_in: 120m
container:
dockerfile: install/focal/ros/Dockerfile
image: ghcr.io/dairlab/docker-dair/jammy-dair-base:v1.42.0-2
cpu: 8
memory: 24
memory: 24G
allow_failures: true
env:
DAIRLIB_WITH_ROS: ON
test_script:
- git clone https://github.com/RobotLocomotion/drake.git ../drake
- export DAIRLIB_LOCAL_DRAKE_PATH=$PWD/../drake
- cd tools/workspace/ros
- ./compile_ros_workspace.sh
- cd ../../../
- bazel build
--define=WITH_SNOPT=OFF
--local_ram_resources=24000
--local_cpu_resources=8
--jobs=8
--override_module=drake=$PWD/../drake
--local_resources=memory=24000
--local_resources=cpu=8
//...
- bazel test
--define=WITH_SNOPT=OFF
--local_ram_resources=24000
--local_cpu_resources=8
--jobs=8
--override_module=drake=$PWD/../drake
--local_resources=memory=24000
--local_resources=cpu=8
//...
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@ attic/multibody/solver_log/
.vscode
*.csv
/examples/Cassie/saved_trajectories/
/MODULE.bazel.lock
11 changes: 0 additions & 11 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,3 @@

# This is an empty BUILD file, to ensure that the project's root directory is a
# bazel package.

load("@com_github_bazelbuild_buildtools//buildifier:def.bzl", "buildifier")

buildifier(
name = "buildifier",
)

load("@bazel_gazelle//:def.bzl", "gazelle")

# gazelle:prefix github.com/example/project
gazelle(name = "gazelle")
128 changes: 128 additions & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
## MODULE.bazel
module(
name = "dairlib"
)

drake_dep_repositories = use_extension(
"@drake//tools/workspace:default.bzl",
"drake_dep_repositories",
)

# If you don't want to support building on macOS, you may remove the next line.
# Note that it must appear prior to loading "rules_cc", per the documentation:
# https://github.com/bazelbuild/apple_support?tab=readme-ov-file#bazel-7-setup
bazel_dep(name = "apple_support", version = "2.3.0")

# Add the Bazel rules we need.
bazel_dep(name = "rules_java", version = "9.6.1")
bazel_dep(name = "rules_cc", version = "0.2.17")
bazel_dep(name = "rules_python", version = "1.9.0")
bazel_dep(name = "bazel_skylib", version = "1.9.0")
bazel_dep(name = "rules_foreign_cc", version = "0.15.1")
bazel_dep(name = "platforms", version = "1.0.0")
bazel_dep(name = "lcm", version = "1.5.2")
bazel_dep(name = "gflags", version = "2.2.2.bcr.1")
bazel_dep(name = "googletest", version = "1.17.0.bcr.2")

use_repo(
drake_dep_repositories,
"blas",
"drake_models",
"fmt",
"glib",
"lapack",
"meshcat",
"mosek",
"opencl",
"pybind11",
"snopt",
"spdlog",
"zlib",
"gurobi",
"eigen",
)

bazel_dep(name = "gazelle", version = "0.44.0")
bazel_dep(name = "osqp", version = "1.0.0.bcr.2")

# Use gurobi_cxx, which Drake deprecated
gurobi_extension = use_extension("@dairlib//tools/workspace/gurobi:repository.bzl", "gurobi_extension")
use_repo(gurobi_extension, "my_gurobi")

# Replace Drake's Gurobi repository with ours.
override_repo(
drake_dep_repositories,
gurobi = "my_gurobi",
)

# Here we introduce Drake as a module dependency, but note that Drake is not
# published to any Bazel registry. Below, we'll override it with a github
# source archive.
bazel_dep(name = "drake")

bazel_dep(name = "inekf")

# By default, this example always uses the latest Drake master branch.

# To use a local version of drake, use
# build --override_module=drake=/home/user/stuff/drake
# this will also work to override inekf

# You can also use DRAKE_COMMIT to choose a Drake release; e.g.:
DRAKE_VERSION = "v1.51.1"
DRAKE_CHECKSUM = "40cb4d0e3d378ba67c21aca8cc1396399774b333b12d0030f5fbe4ddff1dc786"

# Before changing the DRAKE_VERSION, temporarily uncomment the next line so that Bazel
# displays the suggested new value for the CHECKSUM.
# DRAKE_CHECKSUM = "0" * 64

# This declares the `@drake` module as a source code archive from github.
# See README.md for instructions to use a local path, instead.
archive_override(
module_name = "drake",
urls = [x.format(DRAKE_VERSION) for x in [
"https://github.com/RobotLocomotion/drake/archive/{}.tar.gz",
]],
sha256 = DRAKE_CHECKSUM,
strip_prefix = "drake-{}".format(DRAKE_VERSION.lstrip("v")),
)

bazel_dep(name = "c3")
git_override(
module_name = "c3",
remote = "https://github.com/DAIRLab/c3.git",
commit = "5c08cb2e14b1ab10e024cb46e8504970cffcd5ea"
)


INEKF_COMMIT = "297c308e50fa599af92ce3bd5f11d71e2bf8af69"
INEKF_CHECKSUM = "c5a056ce00e1625e52f5a71b1d5c202acd53c1a8c7bca33da458db1e4f3f2edf"


# Before changing the COMMIT, temporarily uncomment the next line so that Bazel
# displays the suggested new value for the CHECKSUM.
#INEKF_CHECKSUM = "0" * 64

# This declares the `@inekf` module as a source code archive from github.
archive_override(
module_name = "inekf",
urls = [x.format(INEKF_COMMIT) for x in [
"https://github.com/DAIRLab/invariant-ekf/archive/{}.tar.gz",
]],
sha256 = INEKF_CHECKSUM,
strip_prefix = "invariant-ekf-{}".format(INEKF_COMMIT),
)

# Use the host system /usr/bin/python3.
python_repository = use_repo_rule(
"@drake//tools/workspace/python:repository.bzl",
"python_repository",
)

python_repository(
name = "python",
linux_interpreter_path = "/usr/bin/python3",
requirements_flavor = "build",
)

register_toolchains("@python//:all")
19 changes: 5 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@
Warning! This is very much "development-level" code and is provided as-is. APIs are likely to be unstable and, while we hope for the documentation to be thorough and accurate, we make no guarantees.

## Current Continuous Integration Status
* `master` branch build and unit tests (Ubuntu 18.04): [![Build Status](https://api.cirrus-ci.com/github/DAIRLab/dairlib.svg?task=build&script=test)](https://cirrus-ci.com/github/DAIRLab/dairlib)
* `master` branch build and unit tests (Ubuntu 20.04): [![Build Status](https://api.cirrus-ci.com/github/DAIRLab/dairlib.svg?task=build_focal&script=test)](https://cirrus-ci.com/github/DAIRLab/dairlib)
* `master` branch build and unit tests (Ubuntu 20.04 with ROS): [![Build Status](https://api.cirrus-ci.com/github/DAIRLab/dairlib.svg?task=build_with_ros&script=test)](https://cirrus-ci.com/github/DAIRLab/dairlib)
* Experimental build against Drake's `master` branch: [![Build Status](https://api.cirrus-ci.com/github/DAIRLab/dairlib.svg?task=drake_master_build&script=test)](https://cirrus-ci.com/github/DAIRLab/dairlib)
* `main` branch build and unit tests (Ubuntu Jammy 22.04): [![Build Status](https://api.cirrus-ci.com/github/DAIRLab/dairlib.svg?task=build_jammy&script=test)](https://cirrus-ci.com/github/DAIRLab/dairlib)
* `main` branch build and unit tests (Ubuntu Focal 24.04): [![Build Status](https://api.cirrus-ci.com/github/DAIRLab/dairlib.svg?task=build_focal&script=test)](https://cirrus-ci.com/github/DAIRLab/dairlib)
* Experimental build against Drake's `master` branch (Jammy): [![Build Status](https://api.cirrus-ci.com/github/DAIRLab/dairlib.svg?task=drake_master_build&script=test)](https://cirrus-ci.com/github/DAIRLab/dairlib)
## Complete Build Instructions

### Download dairlib
Expand All @@ -29,21 +28,13 @@ There is no need to extract the tar.
The library is meant to be built with Drake (see http://drake.mit.edu/ for more details). There are two ways to use Drake within dairlib:

#### Option 1: use pegged revision (Note - These steps may need repeated if switching to a branch with a different pegged revision of drake).
The only specific action needed here is to install all of Drake's prerequisites. There are two choices for completing this step:

a) In `dairlib/install`, run the appropriate `install_prereqs_xxx.sh`. This is untested on mac, and has not been tested to get every dependency for a fresh install.

b) Download a source copy of drake, and install pre-requisites as described here: http://drake.mit.edu/from_source.html. Drake dependencies can change without notice. For full compatiability, you may need to checkout the drake commit which is pegged in WORKSPACE to install the correct dependencies. There is no need to build Drake itself. Proceed only until you have run the Drake setup script.

bazel will automatically download the pegged revision, specified in the WORKSPACE file. dairlib developers hope to keep this pegged revision current, and ensure that the pegged version will always work with a specific version of dairlib.
In `dairlib/install`, run the `install_prereqs_ubuntu.sh`. Our build process does not currently support MacOS, though it has in the past and likely will in the future.

This option is recommended for users who are not currently editing any source code in Drake itself.

#### Option 2: source install of Drake
Complete both steps (a) and (b) above. By running the drake install script after the dairlib install script, you are capturing any dependency changes between the pegged revision and the current Drake master, while still getting any aditional dairlib dependencies we may add. There is no need to build Drake. Next, to tell dairlib to use your local install, set the environment variable `DAIRLIB_LOCAL_DRAKE_PATH`, e.g.
```
export DAIRLIB_LOCAL_DRAKE_PATH=/home/user/my-workspace/drake
```
If you would like to use your own local install of Drake, likely because you are modifying it, when you build with Bazel you will need to use `bazel build --override_module=drake=/home/user/my-workspace/drake <package you are building>` (using the appropriate directory for your own install). There is no need to build Drake.

### IDE setup
JetBrains IDEs have worked well for us and are available for free to students. For C++ development using the CLion Bazel plugin, see https://drake.mit.edu/clion.html and replace `drake` with `dairlib` in the "Setting up Drake in CLion" section.
Expand Down
Loading