Skip to content

Commit 734d370

Browse files
committed
fix: optional parameters
1 parent 7852e78 commit 734d370

6 files changed

Lines changed: 34 additions & 30 deletions

File tree

MODULE.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ bazel_dep(name = "c3")
9393
git_override(
9494
module_name = "c3",
9595
remote = "https://github.com/DAIRLab/c3.git",
96-
commit = "f1fb48635ff6033c27f843bb2c7560135e3a6e7e"
96+
commit = "194a8c9e3e361e24aa0568e5979f0a25b5364bbd"
9797
)
9898

9999

examples/sampling_c3/anything/parameters/sampling_c3_options.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,6 @@ use_predicted_x0: false # instead: use_predicted_x0_c3,
123123
dt: 0 # instead: planning_dt_pose, planning_dt_position
124124
dt_cost: 0
125125
solve_dt: 0 # unused
126-
mu: [] # instead based on indexing into mu_per_pair_type
127126
num_contacts: 0 # instead based on summing index of resolve_contacts_to_lists
128127
# Instead for the below, index into their _list versions.
129128
g_gamma: []

examples/sampling_c3/anything/parameters/sampling_c3plus_options.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,6 @@ u_eta_position_list: [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
158158
dt: 0 # instead: planning_dt_pose, planning_dt_position
159159
# solve_dt: 0 # unused
160160
dt_cost: 0
161-
mu: [] # instead based on indexing into mu_per_pair_type
162161
num_contacts: 0 # instead based on summing index of resolve_contacts_to_lists
163162
# Instead for the below, index into their _list versions.
164163
g_gamma: []

examples/sampling_c3/parameter_headers/sampling_c3_options.h

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ struct SamplingC3Options : C3Options, LCSFactoryOptions {
3939

4040
int num_planar_contacts;
4141
int n_lambda_with_tangential;
42-
std::vector<int> num_friction_directions_per_contact;
4342
std::vector<int> starting_index_per_contact_in_lambda_t_vector;
4443

4544
int num_planar_contacts_cost;
@@ -124,7 +123,8 @@ struct SamplingC3Options : C3Options, LCSFactoryOptions {
124123
std::vector<Eigen::VectorXd>
125124
workspace_limits; ///< Workspace boundaries as vectors.
126125
double workspace_margins; ///< Margins to be maintained within the workspace.
127-
std::vector<double> ee_velocity_limits; ///< Limits for end-effector velocities.
126+
std::vector<double>
127+
ee_velocity_limits; ///< Limits for end-effector velocities.
128128

129129
C3Options c3_options_pose;
130130
LCSFactoryOptions lcs_factory_options_pose;
@@ -243,10 +243,11 @@ struct SamplingC3Options : C3Options, LCSFactoryOptions {
243243
num_contacts_for_cost =
244244
std::accumulate(resolve_contacts_to_for_cost.begin(),
245245
resolve_contacts_to_for_cost.end(), 0);
246-
mu = std::vector<double>();
246+
mu_per_contact = std::vector<double>();
247247
for (size_t i = 0; i < mu_per_pair_type.size(); ++i) {
248248
int repeat = resolve_contacts_to_lists[num_contacts_index][i];
249-
mu.value().insert(mu.value().end(), repeat, mu_per_pair_type[i]);
249+
mu_per_contact.value().insert(mu_per_contact.value().end(), repeat,
250+
mu_per_pair_type[i]);
250251
}
251252
mu_for_cost = std::vector<double>();
252253
for (size_t i = 0; i < mu_per_pair_type.size(); ++i) {
@@ -265,11 +266,11 @@ struct SamplingC3Options : C3Options, LCSFactoryOptions {
265266
resolve_contacts_to_for_cost,
266267
num_friction_directions.value());
267268

268-
for (size_t i = 0; i < static_cast<size_t>(num_contacts); ++i) {
269+
for (size_t i = 0; i < static_cast<size_t>(num_contacts.value()); ++i) {
269270
starting_index_per_contact_in_lambda_t_vector.push_back(
270-
2 * std::accumulate(num_friction_directions_per_contact.begin(),
271-
num_friction_directions_per_contact.begin() + i,
272-
0));
271+
2 * std::accumulate(
272+
num_friction_directions_per_contact.value().begin(),
273+
num_friction_directions_per_contact.value().begin() + i, 0));
273274
}
274275
for (size_t i = 0; i < static_cast<size_t>(num_contacts_for_cost); ++i) {
275276
starting_index_per_contact_in_lambda_t_vector_cost.push_back(
@@ -278,15 +279,19 @@ struct SamplingC3Options : C3Options, LCSFactoryOptions {
278279
num_friction_directions_per_contact_for_cost.begin() + i, 0));
279280
}
280281

281-
n_lambda_with_tangential = 2 * num_friction_directions.value() *
282-
(num_contacts - num_planar_contacts) +
283-
2 * num_planar_contacts;
282+
n_lambda_with_tangential =
283+
2 * num_friction_directions.value() *
284+
(num_contacts.value() - num_planar_contacts) +
285+
2 * num_planar_contacts;
284286
n_lambda_with_tangential_cost =
285287
2 * num_friction_directions.value() *
286288
(num_contacts_for_cost - num_planar_contacts_cost) +
287289
2 * num_planar_contacts_cost;
288290

289291
// Create C3 options for both pose and position tracking.
292+
std::cout
293+
<< "Setting C3 and LCS factory options for pose and position tracking."
294+
<< std::endl;
290295
SetCommonOptions(&c3_options_pose, &lcs_factory_options_pose);
291296
SetPoseTrackingOptions(&c3_options_pose, &lcs_factory_options_pose);
292297
SetCommonOptions(&c3_options_position, &lcs_factory_options_position);
@@ -413,7 +418,7 @@ struct SamplingC3Options : C3Options, LCSFactoryOptions {
413418
lcs_factory_options->num_contacts = num_contacts;
414419
lcs_factory_options->num_friction_directions = num_friction_directions;
415420
lcs_factory_options->spring_stiffness = 0; // not used in sampling C3
416-
lcs_factory_options->mu = mu;
421+
lcs_factory_options->mu_per_contact = mu_per_contact;
417422
lcs_factory_options->N = N;
418423
lcs_factory_options->num_friction_directions_per_contact =
419424
num_friction_directions_per_contact;
@@ -568,7 +573,7 @@ struct SamplingC3Options : C3Options, LCSFactoryOptions {
568573
int num_planar_contacts = 0;
569574
int planar_contact = 1;
570575
std::vector<int> num_friction_directions_per_contact;
571-
for (int i = 0; i < resolve_contacts_to_list.size(); ++i) {
576+
for (size_t i = 0; i < resolve_contacts_to_list.size(); ++i) {
572577
for (int j = 0; j < resolve_contacts_to_list[i]; ++j) {
573578
num_planar_contacts += (resolve_as_planar_contacts_list[i] ? 1 : 0);
574579
num_friction_directions_per_contact.push_back(

examples/sampling_c3/test/lcm_log_loader.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,7 @@ int DoMain(int argc, char* argv[]) {
464464
<< "seconds utime: " << (message.utime) / 1e6
465465
<< " and event " << "timestamp "
466466
<< adjusted_utimestamp / 1e6 << std::endl;
467-
for (int i = 0;
467+
for (size_t i = 0;
468468
i < message.saved_traj.trajectories[0].datapoints[0].size();
469469
i++) {
470470
Eigen::VectorXd sample_location = Eigen::VectorXd::Zero(3);
@@ -486,7 +486,7 @@ int DoMain(int argc, char* argv[]) {
486486
<< "seconds utime: " << (message.utime) / 1e6
487487
<< " and event " << "timestamp "
488488
<< adjusted_utimestamp / 1e6 << std::endl;
489-
for (int i = 0;
489+
for (size_t i = 0;
490490
i < message.saved_traj.trajectories[0].datapoints[0].size();
491491
i++) {
492492
sample_costs_in_log.push_back(Eigen::VectorXd::Constant(

systems/controllers/sampling_based_c3_controller.cc

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,8 @@ SamplingC3Controller::SamplingC3Controller(
120120
n_lambda_ = LCSFactory::GetNumContactVariables(
121121
c3::multibody::GetContactModelMap().at(
122122
controller_params_.sampling_c3_options.contact_model),
123-
sampling_c3_options_.num_contacts,
124-
sampling_c3_options_.num_friction_directions_per_contact);
123+
sampling_c3_options_.num_contacts.value(),
124+
sampling_c3_options_.num_friction_directions_per_contact.value());
125125

126126
// Placeholder LCS will have correct size as it's already determined by the
127127
// contact model.
@@ -1882,7 +1882,8 @@ SamplingC3Controller::CreateLCSObjectsForSamples(
18821882
GetResolvedContactPairs(
18831883
plant_, *context_, contact_pairs_,
18841884
sampling_c3_options_.resolve_contacts_to,
1885-
sampling_c3_options_.num_friction_directions_per_contact, verbose_);
1885+
sampling_c3_options_.num_friction_directions_per_contact.value(),
1886+
verbose_);
18861887
LCS lcs_object_sample =
18871888
LCSFactory(plant_, *context_, plant_ad_, *context_ad_,
18881889
resolved_contact_pairs, lcs_factory_options)
@@ -1898,17 +1899,15 @@ SamplingC3Controller::CreateLCSObjectsForSamples(
18981899
verbose_);
18991900
LCSFactoryOptions lcs_factory_options_for_cost = {
19001901
.contact_model = controller_params_.sampling_c3_options.contact_model,
1902+
.N = N_ * sampling_c3_options_.lcs_dt_resolution,
1903+
.dt = dt_ / sampling_c3_options_.lcs_dt_resolution,
19011904
.num_contacts = resolved_contact_pairs_for_cost_simulation.size(),
19021905
.spring_stiffness = 0.0,
1903-
.num_friction_directions = std::nullopt,
19041906
.num_friction_directions_per_contact =
19051907
sampling_c3_options_.num_friction_directions_per_contact_for_cost,
1906-
.mu = sampling_c3_options_.mu_for_cost,
1907-
.planar_normal_direction = sampling_c3_options_.planar_normal_direction,
1908-
.planar_normal_direction_per_contact = std::nullopt,
1909-
.contact_pair_configs = std::nullopt,
1910-
.N = N_ * sampling_c3_options_.lcs_dt_resolution,
1911-
.dt = dt_ / sampling_c3_options_.lcs_dt_resolution};
1908+
.mu_per_contact = sampling_c3_options_.mu_for_cost,
1909+
.planar_normal_direction =
1910+
sampling_c3_options_.planar_normal_direction};
19121911
LCS lcs_object_sample_for_cost_simulation =
19131912
LCSFactory(plant_, *context_, plant_ad_, *context_ad_,
19141913
resolved_contact_pairs_for_cost_simulation,
@@ -2783,7 +2782,8 @@ void SamplingC3Controller::OutputLCSContactJacobianCurrPlan(
27832782
resolved_contact_pairs = GetResolvedContactPairs(
27842783
plant_, *context_, contact_pairs_,
27852784
sampling_c3_options_.resolve_contacts_to,
2786-
sampling_c3_options_.num_friction_directions_per_contact, verbose_);
2785+
sampling_c3_options_.num_friction_directions_per_contact.value(),
2786+
verbose_);
27872787

27882788
// print size of resolved_contact_pairs
27892789
*lcs_contact_descriptions =
@@ -3022,7 +3022,8 @@ void SamplingC3Controller::OutputLCSContactJacobianBestPlan(
30223022
resolved_contact_pairs = GetResolvedContactPairs(
30233023
plant_, *context_, contact_pairs_,
30243024
sampling_c3_options_.resolve_contacts_to,
3025-
sampling_c3_options_.num_friction_directions_per_contact, verbose_);
3025+
sampling_c3_options_.num_friction_directions_per_contact.value(),
3026+
verbose_);
30263027
*lcs_contact_descriptions =
30273028
LCSFactory(plant_, *context_, plant_ad_, *context_ad_,
30283029
resolved_contact_pairs, lcs_factory_options)

0 commit comments

Comments
 (0)