20
20
#include " obstacle_avoidance_planner/utils/trajectory_utils.hpp"
21
21
#include " tf2/utils.h"
22
22
#include " tier4_autoware_utils/tier4_autoware_utils.hpp"
23
+
23
24
#include < rclcpp/logging.hpp>
24
25
25
26
#include < algorithm>
@@ -116,13 +117,14 @@ std::vector<double> toStdVector(const Eigen::VectorXd & eigen_vec)
116
117
return {eigen_vec.data (), eigen_vec.data () + eigen_vec.rows ()};
117
118
}
118
119
119
- std::string vectorToString (const std::vector<double >& vec) {
120
+ std::string vectorToString (const std::vector<double > & vec)
121
+ {
120
122
std::ostringstream oss;
121
123
if (!vec.empty ()) {
122
- oss << vec.front (); // Add the first element
123
- for (size_t i = 1 ; i < vec.size (); ++i) {
124
- oss << " ," << vec[i]; // Add the rest with commas
125
- }
124
+ oss << vec.front (); // Add the first element
125
+ for (size_t i = 1 ; i < vec.size (); ++i) {
126
+ oss << " ," << vec[i]; // Add the rest with commas
127
+ }
126
128
}
127
129
return oss.str ();
128
130
}
@@ -513,21 +515,19 @@ std::pair<std::vector<TrajectoryPoint>, int> MPTOptimizer::optimizeTrajectory(
513
515
if (!optimized_variables) {
514
516
RCLCPP_INFO_EXPRESSION (
515
517
logger_, enable_debug_info_, " return std::nullopt since could not solve qp" );
516
-
517
- RCLCPP_INFO (
518
- logger_, " Inputs causing failure:"
519
- );
518
+
519
+ RCLCPP_INFO (logger_, " Inputs causing failure:" );
520
520
RCLCPP_INFO_STREAM (logger_, " ref_points: " );
521
-
522
- for (const auto & ref_point : ref_points) {
521
+
522
+ for (const auto & ref_point : ref_points) {
523
523
std::cout << " \t " << ref_point << " \n " ;
524
524
}
525
525
526
526
RCLCPP_INFO_STREAM (logger_, " mpt_mat: " << mpt_mat);
527
527
RCLCPP_INFO_STREAM (logger_, " val_mat: " << val_mat);
528
528
RCLCPP_INFO_STREAM (logger_, " obj_mat: " << obj_mat);
529
529
RCLCPP_INFO_STREAM (logger_, " const_mat: " << const_mat);
530
-
530
+
531
531
return std::make_pair<std::vector<TrajectoryPoint>, int >(get_prev_optimized_traj_points (), -1 );
532
532
}
533
533
@@ -1535,10 +1535,8 @@ std::optional<Eigen::VectorXd> MPTOptimizer::calcOptimizedSteerAngles(
1535
1535
autoware::common::osqp::calCSCMatrixTrapezoidal (H);
1536
1536
const autoware::common::osqp::CSC_Matrix A_csc = autoware::common::osqp::calCSCMatrix (A);
1537
1537
if (
1538
- prev_solution_status_ == 1 &&
1539
- mpt_param_.enable_warm_start && prev_mat_n_ == H.rows () &&
1540
- prev_mat_m_ == A.rows ()
1541
- ) {
1538
+ prev_solution_status_ == 1 && mpt_param_.enable_warm_start && prev_mat_n_ == H.rows () &&
1539
+ prev_mat_m_ == A.rows ()) {
1542
1540
RCLCPP_INFO_EXPRESSION (logger_, enable_debug_info_, " warm start" );
1543
1541
osqp_solver_ptr_->updateCscP (P_csc);
1544
1542
osqp_solver_ptr_->updateQ (f);
@@ -1563,24 +1561,23 @@ std::optional<Eigen::VectorXd> MPTOptimizer::calcOptimizedSteerAngles(
1563
1561
const int solution_status = osqp_result.solution_status ;
1564
1562
prev_solution_status_ = solution_status;
1565
1563
if (solution_status != 1 ) {
1566
-
1567
1564
const std::vector<double > lagrange_multiplier = osqp_result.lagrange_multipliers ;
1568
1565
const int status_polish = osqp_result.polish_status ;
1569
1566
const int exit_flag = osqp_result.exit_flag ;
1570
-
1567
+
1571
1568
RCLCPP_INFO (logger_, " optimization failed: result contains NaN values" );
1572
1569
RCLCPP_INFO (logger_, " Problem details:" );
1573
1570
RCLCPP_INFO_STREAM (logger_, " P_csc: " << P_csc);
1574
1571
RCLCPP_INFO_STREAM (logger_, " f: " << vectorToString (f));
1575
1572
RCLCPP_INFO_STREAM (logger_, " A_csc: " << A_csc);
1576
- RCLCPP_INFO_STREAM (logger_, " lower_bound: " << vectorToString (lower_bound));
1573
+ RCLCPP_INFO_STREAM (logger_, " lower_bound: " << vectorToString (lower_bound));
1577
1574
RCLCPP_INFO_STREAM (logger_, " upper_bound: " << vectorToString (upper_bound));
1578
1575
RCLCPP_INFO (logger_, " Solver details:" );
1579
1576
RCLCPP_INFO_STREAM (logger_, " lagrange_multiplier: " << vectorToString (lagrange_multiplier));
1580
1577
RCLCPP_INFO_STREAM (logger_, " status_polish: " << status_polish);
1581
1578
RCLCPP_INFO_STREAM (logger_, " solution_status: " << solution_status);
1582
1579
RCLCPP_INFO_STREAM (logger_, " exit_flag: " << exit_flag);
1583
-
1580
+
1584
1581
osqp_solver_ptr_->logUnsolvedStatus (" [MPT]" );
1585
1582
return std::nullopt;
1586
1583
}
@@ -1595,20 +1592,19 @@ std::optional<Eigen::VectorXd> MPTOptimizer::calcOptimizedSteerAngles(
1595
1592
1596
1593
const auto has_nan = std::any_of (
1597
1594
optimization_result.begin (), optimization_result.end (),
1598
- [](const auto v) { return std::isnan (v); }
1599
- );
1595
+ [](const auto v) { return std::isnan (v); });
1600
1596
1601
1597
if (has_nan) {
1602
1598
const std::vector<double > lagrange_multiplier = osqp_result.lagrange_multipliers ;
1603
1599
const int status_polish = osqp_result.polish_status ;
1604
1600
const int exit_flag = osqp_result.exit_flag ;
1605
-
1601
+
1606
1602
RCLCPP_INFO (logger_, " optimization failed: result contains NaN values" );
1607
1603
RCLCPP_INFO (logger_, " Problem details:" );
1608
1604
RCLCPP_INFO_STREAM (logger_, " P_csc: " << P_csc);
1609
1605
RCLCPP_INFO_STREAM (logger_, " f: " << vectorToString (f));
1610
1606
RCLCPP_INFO_STREAM (logger_, " A_csc: " << A_csc);
1611
- RCLCPP_INFO_STREAM (logger_, " lower_bound: " << vectorToString (lower_bound));
1607
+ RCLCPP_INFO_STREAM (logger_, " lower_bound: " << vectorToString (lower_bound));
1612
1608
RCLCPP_INFO_STREAM (logger_, " upper_bound: " << vectorToString (upper_bound));
1613
1609
RCLCPP_INFO (logger_, " Solver details:" );
1614
1610
RCLCPP_INFO_STREAM (logger_, " optimization_result: " << vectorToString (optimization_result));
0 commit comments