@@ -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 (
0 commit comments