Project

# Title Team Members TA Documents Sponsor
2 Autonomous Car for WiFi Mapping
Avi Winick
Ben Maydan
Josh Powers
# Title
Autonomous Car for WiFi Mapping

# Team Members:
- Ben Maydan (bmaydan2)
- Josh Powers (jtp6)
- Avi Winick (awinick2)

# Problem
When moving into a new apartment, house, office, etc, people will often place their wifi modem or wifi extender in a convenient spot without much thought. Having gone through this just last week, it made us wonder if there was a better way to approach this to maximize the wifi strength across your house. The way most people go about testing their wifi is walking into a room, going to a speed tester website, running it, then doing that over and over. This takes a lot of time, isn't very accurate, and doesn't show the absolute most optimal location. We are solving the problem of automating the process of wifi testing of strength and speed in a given space. We would get wifi data from an autonomous vehicle driving around a room, create a heat map of the signal strength to display on a computer, analyze it, and then finally show the weak spots, deadzones, etc..
Some motivation for why this is a good project idea: this project allows you to find the best spot to place a wifi extender for optimal wifi so your zoom meetings never cut out and your instagram reels/youtube shorts/tiktok/angry birds keep playing with no issue (potentially at the same time).

# Solution

The basic idea is to do a scan of the room. Essentially, the car will have a lidar sensor and RSSI sensor on the top which will continuously scan the room for the strongest wifi signal. The lidar sensor ensures that the car will not run into anything and allows us to run the SLAM algorithm for obstacle avoidance. The idea is to do a two-scan approach to avoid the bluetooth connection from interfering with the wifi signal detector. The first scan of the room will be manually driving the car for a few minutes gathering LIDAR data and sending that data to an onboard raspberry pi which will map out the path for the car to take to explore the entire room. This is significantly less driving than the autonomous part (which splits the room into strips to drive back and forth). The onboard raspberry will then stream the path back to the car using codes sent to the motor controllers, where the second scan of the room will drive that path over the room and capture the wifi signal at every point in memory. Once the car is done scanning, all of the data will be sent via bluetooth back to the computer where we can nicely visualize the data and return the location of the optimal wifi signal back to the user.
This naturally introduces a few subsystems to achieve this goal.
Location tracking subsystem to map a location (x, y) with a wifi strength (this is done using SLAM) + Generating a path for the car to drive -> this is mapping the output of SLAM to a path the car can drive to scan the entire floor for the best wifi signal.
Lidar sensing + bluetooth streaming subsystem
Wifi signal catching subsystem which gets the signal strength of the wifi at the location the car is at
Building the car with omnidirectional wheels and motor controllers

# Solution Components

## SLAM subsystem for location tracking + generating a path for the car to drive
While we map out the Lidar data, we can pass it to the SLAM using an ESP32-S3 module. This module also has wifi and bluetooth capabilities to easily transfer the data to the computer to let the user view the heatmap. To run the SLAM algorithm, we will offload the computation to a raspberry pi 5 since it has a much more capable microprocessor to run 2d SLAM. The ESP32 in this case will be responsible for cleaning the LIDAR data and sending commands to the motor controller to move the car.
A separate algorithm will be written to run on the raspberry pi (since it is very compute heavy) which computes the optimal path for the car to drive while gathering wifi data.

## Lidar Sensor
The LiDar subsystem allows for the car to navigate through the room. It can scan the room in order to detect walls and furniture. The sensor helps avoid collisions by measuring the distance from obstacles. It can support the SLAM subsystem in mapping the environment in order for it to be then overlaid with the signal strength of the WiFi in all areas.
This will use the RPLIDAR A1M8 which can be connected to the ESP32 for the lidar point cloud data to be stored in flash for the SLAM algorithm to run.

## Wifi Sensor (RSSI)
Received Signal Strength Indicator is a sensor that is part of the ESP32 module that we can place on the top of our car that detects the wifi signals at a location, and can output a strength measurement in Dbm(decibel Milliwatt) . ESP32 can grab this data and transmit it through its bluetooth module to the computer which will display the data and run a very simple linear scan algorithm to find the (x, y) location with the strongest wifi signal. This is a very simple algorithm but we want it to be transmitted to the computer for the user to be able to visualize it. The ESP32 has an existing module that can measure the received signal strength. RSSI is a component of the ESP32 chip

## Car + mecanum wheels
We would 3D print a car and omnidirectional wheels, above the car would hold the lidar sensors as well as the RSSI and SLAM module. The ESP32 module would be placed on top, and have bluetooth send the data to the motor controllers for which direction to turn, move forward, or backwards. There would be different levels for each of the sensors, within the chassis holding the wheels, next level up holding the PCB board and motor controllers, and the top most level holding the ESP32 and the lidar sensor. The ESP32 has the RSSI and the lidar sensor will grab light data for SLAM.

# Criterion For Success

Before the car is able to drive, we need the car’s wheels to be able to be controlled by a program separately. Each mecanum wheel needs to be able to function properly to control the multidirectional aspect. This consists of connecting the ESP32 module to the PCB which is connected to the motor controllers which are connected to the motor of each wheel.

We would need our 3D printed car with omnidirectional wheels to be able to be controlled manually using a computer by sending the driving commands (using arrow keys) over bluetooth. We would need to make sure it is able to move in all directions around a room.

After testing the driving functionality, we would need it to be able to drive with a hard coded path for it to follow to map out the wifi of the room.

When the car can be driven autonomously, we need to achieve the ability to use the lidar sensor to map out a path for the car to follow through the room without needing a predetermined path. This is done using the Lidar sensor and offloading the difficult SLAM computation to a raspberry pi. This involves the following: gather lidar data -> run through slam on raspberry pi -> use generated location and grid based map returned by SLAM to run a path planning algorithm for the car -> start path algorithm. The part that is a criterion for success here is the algorithm we create to generate a path from the grid based map returned by SLAM.

Use an ESP 32 chip (with RSSI add on) to detect wifi strength and then send it over bluetooth to a computer where it would process the data and generate a heat map of the given space. Optionally give the user advice on where to move the modem to maximize either strength in a certain area or best general coverage.

Write an algorithm that will take all the wifi heatmap data and return an optimal spot to place the wifi extender. This is a very complicated algorithm since wifi data can be interpolated (for example, if the strength at x = 1.0 is strong and the strength at x = 0.0 is weak then you can say the strength at x = 0.5 is medium). This essentially means that given a 2D list of wifi signal strength data you have potentially infinite spots to place a wifi extender since you can interpolate anywhere.

Write an algorithm to find local deadspots using the heatmap. This can be done on the computer to visualize to the user and onboard the esp32 or the raspberry pi on the car to avoid mapping out sections of the room which are clearly deadspots. If it runs onboard the car it could save a lot of time by avoiding mapping out large sections of the room but it is again a very computationally intensive algorithm since it is essentially gradient ascent.

GYMplement

Srinija Kakumanu, Justin Naal, Danny Rymut

Featured Project

**Problem:** When working out at home, without a trainer, it’s hard to maintain good form. Working out without good form over time can lead to injury and strain.

**Solution:** A mat to use during at-home workouts that will give feedback on your form while you're performing a variety of bodyweight exercises (multiple pushup variations, squats, lunges,) by analyzing pressure distributions and placement.

**Solution Components:**

**Subsystem 1: Mat**

- This will be built using Velostat.

- The mat will receive pressure inputs from the user.

- Velostat is able to measure pressure because it is a piezoresistive material and the more it is compressed the lower the resistance becomes. By tracking pressure distribution it will be able to analyze certain aspects of the form and provide feedback.

- Additionally, it can assist in tracking reps for certain exercises.

- The mat would also use an ultrasonic range sensor. This would be used to track reps for exercises, such as pushups and squats, where the pressure placement on the mat may not change making it difficult for the pressure sensors to track.

- The mat will not be big enough to put both feet and hands on it. Instead when you are doing pushups you would just be putting your hands on it

**Subsystem 2: Power**

- Use a portable battery back to power the mat and data transmitter subsystems.

**Subsystem 3: Data transmitter**

- Information collected from the pressure sensors in the mat will be sent to the mobile app via Bluetooth. The data will be sent to the user’s phone so that we can help the user see if the exercise is being performed safely and correctly.

**Subsystem 4: Mobile App**

- When the user first gets the mat they will be asked to perform all the supported exercises and put it their height and weight in order to calibrate the mat.

- This is where the user would build their circuit of exercises and see feedback on their performance.

- How pressure will indicate good/bad form: in the case of squats, there would be two nonzero pressure readings and if the readings are not identical then we know the user is putting too much weight on one side. This indicates bad form. We will use similar comparisons for other moves

- The most important functions of this subsystem are to store the calibration data, give the user the ability to look at their performances, build out exercise circuits and set/get reminders to work out

**Criterion for Success**

- User Interface is clear and easy to use.

- Be able to accurately and consistently track the repetitions of each exercise.

- Sensors provide data that is detailed/accurate enough to create beneficial feedback for the user

**Challenges**

- Designing a circuit using velostat will be challenging because there are limited resources available that provide instruction on how to use it.

- We must also design a custom PCB that is able to store the sensor readings and transmit the data to the phone.