|
@@ -94,25 +94,34 @@ int service_roi_xodr::GetROI(std::shared_ptr<iv::roi::request> xreq_ptr, std::sh
|
|
|
|
|
|
std::vector<iv::roi::Point> xvectorpoint;
|
|
|
unsigned int nareasize = xvectorarea.size();
|
|
|
- double fgpsyaw = (90-xreq_ptr->heading())*M_PI/180.0;
|
|
|
+ double fgpsyaw = (90-xreq_ptr->heading())*M_PI/180.0 -3.0*M_PI/2.0;
|
|
|
for(i=0;i<nareasize;i++)
|
|
|
{
|
|
|
int ix,iy;
|
|
|
- unsigned int ny = xvectorarea[i].fsteplen/fgridsize;
|
|
|
- unsigned int nxl = 0;
|
|
|
- unsigned int nxr = 0;
|
|
|
+ int ny = xvectorarea[i].fsteplen/fgridsize;
|
|
|
+ int nxl = 0;
|
|
|
+ int nxr = 0;
|
|
|
if(xvectorarea[i].fleftwidth>0)nxl = xvectorarea[i].fleftwidth/fgridsize;
|
|
|
if(xvectorarea[i].frightwidth>0)nxr = xvectorarea[i].frightwidth/fgridsize;
|
|
|
double fyaw = xvectorarea[i].fhdg - fgpsyaw;
|
|
|
+ // double fyaw = xvectorarea[i].fhdg - fgpsyaw;
|
|
|
double flaneoff = xvectorarea[i].flaneoff;
|
|
|
if(fyaw < 0)fyaw = fyaw + 2.0*M_PI;
|
|
|
double frelxraw = xvectorarea[i].refPoint.x - x;
|
|
|
double frelyraw = xvectorarea[i].refPoint.y - y;
|
|
|
double fxrel,fyrel;
|
|
|
+// fgpsyaw = 0;
|
|
|
fxrel = frelxraw * cos(-fgpsyaw) - frelyraw * sin(-fgpsyaw);
|
|
|
- fyrel = frelxraw * sin(-fgpsyaw) - frelyraw * cos(-fgpsyaw);
|
|
|
+ fyrel = frelxraw * sin(-fgpsyaw) + frelyraw * cos(-fgpsyaw);
|
|
|
double fxbase = fxrel + flaneoff * cos(fyaw + M_PI/2.0);
|
|
|
double fybase = fyrel + flaneoff * sin(fyaw + M_PI/2.0);
|
|
|
+// iv::roi::Point xpoint;
|
|
|
+// xpoint.x = fxbase;
|
|
|
+// xpoint.y = fybase;
|
|
|
+// xvectorpoint.push_back(xpoint);
|
|
|
+// continue;
|
|
|
+
|
|
|
+ fyaw = fyaw + 3.0*M_PI/2.0;
|
|
|
if((nxl == 0)&&(nxr== 0)&&(ny <= 1))
|
|
|
{
|
|
|
iv::roi::Point xpoint;
|
|
@@ -142,8 +151,9 @@ int service_roi_xodr::GetROI(std::shared_ptr<iv::roi::request> xreq_ptr, std::sh
|
|
|
fxlocal = ix*fgridsize;
|
|
|
fylocal = iy*fgridsize;
|
|
|
iv::roi::Point xpoint;
|
|
|
+
|
|
|
xpoint.x = fxbase +fxlocal*cos(fyaw) - fylocal * sin(fyaw);
|
|
|
- xpoint.y = fybase +fxlocal*sin(fyaw) - fylocal * cos(fyaw);
|
|
|
+ xpoint.y = fybase +fxlocal*sin(fyaw) + fylocal * cos(fyaw);
|
|
|
xvectorpoint.push_back(xpoint);
|
|
|
}
|
|
|
}
|