@@ -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_);
@@ -333,27 +322,12 @@ void Optimizer::prepare(
333322
334323void  Optimizer::shiftControlSequence ()
335324{
336-   //  std::cout << "shiftControlSequence:\n\t" //\tsettings_.shift_control_sequence" << settings_.shift_control_sequence
337-   //            << "\n\t control_sequence_ Before:\n\t\t"
338-   //            << control_sequence_.vx(Eigen::seq(0, 5)).transpose() << "\n\t"
339-   //            << control_sequence_.wz(Eigen::seq(0, 5)).transpose() << "\n\t"
340-   //            /*<< control_sequence_.vx(Eigen::seq(Eigen::last -5, Eigen::last)).transpose()*/<< std::endl;
341-   //  std::cout << "\n\t control_sequence_virtual_ Before:\n\t\t"
342-   //            << control_sequence_virtual_.vx(Eigen::seq(0, 5)).transpose() << "\n\t"
343-   //            << control_sequence_virtual_.wz(Eigen::seq(0, 5)).transpose() << "\n\t" << std::endl;
344- 
345-   //  control_sequence_ = control_sequence_virtual_;
346- 
347325  auto  size = control_sequence_.vx .size ();
348326  utils::shiftColumnsByOnePlace (control_sequence_.vx , -1 );
349327  utils::shiftColumnsByOnePlace (control_sequence_.wz , -1 );
350328  control_sequence_.vx (size - 1 ) = control_sequence_.vx (size - 2 );
351329  control_sequence_.wz (size - 1 ) = control_sequence_.wz (size - 2 );
352330
353-   //  std::cout << "\n\t control_sequence_ After:\n\t\t" << control_sequence_.vx(Eigen::seq(0, 5)).transpose() << "\n\t\t"
354-   //            << control_sequence_.wz(Eigen::seq(0, 5)).transpose() << "\n\t\t"
355-   //            /*<< control_sequence_.vx(Eigen::seq(Eigen::last -5, Eigen::last)).transpose()*/<< std::endl;
356- 
357331  if  (isHolonomic ()) {
358332    utils::shiftColumnsByOnePlace (control_sequence_.vy , -1 );
359333    control_sequence_.vy (size - 1 ) = control_sequence_.vy (size - 2 );
@@ -372,54 +346,18 @@ void Optimizer::applyControlSequenceConstraints()
372346{
373347  auto  & s = settings_;
374348
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- 
393349  float  max_delta_vx = s.model_dt  * s.constraints .ax_max ;
394350  float  min_delta_vx = s.model_dt  * s.constraints .ax_min ;
395351  float  max_delta_vy = s.model_dt  * s.constraints .ay_max ;
396352  float  min_delta_vy = s.model_dt  * s.constraints .ay_min ;
397353  float  max_delta_wz = s.model_dt  * s.constraints .az_max ;
398354
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);
355+   //  limit acceleration between current initial_velocities_ and first control in the sequence
417356  float  vx_last = initial_velocities_ (0 );
418357  float  wz_last = initial_velocities_ (2 );
419358
420359  float  vy_last = 0 ;
421360  if  (isHolonomic ()) {
422-     //  vy_last = static_cast<float>(state_.speed.linear.y);
423361    vy_last = initial_velocities_ (1 );
424362  }
425363
@@ -434,18 +372,10 @@ void Optimizer::applyControlSequenceConstraints()
434372    vx_last = vx_curr;
435373
436374    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-     //  }
441375    wz_curr = utils::clamp (-s.constraints .wz , s.constraints .wz , wz_curr);
442376    wz_curr = utils::clamp (wz_last - max_delta_wz, wz_last + max_delta_wz, wz_curr);
443377    wz_last = wz_curr;
444378
445-     //  if (i==0)
446-     //  {
447-     //    std::cout << "control_sequence_.wz(0) AFTER: " << control_sequence_.wz(i) << std::endl;
448-     //  }
449379    if  (isHolonomic ()) {
450380      float  & vy_curr = control_sequence_.vy (i);
451381      vy_curr = utils::clamp (-s.constraints .vy , s.constraints .vy , vy_curr);
@@ -459,11 +389,6 @@ void Optimizer::applyControlSequenceConstraints()
459389  }
460390
461391  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_);
467392}
468393
469394void  Optimizer::updateStateVelocities (
@@ -476,23 +401,16 @@ void Optimizer::updateStateVelocities(
476401void  Optimizer::updateInitialStateVelocities (
477402  models::State & state)
478403{
479-   //  state.vx.col(0) = static_cast<float>(state.speed.linear.x);
480-   //  state.wz.col(0) = static_cast<float>(state.speed.angular.z);
481404  state.vx .col (0 ) = control_sequence_.vx (0 );
482405  state.wz .col (0 ) = control_sequence_.wz (0 );
483406
484407  if  (isHolonomic ()) {
485-     //  state.vy.col(0) = static_cast<float>(state.speed.linear.y);
486408    state.vy .col (0 ) = control_sequence_.vy (0 );
487409  }
488410
489-   //  save for later
490411  initial_velocities_ (0 ) = control_sequence_.vx (0 );
491412  initial_velocities_ (1 ) = control_sequence_.vy (0 );
492413  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;
496414}
497415
498416void  Optimizer::propagateStateVelocitiesFromInitials (
@@ -639,16 +557,11 @@ void Optimizer::updateControlSequence()
639557    costs_ += (gamma_vy * (bounded_noises_vy.rowwise () * vy_T).rowwise ().sum ()).eval ();
640558  }
641559
642-   //  std::cout << "costs_: " << costs_(Eigen::seq(0, 9)).transpose() << "\n";
643- 
644560  auto  costs_normalized = costs_ - costs_.minCoeff ();
645561  const  float  inv_temp = 1 .0f  / s.temperature ;
646562  auto  softmaxes = (-inv_temp * costs_normalized).exp ().eval ();
647563  softmaxes /= softmaxes.sum ();
648564
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- 
652565  auto  softmax_mat = softmaxes.matrix ();
653566  control_sequence_.vx  = state_.cvx .transpose ().matrix () * softmax_mat;
654567  control_sequence_.wz  = state_.cwz .transpose ().matrix () * softmax_mat;
@@ -669,11 +582,6 @@ geometry_msgs::msg::TwistStamped Optimizer::getControlFromSequenceAsTwist(
669582  auto  vx = control_sequence_.vx (0 );
670583  auto  wz = control_sequence_.wz (0 );
671584
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- 
677585  if  (isHolonomic ()) {
678586    auto  vy = control_sequence_.vy (0 );
679587    return  utils::toTwistStamped (vx, vy, wz, stamp, costmap_ros_->getBaseFrameID ());
0 commit comments