Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: QEI2 chair_BNO055 PID Watchdog VL53L1X_Filter ros_lib_kinetic
Revision 28:e01253eb6c6f, committed 2019-06-28
- Comitter:
- t1jain
- Date:
- Fri Jun 28 23:52:23 2019 +0000
- Parent:
- 27:da718b990837
- Commit message:
- Updated with Statistics Library
Changed in this revision
--- a/Statistics/statistics.cpp Fri Jun 28 21:16:26 2019 +0000
+++ b/Statistics/statistics.cpp Fri Jun 28 23:52:23 2019 +0000
@@ -1,13 +1,14 @@
#include "statistics.h"
#include "mbed.h"
- statistics::statistics(int* Input, int dataLengthIn, int firstDataPoint){
+ statistics::statistics(int* Input, int dataLengthIn, int firstDataPointIn){
data = Input;
dataLength = dataLengthIn;
+ firstDataPoint = firstDataPointIn;
}
double statistics::mean(){
double sum;
- for(int i = 0; i < dataLength; ++i)
+ for(int i = firstDataPoint; i < (firstDataPoint + dataLength); ++i)
{
sum += data[i];
}
@@ -16,19 +17,24 @@
return average;
}
double statistics::stdev(){
- float sum = 0.0, mean, standardDeviation = 0.0;
+ double sum = 0.0, mean, standardDeviation = 0.0;
+ printf("The length of the array is %d\n", dataLength);
+ //double num = (pow(2.0,2.0));
+ //printf("2^2 is %f\n", num);
+ //int i;
- int i;
-
- for(int i = 0; i < dataLength; ++i)
+ for(int i = firstDataPoint; i < (firstDataPoint + dataLength); ++i)
{
sum += data[i];
+ printf("%d\n", data[i]);
}
mean = sum/dataLength;
- for(int i = 0; i < dataLength; ++i)
- standardDeviation += pow(data[i] - mean, 2);
+ for(int i = firstDataPoint; i < (firstDataPoint + dataLength); ++i) {
+ //standardDeviation += pow(data[i] - mean, 2);
+ standardDeviation += (data[i] - mean)*(data[i] - mean);
+ }
return sqrt(standardDeviation / dataLength);
}
--- a/Statistics/statistics.h Fri Jun 28 21:16:26 2019 +0000
+++ b/Statistics/statistics.h Fri Jun 28 23:52:23 2019 +0000
@@ -14,6 +14,7 @@
private:
int* data;
int dataLength;
+ int firstDataPoint;
};
--- a/wheelchair.cpp Fri Jun 28 21:16:26 2019 +0000
+++ b/wheelchair.cpp Fri Jun 28 23:52:23 2019 +0000
@@ -35,6 +35,24 @@
curr_pos = wheel->getDistance(53.975);
}
+void Wheelchair::emergencyButton_thread ()
+{
+ while(1) {
+ while(!e_button) {
+
+ //Stop wheelchair
+ Wheelchair::stop();
+ printf("E-button has been pressed\n\n\n");
+ off->write(high); //turn off PCB
+ on->write(0); //make sure PCB not on
+ //Reset Board
+ NVIC_SystemReset();
+
+ }
+
+ }
+}
+
void Wheelchair::assistSafe_thread()
{
int ToFV[12];
@@ -103,7 +121,7 @@
wheel = qei;
ToF = ToFT; // passes pointer with addresses of ToF sensors
- for(int i = 0; i < 12; i++) // initializes the ToF Sensors
+ for(int i = 0; i < 12; i++) // initializes the ToF Sensors
{
(*(ToF+i))->initReading(0x31+((0x02)*i), 50000);
}
@@ -116,8 +134,9 @@
ledgeArrayRF[i] = (*(ToF+1))->readFromOneSensor();
}
int* aaa = ledgeArrayLF;
- statistics LFTStats(aaa, 100, 0);
- out->printf("stadistics = %f, %f", LFTStats.mean(), LFTStats.stdev());
+
+ statistics LFTStats(aaa, 99, 1);
+ out->printf("Statistics: Mean = %f, Standard Dev = %f\n", LFTStats.mean(), LFTStats.stdev());
myPID.SetMode(AUTOMATIC); // PID mode: Automatic
}
@@ -180,7 +199,7 @@
*/
void Wheelchair::pid_right(int deg)
{
- bool overturn = false; //Boolean if angle over 360˚
+ bool overturn = false; // Boolean if angle over 360˚
out->printf("pid right\r\r\n");
x->write(def); // Update x sent to chair to be stationary
--- a/wheelchair.h Fri Jun 28 21:16:26 2019 +0000
+++ b/wheelchair.h Fri Jun 28 23:52:23 2019 +0000
@@ -75,7 +75,7 @@
void velocity_thread();
void rosCom_thread();
void assistSafe_thread();
-
+ void emergencyButton_thread();
/* Move x millimiters foward using PID*/
void pid_forward(double mm);
@@ -128,6 +128,12 @@
PwmOut* x;
PwmOut* y;
+ //Pointers for PCB
+ PwmOut* on;
+ PwmOut* off;
+
+ DigitalIn* e_button; //Pointer to e_button
+
chair_BNO055* imu; // Pointer to IMU
Serial* out; // Pointer to Serial Monitor
Timer* ti; // Pointer to the timer