@@ -191,9 +191,6 @@ std::tuple<geometry_msgs::msg::TwistStamped, Eigen::ArrayXXf> Optimizer::evalCon
191191 bool trajectory_valid = true ;
192192
193193 do {
194- // std::cout << "\n\t control_sequence_ Before optimize:\n\t\t"
195- // << control_sequence_.vx(Eigen::seq(0, 5)).transpose() << "\n\t"
196- // << control_sequence_.wz(Eigen::seq(0, 5)).transpose() << "\n\t" << std::endl;
197194 optimize ();
198195 optimal_trajectory = getOptimizedTrajectory ();
199196 switch (trajectory_validator_->validateTrajectory (
@@ -213,11 +210,6 @@ std::tuple<geometry_msgs::msg::TwistStamped, Eigen::ArrayXXf> Optimizer::evalCon
213210 }
214211 } while (fallback (critics_data_.fail_flag || !trajectory_valid));
215212
216- // std::cout << "Control Sequence End:\n";
217- // std::cout << "vx: " << control_sequence_.vx.transpose() << "\n";
218- // std::cout << "wz: " << control_sequence_.wz.transpose() << "\n";
219- // computeControlSequenceAccel(control_sequence_);
220-
221213 auto control = getControlFromSequenceAsTwist (plan.header .stamp );
222214
223215 if (settings_.shift_control_sequence ) {
@@ -281,9 +273,6 @@ void Optimizer::computeControlSequenceAccel(const models::ControlSequence& contr
281273
282274void Optimizer::optimize ()
283275{
284- // std::cout << "optimize: control_sequence_:\n\t\t"
285- // << control_sequence_.vx(Eigen::seq(0, 9)).transpose() << "\n\t\t"
286- // << control_sequence_.wz(Eigen::seq(0, 9)).transpose() << std::endl;
287276 for (size_t i = 0 ; i < settings_.iteration_count ; ++i) {
288277 generateNoisedTrajectories ();
289278 critic_manager_.evalTrajectoriesScores (critics_data_);
@@ -372,54 +361,18 @@ void Optimizer::applyControlSequenceConstraints()
372361{
373362 auto & s = settings_;
374363
375- // std::cout << "Control Sequence Before Motion Model Constraints:\n";
376- // std::cout << "vx: " << control_sequence_.vx(Eigen::seq(0, 9)).transpose() << "\n";
377- // std::cout << "wz: " << control_sequence_.wz(Eigen::seq(0, 9)).transpose() << "\n";
378-
379- // Debugging output for constraint values
380- // std::cout << "****Acceleration Constraints:\n";
381- // std::cout << "ax_max: " << s.constraints.ax_max << ", ax_min: " << s.constraints.ax_min << "\n";
382- // std::cout << "ay_max: " << s.constraints.ay_max << ", ay_min: " << s.constraints.ay_min << "\n";
383- // std::cout << "az_max: " << s.constraints.az_max << "\n";
384- // computeControlSequenceAccel(control_sequence_);
385-
386- // std::cout << "applyControlSequenceConstraints: \n state.u_app \n\t" << state_.vx(Eigen::seq(0, 2), Eigen::seq(0, 2))
387- // << "\n\t" << state_.wz(Eigen::seq(0, 2), Eigen::seq(0, 2)) << std::endl
388- // << "\n state.u_virt\n\t" << state_.cvx(Eigen::seq(0, 2), Eigen::seq(0, 2)) << "\n\t"
389- // << state_.cwz(Eigen::seq(0, 2), Eigen::seq(0, 2)) << "\n ctrl_seq: \n\t"
390- // << control_sequence_.vx(Eigen::seq(0, 5)).transpose() << "\n\t"
391- // << control_sequence_.wz(Eigen::seq(0, 5)).transpose() << std::endl;
392-
393364 float max_delta_vx = s.model_dt * s.constraints .ax_max ;
394365 float min_delta_vx = s.model_dt * s.constraints .ax_min ;
395366 float max_delta_vy = s.model_dt * s.constraints .ay_max ;
396367 float min_delta_vy = s.model_dt * s.constraints .ay_min ;
397368 float max_delta_wz = s.model_dt * s.constraints .az_max ;
398369
399- // --tried 1 limit ctrl_seq_(0) based on accel_limit from current robot speed (= state.vx(0,0)) (instead of in predict -> see it still accel issue)
400- // TODO 4 or ideally based on last published command
401- // at this point, control_sequence_ contains the softmax mean of state_.cu (u_virt)]
402- /*
403- float vx_last = utils::clamp(s.constraints.vx_min, s.constraints.vx_max, control_sequence_.vx(0));
404- float wz_last = utils::clamp(-s.constraints.wz, s.constraints.wz, control_sequence_.wz(0));
405-
406- control_sequence_.vx(0) = vx_last;
407- control_sequence_.wz(0) = wz_last;
408- float vy_last = 0;
409- if (isHolonomic()) {
410- vy_last = utils::clamp(-s.constraints.vy, s.constraints.vy, control_sequence_.vy(0));
411- control_sequence_.vy(0) = vy_last;
412- }
413- */
414- // limit acceleration between current feedback speed and first control in the sequence
415- // float vx_last = static_cast<float>(state_.speed.linear.x);
416- // float wz_last = static_cast<float>(state_.speed.angular.z);
370+ // limit acceleration between current initial_velocities_ and first control in the sequence
417371 float vx_last = initial_velocities_ (0 );
418372 float wz_last = initial_velocities_ (2 );
419373
420374 float vy_last = 0 ;
421375 if (isHolonomic ()) {
422- // vy_last = static_cast<float>(state_.speed.linear.y);
423376 vy_last = initial_velocities_ (1 );
424377 }
425378
@@ -434,18 +387,10 @@ void Optimizer::applyControlSequenceConstraints()
434387 vx_last = vx_curr;
435388
436389 float & wz_curr = control_sequence_.wz (i);
437- // if (i==0)
438- // {
439- // std::cout << "control_sequence_.wz(0) BEFORE: " << control_sequence_.wz(i) << std::endl;
440- // }
441390 wz_curr = utils::clamp (-s.constraints .wz , s.constraints .wz , wz_curr);
442391 wz_curr = utils::clamp (wz_last - max_delta_wz, wz_last + max_delta_wz, wz_curr);
443392 wz_last = wz_curr;
444393
445- // if (i==0)
446- // {
447- // std::cout << "control_sequence_.wz(0) AFTER: " << control_sequence_.wz(i) << std::endl;
448- // }
449394 if (isHolonomic ()) {
450395 float & vy_curr = control_sequence_.vy (i);
451396 vy_curr = utils::clamp (-s.constraints .vy , s.constraints .vy , vy_curr);
@@ -459,11 +404,6 @@ void Optimizer::applyControlSequenceConstraints()
459404 }
460405
461406 motion_model_->applyConstraints (control_sequence_);
462-
463- // std::cout << "Control Sequence After Motion Model Constraints:\n";
464- // std::cout << "vx: " << control_sequence_.vx(Eigen::seq(0, 9)).transpose() << "\n";
465- // std::cout << "wz: " << control_sequence_.wz(Eigen::seq(0, 9)).transpose() << "\n";
466- // computeControlSequenceAccel(control_sequence_);
467407}
468408
469409void Optimizer::updateStateVelocities (
@@ -476,23 +416,16 @@ void Optimizer::updateStateVelocities(
476416void Optimizer::updateInitialStateVelocities (
477417 models::State & state)
478418{
479- // state.vx.col(0) = static_cast<float>(state.speed.linear.x);
480- // state.wz.col(0) = static_cast<float>(state.speed.angular.z);
481419 state.vx .col (0 ) = control_sequence_.vx (0 );
482420 state.wz .col (0 ) = control_sequence_.wz (0 );
483421
484422 if (isHolonomic ()) {
485- // state.vy.col(0) = static_cast<float>(state.speed.linear.y);
486423 state.vy .col (0 ) = control_sequence_.vy (0 );
487424 }
488425
489- // save for later
490426 initial_velocities_ (0 ) = control_sequence_.vx (0 );
491427 initial_velocities_ (1 ) = control_sequence_.vy (0 );
492428 initial_velocities_ (2 ) = control_sequence_.wz (0 );
493-
494- // std::cout << "updateInitialStateVelocities: (" << state.speed.linear.x << " , " << state.speed.angular.z << ")\n"
495- // << state.vx(0, Eigen::seq(0, 5)) << "\n " << state.wz(0, Eigen::seq(0, 5)) << std::endl;
496429}
497430
498431void Optimizer::propagateStateVelocitiesFromInitials (
@@ -639,16 +572,11 @@ void Optimizer::updateControlSequence()
639572 costs_ += (gamma_vy * (bounded_noises_vy.rowwise () * vy_T).rowwise ().sum ()).eval ();
640573 }
641574
642- // std::cout << "costs_: " << costs_(Eigen::seq(0, 9)).transpose() << "\n";
643-
644575 auto costs_normalized = costs_ - costs_.minCoeff ();
645576 const float inv_temp = 1 .0f / s.temperature ;
646577 auto softmaxes = (-inv_temp * costs_normalized).exp ().eval ();
647578 softmaxes /= softmaxes.sum ();
648579
649- // std::cout << "costs_normalized: " << costs_normalized(Eigen::seq(0, 9)).transpose() << "\n";
650- // std::cout << "softmaxes: " << softmaxes(Eigen::seq(0, 9)).transpose() << "\n";
651-
652580 auto softmax_mat = softmaxes.matrix ();
653581 control_sequence_.vx = state_.cvx .transpose ().matrix () * softmax_mat;
654582 control_sequence_.wz = state_.cwz .transpose ().matrix () * softmax_mat;
@@ -669,11 +597,6 @@ geometry_msgs::msg::TwistStamped Optimizer::getControlFromSequenceAsTwist(
669597 auto vx = control_sequence_.vx (0 );
670598 auto wz = control_sequence_.wz (0 );
671599
672- // std::cout << "getControlFromSequenceAsTwist:\n\tsettings_.shift_control_sequence" << settings_.shift_control_sequence
673- // << "\n\t (vx , wz): (" << vx << ", " << wz << ")\n\t control_sequence_:\n\t\t"
674- // << control_sequence_.vx(Eigen::seq(0, 9)).transpose() << "\n\t\t"
675- // << control_sequence_.wz(Eigen::seq(0, 9)).transpose() << std::endl;
676-
677600 if (isHolonomic ()) {
678601 auto vy = control_sequence_.vy (0 );
679602 return utils::toTwistStamped (vx, vy, wz, stamp, costmap_ros_->getBaseFrameID ());
0 commit comments