BeaconAvoid code for AHRC competition.

Dependencies:   MODSERIAL PiSlingers m3pi mbed

Files at this revision

API Documentation at this revision

Comitter:
mpanetta
Date:
Wed Mar 09 17:40:26 2016 +0000
Parent:
3:aa1a77b080eb
Commit message:
Making Public

Changed in this revision

IRBehaviorController.cpp Show annotated file Show diff for this revision Revisions of this file
IRBehaviorController.h Show annotated file Show diff for this revision Revisions of this file
MODSERIAL.lib Show annotated file Show diff for this revision Revisions of this file
PiSlingers.lib Show annotated file Show diff for this revision Revisions of this file
m3pi.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r aa1a77b080eb -r 369caebdf5dc IRBehaviorController.cpp
--- a/IRBehaviorController.cpp	Sat Nov 03 01:03:33 2012 +0000
+++ b/IRBehaviorController.cpp	Wed Mar 09 17:40:26 2016 +0000
@@ -70,6 +70,30 @@
     return tmp;
 }
 
+float
+IRBehaviorController::getBrightness(void)
+{
+    float tmp;
+    
+    NVIC_DisableIRQ(TIMER3_IRQn);   // Disable Ticker IRQ for atomicity
+    tmp = brightness;
+    NVIC_EnableIRQ(TIMER3_IRQn);    // Enable Ticker IRQ
+    
+    return tmp;
+}
+
+float
+IRBehaviorController::getCenteroid(void)
+{
+    float tmp;
+    
+    NVIC_DisableIRQ(TIMER3_IRQn);   // Disable Ticker IRQ for atomicity
+    tmp = centeroid;
+    NVIC_EnableIRQ(TIMER3_IRQn);    // Enable Ticker IRQ
+    
+    return tmp;
+}
+
 void
 IRBehaviorController::dumpDebug(Serial *debug)
 {
diff -r aa1a77b080eb -r 369caebdf5dc IRBehaviorController.h
--- a/IRBehaviorController.h	Sat Nov 03 01:03:33 2012 +0000
+++ b/IRBehaviorController.h	Wed Mar 09 17:40:26 2016 +0000
@@ -33,6 +33,8 @@
     void runSeeking(void);                      // Execute seeking behavior
     
     float getPower(void);                       // Returns the power value needed to execute the behavior.
+    float getBrightness(void);
+    float getCenteroid(void);
     
     void  dumpDebug(Serial *debug);
     
diff -r aa1a77b080eb -r 369caebdf5dc MODSERIAL.lib
--- a/MODSERIAL.lib	Sat Nov 03 01:03:33 2012 +0000
+++ b/MODSERIAL.lib	Wed Mar 09 17:40:26 2016 +0000
@@ -1,1 +1,1 @@
-MODSERIAL#ef4645a79fca
+https://developer.mbed.org/users/mpanetta/code/MODSERIAL/#ef4645a79fca
diff -r aa1a77b080eb -r 369caebdf5dc PiSlingers.lib
--- a/PiSlingers.lib	Sat Nov 03 01:03:33 2012 +0000
+++ b/PiSlingers.lib	Wed Mar 09 17:40:26 2016 +0000
@@ -1,1 +1,1 @@
-PiSlingers#a9351d7f92b4
+https://developer.mbed.org/users/mpanetta/code/PiSlingers/#a9351d7f92b4
diff -r aa1a77b080eb -r 369caebdf5dc m3pi.lib
--- a/m3pi.lib	Sat Nov 03 01:03:33 2012 +0000
+++ b/m3pi.lib	Wed Mar 09 17:40:26 2016 +0000
@@ -1,1 +1,1 @@
-m3pi#1ce8bf1f4452
+https://developer.mbed.org/users/mpanetta/code/m3pi/#1ce8bf1f4452
diff -r aa1a77b080eb -r 369caebdf5dc main.cpp
--- a/main.cpp	Sat Nov 03 01:03:33 2012 +0000
+++ b/main.cpp	Wed Mar 09 17:40:26 2016 +0000
@@ -19,8 +19,8 @@
 // PID terms
 #define P_TERM    0.10f
 #define I_TERM    0.00f
-#define D_TERM    0.05f
-#define THRESHOLD 0.40f
+#define D_TERM    0.08f
+#define THRESHOLD 0.20f
 
 //PID                  pid(P_TERM, I_TERM, D_TERM, &blueTooth);
 PID                  pid(P_TERM, I_TERM, D_TERM);
@@ -90,7 +90,7 @@
 #define BEACON_P_TERM 1.0f
 #define BEACON_I_TERM 0.0f
 #define BEACON_D_TERM 0.0f
-#define GO_SPEED 0.8f
+#define GO_SPEED 0.5f
 
 PID beaconPID(BEACON_P_TERM, BEACON_I_TERM, BEACON_D_TERM);
 
@@ -113,11 +113,11 @@
     
     //FunctionPointer ird_scan(&ird, &IRObjDetector::scan);
     
-        
+    wait(1);    
     base.reset();
     base.locate(0, 0);
     base.printf("IR Track");
-    wait(5);
+    wait(4);
 
     //semihost_powerdown(); // Disable the secondary controller, this reduces both power and noise.
         
@@ -140,6 +140,8 @@
     {
         uint16_t rssiL;
         uint16_t rssiR;
+        float    irBrightness;
+        float    irCenteroid;
         
         blueTooth.printf("\e[1J");      // Clear terminal screen
         blueTooth.printf("\e[H");       // Home terminal screen
@@ -149,10 +151,16 @@
         //pid.dumpDebug(&blueTooth);
         //irController.dumpDebug(&blueTooth);
         
-        blueTooth.printf("Getting power from IR.\r\n");
-        ipower    = irController.getPower();
+        blueTooth.printf("Getting power brightness and centeroid from IR.\r\n");
+        ipower       = irController.getPower();
+        irBrightness = irController.getBrightness();
+        irCenteroid  = irController.getCenteroid();
         blueTooth.printf("IR:     power     = %3.2f\r\n", ipower);
-        ipower    = 0; // Temp disable.
+        blueTooth.printf("IR:     brightness= %3.2f\r\n", irBrightness);
+        blueTooth.printf("IR:     centeroid = %3.2f\r\n", irCenteroid);
+        //ipower    = 0; // Temp disable.
+        ipower = ipower * irBrightness; // We want more avoidance for closer objects
+        //ipower = -ipower;
         
         beacon.scan();
         
@@ -180,7 +188,7 @@
         else
             power = bpower;
             
-        if (rssi > 140)
+        if (rssi > 180)
         {
             speed = 0;
         }