]> rtime.felk.cvut.cz Git - hubacji1/iamcar.git/commitdiff
Update fipr
authorJiri Vlasak <hubacji1@fel.cvut.cz>
Mon, 11 Mar 2019 09:04:38 +0000 (10:04 +0100)
committerJiri Vlasak <hubacji1@fel.cvut.cz>
Fri, 29 Mar 2019 15:51:38 +0000 (16:51 +0100)
decision_control/slotplanner.cc

index 56f5ba07a0dc7117de5fba4b9eaf681ae3d26dc5..a81fd1e2eb5c217096212e8c5288a4540c129e64 100644 (file)
@@ -178,14 +178,16 @@ void ParallelSlot::fipr(BicycleCar *B)
 {
         // TODO for right parallel parking also
         // it's only for lpar scenario now
-
         std::vector<RRTNode *> cusp;
         cusp.push_back(new RRTNode(B->x(), B->y(), B->h()));
         // just copied from fip()
-        this->DH(-0.01 / B->out_radi());
+        int di = 1;
+        if (this->slotSide() == LEFT)
+                di = -1;
+        this->DH(di * 0.01 / B->out_radi());
         BicycleCar *c;
         c = this->flncr(B);
-        while (c->lfx() < 0) {
+        while (this->slot().collide(new RRTNode(c->lfx(), c->lfy(), 0))) {
                 cusp.push_back(new RRTNode(c->x(), c->y(), c->h()));
                 BicycleCar *cc = this->flncr(c);
                 cc->s(c->s() + 1);
@@ -245,11 +247,10 @@ BicycleCar *ParallelSlot::flncr(BicycleCar *B)
         BicycleCar *p;
         int i = 1;
         p = B->move(cc, i * this->DH());
-        while (!this->slot().collide(p->frame())
-                        && (
-                                (this->DH() > 0 && p->x() >= 0)
-                                || (this->DH() < 0 && p->lfx() <= 0)
-                        )) {
+        while (
+                !this->slot().collide(p->frame())
+                && this->slot().collide(new RRTNode(p->lfx(), p->lfy(), 0))
+        ) {
                 delete p;
                 i += 10;
                 p = B->move(cc, i * this->DH());
@@ -257,14 +258,14 @@ BicycleCar *ParallelSlot::flncr(BicycleCar *B)
         i -= 10;
         p = B->move(cc, i * this->DH());
         while (!this->slot().collide(p->frame())) {
-                if (this->DH() > 0 && p->x() <= 0) {
-                        i += 1;
-                        break;
-                }
-                if (this->DH() < 0 && p->lfx() >= 0) {
+                if(!this->slot().collide(new RRTNode(p->lfx(), p->lfy(), 0))) {
                         i += 1;
                         break;
                 }
+                //if (this->DH() < 0 && p->lfx() >= 0) {
+                //        i += 1;
+                //        break;
+                //}
                 delete p;
                 i += 1;
                 p = B->move(cc, i * this->DH());