# InvisibleVision

## What is Project: Invisible Vision?

Our project, Invisible Vision, aims to assist the visually impaired through the use of technology, engineering, and mathematics. While stuck at a four way intersection, waiting for the light to turn green, I noticed that a man was standing at the edge of the crosswalk. I watched for several minutes as he felt around for the ledge of the sidewalk using his white cane. I could tell that he was blind but I was confused as to why he was not crossing the road, instead he simply stood their glancing back and forth. I soon realized that he was listening for the beeping of the crosswalk sign, and doing his best to hear the oncoming traffic. I couldn't help but picture the difficulty of such a task. Walking across a street, a relatively normal activity, seemed a frightfully challenging feat. It was this experienced that helped to inspire the idea behind this product. I knew that there must be a way to help a visually impaired person more easily achieve these daunting tasks which are a part of our everyday lives. The original idea for the robot was to have a vision sensor detect objects and provide feedback to the user. Overtime this relatively simple idea evolved into a complex robot which contains 2 ultrasonic sensors, a vision sensor, two programmable buttons, and creates an absolute positioning system using odometry calculus. While Jay worked on writing the code, I worked on designing the robot. To design an effective robot I used a combination of vex parts and 3D printed parts to suit the specific needs of our project. While constructing this I learned that original plans have a tendency to evolve significantly during the building process, and it is therefore important to come prepared with extra pieces. The robot we finally build was significantly more complex, and more effective, than the one we had originally imagined. Unfortunately, the importance of being prepared was learned the hard way when one of our two motors fried. This posed a major obstacle to our plans, however, in the end hard work paid off.

## The following algorithms were used in Project: Invisible Vision

### Odometry (Absolute Positioning System):

Odometry is the use of data from motion sensors to estimate change in position over time. It is used in robotics by some legged or wheeled robots to estimate their position relative to a starting location.

Suppose that a simple robot has two wheels which can both move forward or reverse and that they are positioned parallel to one another, and equidistant from the center of the robot. Further, assume that each motor has a rotary encoder, and so one can determine if either wheel has travelled one "unit" forward or reverse along the floor. This unit is the ratio of the circumference of the wheel to the resolution of the encoder.

If the left wheel were to move forward one unit while the right wheel remained stationary, then the right wheel acts as a pivot, and the left wheel traces a circular arc in the clockwise direction. Since one's unit of distance is usually quite small, one can approximate by assuming that this arc is a line. Thus, the original position of the left wheel, the final position of the left wheel, and the position of the right wheel form a triangle, which one can call A.

Also, the original position of the center, the final position of the center, and the position of the right wheel form a triangle which one can call B. Since the center of the robot is equidistant to either wheel, and as they share the angle formed at the right wheel, triangles A and B are similar triangles. In this situation, the magnitude of the change of position of the center of the robot is one half of a unit. The angle of this change can be determined using the law of sines.

### PID (Proportional Integral Derivative):

A proportional–integral–derivative controller (PID controller. or three-term controller) is a control loop mechanism employing feedback that is widely used in industrial control systems and a variety of other applications requiring continuously modulated control.

In practical terms it automatically applies accurate and responsive correction to a control function. An everyday example is the cruise control on a car, where ascending a hill would lower speed if only constant engine power were applied. The controller's PID algorithm restores the measured speed to the desired speed with minimal delay and overshoot by increasing the power output of the engine.

Proportional: The obvious method is proportional control: the motor current is set in proportion to the existing error. However, this method fails if, for instance, the arm has to lift different weights: a greater weight needs a greater force applied for a same error on the down side, but a smaller force if the error is on the upside. That's where the integral and derivative terms play their part.

Integral: An integral term increases action in relation not only to the error but also the time for which it has persisted. So, if applied force is not enough to bring the error to zero, this force will be increased as time passes. A pure "I" controller could bring the error to zero, but it would be both slow reacting at the start (because action would be small at the beginning, needing time to get significant) and brutal (the action increases as long as the error is positive, even if the error has started to approach zero).

Derivative: A derivative term does not consider the error (meaning it cannot bring it to zero: a pure D controller cannot bring the system to its setpoint), but the rate of change of error, trying to bring this rate to zero. It aims at flattening the error trajectory into a horizontal line, damping the force applied, and so reduces overshoot (error on the other side because too great applied force). Applying too much impetus when the error is small and decreasing will lead to overshoot. After overshooting, if the controller were to apply a large correction in the opposite direction and repeatedly overshoot the desired position, the output would oscillate around the setpoint in either a constant, growing, or decaying sinusoid. If the amplitude of the oscillations increases with time, the system is unstable. If they decrease, the system is stable. If the oscillations remain at a constant magnitude, the system is marginally stable.

### 1D Motion Profiling

Motion Profiling is a controls algorithm that defines a movement as a series of steps. In one dimension, it defines a motor's position, speed, acceleration, etc. at every timestep during the movement.

## Sensors

### Ultrasonic Sensor

Ultrasonic sensors are a type of acoustic sensor divided into three broad categories: transmitters, receivers and transceivers. Transmitters convert electrical signals into ultrasound, receivers convert ultrasound into electrical signals, and transceivers can both transmit and receive ultrasound.

In a similar way to radar and sonar, ultrasonic transducers are used in systems which evaluate targets by interpreting the reflected signals. For example, by measuring the time between sending a signal and receiving an echo the distance of an object can be calculated. Passive ultrasonic sensors are basically microphones that detect ultrasonic noise that is present under certain conditions.

A quad encoder, also called a shaft encoder, is an electro-mechanical device that converts the angular position or motion of a shaft or axle to analog or digital output signals.

There are two main types of quad encoders: absolute and incremental. The output of an absolute encoder indicates the current shaft position, making it an angle transducer. The output of an incremental encoder provides information about the motion of the shaft, which typically is processed elsewhere into information such as position, speed and distance.

### Vision Sensor

Vision sensors use images captured by a camera to determine presence, orientation, and accuracy of parts. These sensors differ from image inspection “systems” in that the camera, light, and controller are contained in a single unit, which makes the unit’s construction and operation simple. There are differences between these sensors and other general-purpose sensors. For example, multi-point inspections can be done with a single sensor. In addition, thanks to the wide field of view, detection is possible even when the target position is not consistent.