Project

# Title Team Members TA Documents Sponsor
31 Virtually Trained Self-Balancing Pole System
Henry Thompson
Kishora Adimulam
Mason Ryan
Amr Martini design_document2.pdf
final_paper3.pdf
other2.pdf
other1.pdf
proposal1.pdf
video
Teammates: Kishora Adimulam (adimula2), Henry Thompson (hcthomp2), Mason Ryan (mjryan5)

##Background:
There is a growing use for virtual reality as a training environment for AI for applications in the real world. Game engines like Unity have even released machine learning tool-kits for researchers and developers to experiment training AI inside games and simulations. There has been past work in translating these simulation-trained models to physical systems, such as the project done by OpenAI which taught a robot to stack different colored blocks in a specific order only after seeing it once in a virtual simulation. However, there has been no past projects translating AI models trained in Unity to real physical systems.

##Solution:
Our project would be to create a self-balancing pole system, which would be trained as a simulation in Unity and uploaded into a physical system which then would gain the ability to balance the pole. Specifically, we would create a 3D simulation replicating all of the attributes of the physical system itself, and train the agent to learn to balance the pole using the Python API and Tensorflow. The trained Tensorflow model would then be uploaded into a Raspberry Pi, which would then use the control signals of the agent to operate motors to balance the real physical pole.

##Technical Overview:
There will be four major subsystems inside the entire project:

1. Unity Engine Simulation/Training
The Unity engine will train a 3D simulation of a replica of our hardware system. The design of the system will be a one-dimensional track, with a motor that can travel in either direction as well as a pole will be attached to the motor by a cylindrical joint. The system will be trained to swing up a pole which is initially hanging down from the joint, and calibrate itself to keep the pole in a vertical position. We will be using the Proximal Policy Optimization algorithm to train the agent, since it has been shown by OpenAI to be one of the best performing and easy to tune reinforcement learning algorithms. The resulting trained Tensorflow model will be used as the input into the Raspberry Pi Interface.

2. Unity to Raspberry Pi Interface
This interface will take the trained Tensorflow model output by the Unity Engine to create a mapping between the state (angle, angular velocity, and position) to the output (voltage applied to motor). The Raspberry Pi will store this mapping so it can communicate with the hardware system.

3. Raspberry Pi to Hardware System Interface
The hardware system is going to need to communicate the position of the cart, and the angle and angular velocity of the pole so that the Raspberry Pi can determine the output (voltage applied to the motor) to keep the pole balanced. The Raspberry Pi will output a voltage to the to the motor on the cart to set its velocity.

4. Hardware System
The hardware system will be a replica of our 3D simulated model, involving a movable cart on one-dimensional platform and a pole connected to the motor by a cylindrical joint. It will take inputs from the Raspberry Pi to move the cart in order to balance the pole. The hardware system will need to be able to send its current state back to the Raspberry Pi so that it can determine the its velocity. The system will also contain a gyro sensor that will determines its angular position and velocity and relay it to the controller.

Link to Original Post:
https://courses.engr.illinois.edu/ece445/pace/view-topic.asp?id=31235

UV Sensor and Alert System - Skin Protection

Liz Boehning, Gavin Chan, Jimmy Huh

UV Sensor and Alert System - Skin Protection

Featured Project

Team Members:

- Elizabeth Boehning (elb5)

- Gavin Chan (gavintc2)

- Jimmy Huh (yeaho2)

# Problem

Too much sun exposure can lead to sunburn and an increased risk of skin cancer. Without active and mindful monitoring, it can be difficult to tell how much sun exposure one is getting and when one needs to seek protection from the sun, such as applying sunscreen or getting into shady areas. This is even more of an issue for those with fair skin, but also can be applicable to prevent skin damage for everyone, specifically for those who spend a lot of time outside for work (construction) or leisure activities (runners, outdoor athletes).

# Solution

Our solution is to create a wristband that tracks UV exposure and alerts the user to reapply sunscreen or seek shade to prevent skin damage. By creating a device that tracks intensity and exposure to harmful UV light from the sun, the user can limit their time in the sun (especially during periods of increased UV exposure) and apply sunscreen or seek shade when necessary, without the need of manually tracking how long the user is exposed to sunlight. By doing so, the short-term risk of sunburn and long-term risk of skin cancer is decreased.

The sensors/wristbands that we have seen only provide feedback in the sense of color changing once a certain exposure limit has been reached. For our device, we would like to also input user feedback to actively alert the user repeatedly to ensure safe extended sun exposure.

# Solution Components

## Subsystem 1 - Sensor Interface

This subsystem contains the UV sensors. There are two types of UV wavelengths that are damaging to human skin and reach the surface of Earth: UV-A and UV-B. Therefore, this subsystem will contain two sensors to measure each of those wavelengths and output a voltage for the MCU subsystem to interpret as energy intensity. The following sensors will be used:

- GUVA-T21GH - https://www.digikey.com/en/products/detail/genicom-co-ltd/GUVA-T21GH/10474931

- GUVB-T21GH - https://www.digikey.com/en/products/detail/genicom-co-ltd/GUVB-T21GH/10474933

## Subsystem 2 - MCU

This subsystem will include a microcontroller for controlling the device. It will take input from the sensor interface, interpret the input as energy intensity, and track how long the sensor is exposed to UV. When applicable, the MCU will output signals to the User Interface subsystem to notify the user to take action for sun exposure and will input signals from the User Interface subsystem if the user has put on sunscreen.

## Subsystem 3 - Power

This subsystem will provide power to the system through a rechargeable, lithium-ion battery, and a switching boost converter for the rest of the system. This section will require some consultation to ensure the best choice is made for our device.

## Subsystem 4 - User Interface

This subsystem will provide feedback to the user and accept feedback from the user. Once the user has been exposed to significant UV light, this subsystem will use a vibration motor to vibrate and notify the user to put on more sunscreen or get into the shade. Once they have done so, they can press a button to notify the system that they have put on more sunscreen, which will be sent as an output to the MCU subsystem.

We are looking into using one of the following vibration motors:

- TEK002 - https://www.digikey.com/en/products/detail/sparkfun-electronics/DEV-11008/5768371

- DEV-11008 - https://www.digikey.com/en/products/detail/pimoroni-ltd/TEK002/7933302

# Criterion For Success

- Last at least 16 hours on battery power

- Accurately measures amount of time and intensity of harmful UV light

- Notifies user of sustained UV exposure (vibration motor) and resets exposure timer if more sunscreen is applied (button is pressed)