February 26, 2016

Project #4: FaceTime Robot


      Every year, the Science National Honors Society at my school hosts an event called "Science Palooza." There are multiple booths set up in the gym featuring many STEM related attractions. This year the robotics club has been allotted a much larger amount of space than normal, so we are in the process of coming up with multiple projects to present. One of our projects will be a FaceTime robot. The Facetime robot will hold an iPhone equipped with Facetime. Students will be able to drive the robot from a control station in the gym and interact with other students using Facetime. We considered using other video methods such as first person view cameras, but eventually decided to use Facetime because of its intuitive two-way video communication.


Building Process

Day 1:

Original Design
The robot is about 2 feet wide, 2 feet long, and 5 feet tall. The Facetime robot is constructed mainly from robotics components that our team used in this year's First Tech Challenge (FTC) robotics competition.
Starting from the bottom, the robot has four wheels. The back two are powered by DC motors and the front are idle. The bottom foot or so of the robot is a square chassis containing most of the robot's electronic components. A tall post that supports the phone is on top of the chassis, and is supported by two diagonal beams. A two-axis servo system which allows 180 degrees of camera motion in two directions, is on top of the post. The phone is secured to the servo system with a phone mount.

 One major foreseeable problem will be the robot's top-heaviness. This can be remedied with the addition of a counter-weight added in the chassis of the robot.




















Day 2:
Building the chassis:
I assembled the chassis and attached motors and wheels. The back two wheels are powered by DC motors while the front two are idle. I was able to attach the first section of the post today.


Day 3:
Got through most of the wiring:
We installed electronic components left over from this year's robotics competition.

Finished building:
We increased the height of the camera post and began work on the 2-axis servo system.




















Day 4:
Coded the robot:
My friend Brendan programmed the robot's controls using Android Java and FTC phones. The two ZTE phones used in the robotics competition act as a transmitter and receiver for the robot. Currently the robot moves using tank controls. This means that the left and right joysticks control the left and right motors respectively.

Set up the servo system:
Today we coded the controls for the servo system. The bottom servo controls horizontal orientation of the phone, and the top servo controls vertical orientation. The phone mount will be secured to the vertical servo.
Two Axis Servo System





















Day 5:
Created a phone mount that is attached to the servo system:
The phone mount is made with Tetrix parts from the FTC robotics competition. Three tabs press on the left, right, and bottom sides of the phone. The pieces happened to be spaced perfectly enough to snugly and safely fit the iPhone. We tested this system and it works!

Phone Mount



















Test and Fix Code:
We tested the robot's driving controls and noticed that it was acting very odd, starting and stopping randomly and spinning in circles. We've determined that it was due to kinks in the wires and a bad core power module. We relieved strains on the wires and now it is working intermittently.



Day 6: 
Fixed Code:
The Robot is driving correctly now. We discovered that there was a code issue in which we mixed up which axis controls motors on the joystick, causing irregular driving controls.


Day 7: 
New Wheels:
When the robot makes a swing turn it experiences a fair amount of bumpiness. We are fixing this by installing front omni wheels. Omni wheels are shaped like normal wheels but also have incremented sideways rollers which allows the robot to turn much better. We also will attach wheels with less traction on the back, as high traction is likely another cause of the rough turns. However, the back wheels will be slightly larger than the omni wheels, so the robot will have a slight tilt. We can fix this problem by adding spacers on one side of the robot, increasing the height of the lower side.










Day 8:
 Fixed Tilt:
I added spacers on one side of the robot's frame, which removed the tilt.


Reduced Bumpiness:
Whenever the robot drove, the phone post shook a lot. We fixed this by adding structural supports on all sides of the post.
 









Added Weight:
We also have added a weight in the chassis of the robot to decrease the chance of the robot tipping over.








 

Day 9:
Removed One Servo:
I removed one of the servos because the horizontal axis increased camera-shake and made it difficult to figure out which direction is forward. Now the phone can only look up and down, which actually improves the driver's experience.










Wide Angle:
We have a plan to attach a wide angle lens to the front facing camera on the phone to increase the field of view.

Improve Controls in Future:
We also plan to make the controls more intuitive. Currently each stick controls the throttle of one motor. The new plan would be to have one stick control the throttle of both wheels and the other stick would control steering.









Day 10:
Tried to Secure Wheels:
We tried to change the wheels to make them more secure, because one of them fell off during a test drive. However, most of our motor mounts are slightly too large for the motor. We may switch out to an older motor but this would require a different motor controller.


Day 11:
Secured Wheels:
We attached the wheels successfully! They are secure and the robot can now drive around! We were able to do our first long range test today.

Long Range Test #1:
We had our first long range test run and it was a huge success! It lasted for about 20 minutes and we were able to get at least 100 yards range (we haven't been able to test farther). The robot never went out of range and I was even able to interact with other people fairly easily through the robot. The controls are still clumsy and the robot shakes when turning, but the experience overall was really great. A long range test also made clear some features that I should add.
Features that need to be added:
-Fisheye lens: I have a small fish-eye lens designed for iphone usage, but I need to make a front facing mount. This shouldn't be too hard.
-Servo controlled arm: An arm that can push elevator buttons would make this robot unstoppable.
-Centered camera: Currently the camera is mounted on the left side of the central post. If the post is moved to the right slightly then the phone will be perfectly centered.


Day 12:
Fish-Eye Lens:
 I created a fish-eye lens mount for the front-facing camera, which increases the driver's the field of view. However, when tested on the robot it did not work perfectly. We are working a more official design of this lens mount using 3D modeling and a 3D printer.
Fish-Eye lens












Day 13:
Centered Camera: 
I centered the phone mount by moving the most to the left slightly. 

Generally Bad Controls:
The tank controls feel unnatural and make driving the robot difficult. We are still working on implementing the new controls discussed earlier. Also, turning is still pretty bumpy. The omni wheels may actually be increasing this bumpiness, so we will test with smoother wheels again. 
Finally, it should be noted that the robot can easily tip if hooked up to a full battery. 


Day 14:

Fixed Controls:
Brendan and I fixed the controls, so now the robot is much more controllable.

Unstable:
When the robot is on full battery it can flip easily. Brendan set the speed to half in the tank tread controls, which prevented tipping. not tip. I think that bit of code wasn't transferred over.

Wheels Bumpy:
The front wheels are consistently bumpy. Both omni and normal wheels experience pretty severe shaking when turning. We're going to try to bring in caster wheels and try those out in hopes that they allow for better turning.

New Fisheye mount:
My friend Clay modeled and 3D printed a new fisheye lens mount for the robot. We will figure out how to mount it after we fix the bumpiness issue. 


Day 15:

Caster wheels:
I brought some small caster wheels (front shopping cart wheels) to replace the front wheels. However, the wheels make the robot very unstable. We are going to try to move them forward to prevent tipping. These wheels should be able to make the robot turn much more smoothly.
Original Caster Wheel Setup




 






I moved the casters forward and now the robot turns very smoothly and maintains its stability!


Updated Caster Design












Day 16:

Fisheye Lens:
We created a mount for the fish-eye lens that holds it to the phone. This lens increases the field of view, dramatically improving the driving experience.
Phone with the new fisheye mount













Driving Test:
I test drove the robot around the hallway and the driving experience was amazing. The lens increased my field of view and confidence while driving, as I had a much better idea of my surroundings. Also, the casters make driving much smoother, so camera shake was a very minimal problem. This was the first time where I almost forgot that I was actually driving a robot.


Day 17:

Preventing Tipping:
The new caster design prevents tipping in the front, but the robot can still easily fall over on its back. To prevent this I've installed two bars just above the bottom of the wheels that will hit the ground before the robot tips over enough to fall.













Booth Design


No comments:

Post a Comment