Skip to content

Commit 99cb601

Browse files
committed
rebase(push_anything_dev): fixes after rebase
1 parent 27bd710 commit 99cb601

File tree

7 files changed

+527
-551
lines changed

7 files changed

+527
-551
lines changed

MODULE.bazel

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,14 @@ archive_override(
9090
)
9191

9292
bazel_dep(name = "c3")
93-
git_override(
93+
# git_override(
94+
# module_name = "c3",
95+
# remote = "https://github.com/DAIRLab/c3.git",
96+
# commit = "2bd13495c3306cf7d53992e2495774d1ad454cca"
97+
# )
98+
local_path_override(
9499
module_name = "c3",
95-
remote = "https://github.com/DAIRLab/c3.git",
96-
commit = "2bd13495c3306cf7d53992e2495774d1ad454cca"
100+
path = "/home/stephen/Workspace/DAIR/c3"
97101
)
98102

99103
INEKF_COMMIT = "297c308e50fa599af92ce3bd5f11d71e2bf8af69"

examples/sampling_c3/anything/parameters/sampling_c3plus_options.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ publish_frequency: 0
1515
penalize_input_change: false # Penalize (u-u_prev) instead of u.
1616
num_friction_directions: 2
1717
spring_stiffness: 0.0 # Not used in C3+.
18+
final_augmented_cost_scaling: 1000.0
1819

1920
N: 7
2021
gamma: 1.0 # discount factor on MPC costs
@@ -155,6 +156,7 @@ u_eta_position_list: [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
155156
# use_predicted_x0_reset_mechanism
156157
dt: 0 # instead: planning_dt_pose, planning_dt_position
157158
# solve_dt: 0 # unused
159+
dt_cost: 0
158160
mu: [] # instead based on indexing into mu_per_pair_type
159161
num_contacts: 0 # instead based on summing index of resolve_contacts_to_lists
160162
# Instead for the below, index into their _list versions.

examples/sampling_c3/generate_samples.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -827,7 +827,7 @@ bool IsSampleWithinDistanceOfSurface(
827827
multibody::GeomGeomCollider collider(plant, pair);
828828

829829
auto [phi_i, J_i] = collider.EvalPolytope(
830-
*context, sampling_c3_options.num_friction_directions);
830+
*context, sampling_c3_options.num_friction_directions.value());
831831
distances.push_back(phi_i);
832832
}
833833

examples/sampling_c3/parameter_headers/sampling_c3_options.h

Lines changed: 51 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,8 @@ struct SamplingC3Options : C3Options, LCSFactoryOptions {
219219
a->Visit(DRAKE_NVP(workspace_limits));
220220
a->Visit(DRAKE_NVP(workspace_margins));
221221

222+
DRAKE_ASSERT(num_friction_directions.has_value());
223+
222224
// Set a few parameters based on num_contacts_index, differentiating between
223225
// for C3 solve and for C3 cost computation.
224226
resolve_contacts_to = resolve_contacts_to_lists[num_contacts_index];
@@ -239,12 +241,12 @@ struct SamplingC3Options : C3Options, LCSFactoryOptions {
239241
num_contacts_for_cost =
240242
std::accumulate(resolve_contacts_to_for_cost.begin(),
241243
resolve_contacts_to_for_cost.end(), 0);
242-
mu.clear();
244+
mu = std::vector<double>();
243245
for (size_t i = 0; i < mu_per_pair_type.size(); ++i) {
244246
int repeat = resolve_contacts_to_lists[num_contacts_index][i];
245-
mu.insert(mu.end(), repeat, mu_per_pair_type[i]);
247+
mu.value().insert(mu.value().end(), repeat, mu_per_pair_type[i]);
246248
}
247-
mu_for_cost.clear();
249+
mu_for_cost = std::vector<double>();
248250
for (size_t i = 0; i < mu_per_pair_type.size(); ++i) {
249251
int repeat = resolve_contacts_to_lists[num_contacts_index_for_cost][i];
250252
mu_for_cost.insert(mu_for_cost.end(), repeat, mu_per_pair_type[i]);
@@ -254,12 +256,12 @@ struct SamplingC3Options : C3Options, LCSFactoryOptions {
254256
std::tie(num_planar_contacts, num_friction_directions_per_contact) =
255257
ProcessPlanarContactInformation(resolve_as_planar_contacts_list,
256258
resolve_contacts_to,
257-
num_friction_directions);
259+
num_friction_directions.value());
258260
std::tie(num_planar_contacts_cost,
259261
num_friction_directions_per_contact_for_cost) =
260262
ProcessPlanarContactInformation(resolve_as_planar_contacts_list,
261263
resolve_contacts_to_for_cost,
262-
num_friction_directions);
264+
num_friction_directions.value());
263265

264266
for (size_t i = 0; i < num_contacts; ++i) {
265267
starting_index_per_contact_in_lambda_t_vector.push_back(
@@ -274,11 +276,11 @@ struct SamplingC3Options : C3Options, LCSFactoryOptions {
274276
num_friction_directions_per_contact_for_cost.begin() + i, 0));
275277
}
276278

277-
n_lambda_with_tangential =
278-
2 * num_friction_directions * (num_contacts - num_planar_contacts) +
279-
2 * num_planar_contacts;
279+
n_lambda_with_tangential = 2 * num_friction_directions.value() *
280+
(num_contacts - num_planar_contacts) +
281+
2 * num_planar_contacts;
280282
n_lambda_with_tangential_cost =
281-
2 * num_friction_directions *
283+
2 * num_friction_directions.value() *
282284
(num_contacts_for_cost - num_planar_contacts_cost) +
283285
2 * num_planar_contacts_cost;
284286

@@ -400,14 +402,16 @@ struct SamplingC3Options : C3Options, LCSFactoryOptions {
400402
c3_options->M = M;
401403
c3_options->qp_projection_alpha = qp_projection_alpha;
402404
c3_options->qp_projection_scaling = qp_projection_scaling;
405+
c3_options->final_augmented_cost_scaling = final_augmented_cost_scaling;
403406

404407
lcs_factory_options->contact_model = contact_model;
405408
lcs_factory_options->num_contacts = num_contacts;
406409
lcs_factory_options->num_friction_directions = num_friction_directions;
407410
lcs_factory_options->spring_stiffness = 0; // not used in sampling C3
408411
lcs_factory_options->mu = mu;
409412
lcs_factory_options->N = N;
410-
lcs_factory_options->num_friction_directions_per_contact = num_friction_directions_per_contact;
413+
lcs_factory_options->num_friction_directions_per_contact =
414+
num_friction_directions_per_contact;
411415
}
412416

413417
void SetPositionTrackingOptions(
@@ -446,6 +450,7 @@ struct SamplingC3Options : C3Options, LCSFactoryOptions {
446450
c3_options->u_eta = u_eta_position_list[num_contacts_index];
447451
}
448452

453+
MakePlanarLambdaCost(c3_options, lcs_factory_options);
449454
PopulateCostMatricesFromVectors(c3_options);
450455
}
451456

@@ -485,94 +490,61 @@ struct SamplingC3Options : C3Options, LCSFactoryOptions {
485490
c3_options->u_eta = u_eta_list[num_contacts_index];
486491
}
487492

488-
MakePlanarLambdaCost(c3_options);
493+
MakePlanarLambdaCost(c3_options, lcs_factory_options);
489494
PopulateCostMatricesFromVectors(c3_options);
490495
}
491496

492-
void SetPoseTrackingOptions(C3Options* options) const {
493-
options->dt = planning_dt_pose;
494-
options->dt_cost = planning_dt_pose / lcs_dt_resolution;
495-
options->w_Q = w_Q;
496-
options->w_R = w_R;
497-
options->w_G = w_G;
498-
options->w_U = w_U;
499-
options->q_vector = q_vector;
500-
options->r_vector = r_vector;
501-
502-
options->g_x = g_x;
503-
options->g_gamma = g_gamma_list[num_contacts_index];
504-
options->g_lambda_n = g_lambda_n_list[num_contacts_index];
505-
options->g_lambda_t = g_lambda_t_list[num_contacts_index];
506-
options->g_lambda = g_lambda_list[num_contacts_index];
507-
options->g_u = g_u;
508-
509-
options->u_x = u_x;
510-
options->u_gamma = u_gamma_list[num_contacts_index];
511-
options->u_lambda_n = u_lambda_n_list[num_contacts_index];
512-
options->u_lambda_t = u_lambda_t_list[num_contacts_index];
513-
options->u_lambda = u_lambda_list[num_contacts_index];
514-
options->u_u = u_u;
515-
516-
if (options->projection_type == "C3+") {
517-
options->g_eta_slack = g_eta_slack_list[num_contacts_index];
518-
options->g_eta_n = g_eta_n_list[num_contacts_index];
519-
options->g_eta_t = g_eta_t_list[num_contacts_index];
520-
options->g_eta = g_eta_list[num_contacts_index];
521-
options->u_eta_slack = u_eta_slack_list[num_contacts_index];
522-
options->u_eta_n = u_eta_n_list[num_contacts_index];
523-
options->u_eta_t = u_eta_t_list[num_contacts_index];
524-
options->u_eta = u_eta_list[num_contacts_index];
525-
}
526-
MakePlanarLambdaCost(options);
527-
PopulateCostMatricesFromVectors(options);
528-
}
529-
530497
// Convert lambda weights to the planar form:
531-
void MakePlanarLambdaCost(C3Options* options) const {
498+
void MakePlanarLambdaCost(C3Options* c3_options,
499+
LCSFactoryOptions* lcs_factory_options) const {
532500
int offset = 0;
533501
for (size_t i = 0; i < resolve_contacts_to_lists[num_contacts_index].size();
534502
++i) {
535503
if (resolve_as_planar_contacts_list[i]) {
536504
int erase_start_index_for_lambda =
537-
2 * num_friction_directions *
505+
2 * num_friction_directions.value() *
538506
std::accumulate(
539507
resolve_contacts_to_lists[num_contacts_index].begin(),
540508
resolve_contacts_to_lists[num_contacts_index].begin() + i,
541509
0) -
542510
offset;
543511
int erase_end_index_for_lambda =
544512
erase_start_index_for_lambda +
545-
2 * (num_friction_directions - 1) *
513+
2 * (num_friction_directions.value() - 1) *
546514
resolve_contacts_to_lists[num_contacts_index][i];
547515

548-
options->g_lambda.erase(
549-
options->g_lambda.begin() + erase_start_index_for_lambda,
550-
options->g_lambda.begin() + erase_end_index_for_lambda);
551-
options->u_lambda.erase(
552-
options->u_lambda.begin() + erase_start_index_for_lambda,
553-
options->u_lambda.begin() + erase_end_index_for_lambda);
554-
options->g_lambda_t.erase(
555-
options->g_lambda_t.begin() + erase_start_index_for_lambda,
556-
options->g_lambda_t.begin() + erase_end_index_for_lambda);
557-
options->u_lambda_t.erase(
558-
options->u_lambda_t.begin() + erase_start_index_for_lambda,
559-
options->u_lambda_t.begin() + erase_end_index_for_lambda);
560-
561-
if (options->projection_type == "C3+") {
562-
options->g_eta.erase(
563-
options->g_eta.begin() + erase_start_index_for_lambda,
564-
options->g_eta.begin() + erase_end_index_for_lambda);
565-
options->u_eta.erase(
566-
options->u_eta.begin() + erase_start_index_for_lambda,
567-
options->u_eta.begin() + erase_end_index_for_lambda);
568-
options->g_eta_t.erase(
569-
options->g_eta_t.begin() + erase_start_index_for_lambda,
570-
options->g_eta_t.begin() + erase_end_index_for_lambda);
571-
options->u_eta_t.erase(
572-
options->u_eta_t.begin() + erase_start_index_for_lambda,
573-
options->u_eta_t.begin() + erase_end_index_for_lambda);
516+
c3_options->g_lambda.erase(
517+
c3_options->g_lambda.begin() + erase_start_index_for_lambda,
518+
c3_options->g_lambda.begin() + erase_end_index_for_lambda);
519+
c3_options->u_lambda.erase(
520+
c3_options->u_lambda.begin() + erase_start_index_for_lambda,
521+
c3_options->u_lambda.begin() + erase_end_index_for_lambda);
522+
c3_options->g_lambda_t.erase(
523+
c3_options->g_lambda_t.begin() + erase_start_index_for_lambda,
524+
c3_options->g_lambda_t.begin() + erase_end_index_for_lambda);
525+
c3_options->u_lambda_t.erase(
526+
c3_options->u_lambda_t.begin() + erase_start_index_for_lambda,
527+
c3_options->u_lambda_t.begin() + erase_end_index_for_lambda);
528+
529+
if (projection_type == "C3+") {
530+
DRAKE_ASSERT(c3_options->g_eta.has_value());
531+
auto& g_eta = c3_options->g_eta.value();
532+
DRAKE_ASSERT(c3_options->u_eta.has_value());
533+
auto& u_eta = c3_options->u_eta.value();
534+
DRAKE_ASSERT(c3_options->g_eta_t.has_value());
535+
auto& g_eta_t = c3_options->g_eta_t.value();
536+
DRAKE_ASSERT(c3_options->u_eta_t.has_value());
537+
auto& u_eta_t = c3_options->u_eta_t.value();
538+
g_eta.erase(g_eta.begin() + erase_start_index_for_lambda,
539+
g_eta.begin() + erase_end_index_for_lambda);
540+
u_eta.erase(u_eta.begin() + erase_start_index_for_lambda,
541+
u_eta.begin() + erase_end_index_for_lambda);
542+
g_eta_t.erase(g_eta_t.begin() + erase_start_index_for_lambda,
543+
g_eta_t.begin() + erase_end_index_for_lambda);
544+
u_eta_t.erase(u_eta_t.begin() + erase_start_index_for_lambda,
545+
u_eta_t.begin() + erase_end_index_for_lambda);
574546
}
575-
offset += 2 * (num_friction_directions - 1) *
547+
offset += 2 * (num_friction_directions.value() - 1) *
576548
resolve_contacts_to_lists[num_contacts_index][i];
577549
}
578550
}

0 commit comments

Comments
 (0)