RSSI-Based for Device-Free Localization Using Deep Learning Technique

Device-free localization (DFL) has become a hot topic in the paradigm of the Internet of Things. Traditional localization methods are focused on locating users with attached wearable devices. This involves privacy concerns and physical discomfort especially to users that need to wear and activate those devices daily. DFL makes use of the received signal strength indicator (RSSI) to characterize the user’s location based on their influence on wireless signals. Existing work utilizes statistical features extracted from wireless signals. However, some features may not perform well in different environments. They need to be manually designed for a specific application. Thus, data processing is an important step towards producing robust input data for the classification process. This paper presents experimental procedures using the deep learning approach to automatically learn discriminative features and classify the user’s location. Extensive experiments performed in an indoor laboratory environment demonstrate that the approach can achieve 84.2% accuracy compared to the other basic machine learning algorithms.


Keywords: device-free localization; machine learning classifier; deep learning; big data; wireless networks; classification; received signal strength

Download Paper: https://www.mdpi.com/2624-6511/3/2/24/pdf

Random subspace oracle (RSO) ensemble to solve small sample-sized classification problems

Under certain situations, researchers were forced to work with small sample-sized (SSS) data. With very limited sample size, SSS data have the tendency to undertrain a machine learning algorithm and rendered it ineffective. Some extreme cases in SSS problems will have to deal with large feature-to-instance ratio, where the high number of features compared to small number of instances will overfit the classification algorithm. This paper intends to solve small sample-sized classification problems through hybrid of random subspace method and random linear oracle ensemble by utilizing binary feature subspace splitting and oracle selection scheme. Experimental results on artificial data indicate the proposed algorithm can outperform single decision tree and linear discriminant classifiers in small sample-sized data, but its performance is identical to k-nearest neighbor classifier due to both shared similar selection approach. Results from real-world medical data indicate the proposed method has better classification performance than its corresponding single base classifier especially in the case of decision tree.

Keywords: Ensemble method, classification, small sample, Euclidian’s distance

Link: https://content.iospress.com/articles/journal-of-intelligent-and-fuzzy-systems/ifs18504

Obstacle Avoidance Robot (Pinky) – Part 3

Part 1 | Part 2 | Part 3 | Part 4 | Part 5

Ultrasonic sensor (HC-SR04) is the most important part in an obstacle avoidance robot. Before we can used the HC-SR04, we need to include the library. To do so, go to the Arduino IDE and click Sketch > Include Library > Manage Libraries and then search SR04 from gamegine.

#include <PWMServo.h>
#include <HCSR04.h>

HCSR04 hc(4,7);    // initialisation class HCSR04 (trig pin , echo pin)

PWMServo myservo;  // create servo object to control a servo
float distance;

void setup() {
  Serial.begin(9600); 
  myservo.attach(SERVO_PIN_A);  // attaches the servo on pin 9 to the servo object
  Serial.println("Test Ultrasonic + Servo Fix 90 Degree");
  myservo.write(90);
  delay(500);
}

void loop() {
  distance = hc.dist();
  Serial.print(distance);
  Serial.println("CM");
  delay(1000);
}

Obstacle Avoidance Robot (Pinky) – Part 2

Part 1 | Part 2 | Part 3 | Part 4 | Part 5

For an obstacle avoidance robot using an ultrasonic sensor (one sensor only), we can use a servo motor to do a rotation in angle. To do the rotation, we need a servo library. In Arduino IDE, there is a built-in function for servo, however, for the first time used, the library always reset my Maker Uno (I do not why! 🙂 ). Therefore, I have installed a new library (PWMServo). To do so, go to the Arduino IDE and click Sketch > Include Library > Manage Libraries and then search PWMServo.

//   Board                     SERVO_PIN_A   SERVO_PIN_B   SERVO_PIN_C
//   -----                     -----------   -----------   -----------
//   Arduino Uno, Duemilanove       9            10          (none)
//   Arduino Mega                  11            12            13
//   Sanguino                      13            12          (none)
//   Teensy 1.0                    17            18            15
//   Teensy 2.0                    14            15             4
//   Teensy++ 1.0 or 2.0           25            26            27
//   Teensy LC & 3.x                 (all PWM pins are usable)
#include <PWMServo.h>
#include <HCSR04.h>

PWMServo myservo;  // create servo object to control a servo

void setup() {
  Serial.begin(9600); 
  myservo.attach(SERVO_PIN_A);  // attaches the servo on pin 9 to the servo object
  Serial.println("Test Servo");
  myservo.write(90);            // Initial Position
  delay(500);
}

void loop() {
  myservo.write(90);            //90 
  delay(500);
  myservo.write(45);            //45 
  delay(500);
  myservo.write(0);             //0 
  delay(500);
  myservo.write(45);            //45 
  delay(500);
  myservo.write(90);            //90 
  delay(500);
  myservo.write(135);           //135 
  delay(500);
  myservo.write(180);           //180 
  delay(500);
  myservo.write(135);           //135 
  delay(500);
}