vector<double>&local_x,vector<double>&local_y,vector<double> &local_yaw,int local_point_id) { //double yaw_change=azimuthAngle(x_orignal[local_point_id+keep_point],y_orignal[local_point_id+keep_point], //x_target[local_point_id+keep_point+chang_lane_point],y_target[local_point_id+keep_point+chang_lane_point]); double dx=x_target[local_point_id+keep_point+chang_lane_point]-x_orignal[local_point_id+keep_point]; // keep_point--生成局部路径前的保持距离 double dy=y_target[local_point_id+keep_point+chang_lane_point]-y_orignal[local_point_id+keep_point]; Eigen::Matrix3d axis_rotation; axis_rotation = Eigen::AngleAxisd(yaw_orignal[local_point_id+keep_point], Eigen::Vector3d::UnitZ()) * Eigen::AngleAxisd(0, Eigen::Vector3d::UnitY()) * Eigen::AngleAxisd(0, Eigen::Vector3d::UnitX()); Eigen::Vector3d local_axis_loc(dx, dy, 0); auto local_axis_point=axis_rotation.inverse()*local_axis_loc; double local_angle=abs(atan((local_axis_point[0])/(local_axis_point[1]))); double xxx=local_axis_point[0]; double yyy=local_axis_point[1]; double x_average=local_axis_point[0]/(chang_lane_point+1); if (local_angle>M_PI_2) local_angle=M_PI-local_angle; else if (local_angle<-M_PI_2) local_angle=M_PI+local_angle; double change_rate_angle=(M_PI_2-local_angle)/(chang_lane_point+1)*2; if(x_target[local_point_id+keep_point+chang_lane_point]-x_orignal[local_point_id+keep_point]==0) { return false; }
时间: 2023-09-12 11:12:21 浏览: 139
Yaw_Controller_Lib.zip_MATLAB lib_Wind yaw_in_wind turbin _yaw
这段代码是一个函数,接受一些参数并返回一个布尔值。函数的目的似乎是计算一些局部路径相关的值。在代码中,它首先计算了一些坐标和角度的差异,并使用旋转矩阵将坐标转换到局部坐标系中。然后,它计算了一些角度和变化率,并根据一些条件确定了最终的局部角度值。最后,它检查一些条件并返回一个布尔值。
需要注意的是,代码中的一行 `return false;` 是不符合函数的返回类型的,因为函数被声明为返回一个引用。这可能是一个错误或者需要对代码进行额外的修改。
阅读全文