Skip to content

Commit a054abd

Browse files
committed
fix: optional parameters
1 parent ddfe6b5 commit a054abd

5 files changed

Lines changed: 33 additions & 29 deletions

File tree

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.
@@ -1872,7 +1872,8 @@ SamplingC3Controller::CreateLCSObjectsForSamples(
18721872
GetResolvedContactPairs(
18731873
plant_, *context_, contact_pairs_,
18741874
sampling_c3_options_.resolve_contacts_to,
1875-
sampling_c3_options_.num_friction_directions_per_contact, verbose_);
1875+
sampling_c3_options_.num_friction_directions_per_contact.value(),
1876+
verbose_);
18761877
LCS lcs_object_sample =
18771878
LCSFactory(plant_, *context_, plant_ad_, *context_ad_,
18781879
resolved_contact_pairs, lcs_factory_options)
@@ -1888,17 +1889,15 @@ SamplingC3Controller::CreateLCSObjectsForSamples(
18881889
verbose_);
18891890
LCSFactoryOptions lcs_factory_options_for_cost = {
18901891
.contact_model = controller_params_.sampling_c3_options.contact_model,
1892+
.N = N_ * sampling_c3_options_.lcs_dt_resolution,
1893+
.dt = dt_ / sampling_c3_options_.lcs_dt_resolution,
18911894
.num_contacts = resolved_contact_pairs_for_cost_simulation.size(),
18921895
.spring_stiffness = 0.0,
1893-
.num_friction_directions = std::nullopt,
18941896
.num_friction_directions_per_contact =
18951897
sampling_c3_options_.num_friction_directions_per_contact_for_cost,
1896-
.mu = sampling_c3_options_.mu_for_cost,
1897-
.planar_normal_direction = sampling_c3_options_.planar_normal_direction,
1898-
.planar_normal_direction_per_contact = std::nullopt,
1899-
.contact_pair_configs = std::nullopt,
1900-
.N = N_ * sampling_c3_options_.lcs_dt_resolution,
1901-
.dt = dt_ / sampling_c3_options_.lcs_dt_resolution};
1898+
.mu_per_contact = sampling_c3_options_.mu_for_cost,
1899+
.planar_normal_direction =
1900+
sampling_c3_options_.planar_normal_direction};
19021901
LCS lcs_object_sample_for_cost_simulation =
19031902
LCSFactory(plant_, *context_, plant_ad_, *context_ad_,
19041903
resolved_contact_pairs_for_cost_simulation,
@@ -2773,7 +2772,8 @@ void SamplingC3Controller::OutputLCSContactJacobianCurrPlan(
27732772
resolved_contact_pairs = GetResolvedContactPairs(
27742773
plant_, *context_, contact_pairs_,
27752774
sampling_c3_options_.resolve_contacts_to,
2776-
sampling_c3_options_.num_friction_directions_per_contact, verbose_);
2775+
sampling_c3_options_.num_friction_directions_per_contact.value(),
2776+
verbose_);
27772777

27782778
// print size of resolved_contact_pairs
27792779
*lcs_contact_descriptions =
@@ -3012,7 +3012,8 @@ void SamplingC3Controller::OutputLCSContactJacobianBestPlan(
30123012
resolved_contact_pairs = GetResolvedContactPairs(
30133013
plant_, *context_, contact_pairs_,
30143014
sampling_c3_options_.resolve_contacts_to,
3015-
sampling_c3_options_.num_friction_directions_per_contact, verbose_);
3015+
sampling_c3_options_.num_friction_directions_per_contact.value(),
3016+
verbose_);
30163017
*lcs_contact_descriptions =
30173018
LCSFactory(plant_, *context_, plant_ad_, *context_ad_,
30183019
resolved_contact_pairs, lcs_factory_options)

0 commit comments

Comments
 (0)