Friday, June 6, 2014

Week 7-10: The Conclusion

As the work from week 7-10 was very similar, we can group the work we have been doing from the past week together.

Final Mechanical Setup
The group initially started with using five infrared sensors in the front but then realized that it was unnecessary to have so much and the system would be most efficient with the use of only 2 infrared sensors.
The Arduino has been mounted on acrylic and all of the sensors have been mounted through convenient means whether it would be another acrylic mount or zip ties.

Performances...
Before mounting the car, the RC car was able to head toward waypoints and then update to go to a new one; however, during the process of permanently soldering all of the sensors, the compass module was wired incorrectly and was overloaded with voltage. This means that the 3.3V Compass had double the voltage flow through it, essentially destroying its circuits and making it return faulty numbers. A new compass was ordered but it took a week to arrive and unfortunately, this new compass was also broken. This means that the waypoint traveling objective cannot be fully tested for all arguments and errors but is at the stage where it works.
While the GPS was down, the State Control was completed and the object is able to avoid objects at low speeds. The scenarios from week 5-6 were tested and the robot was able to avoid the objects with no problem. The only problem was when there was a wall in front of it and it had no idea where to go from there.

Conclusion
The GPS Guided Autonomous Robot can be considered a success, as it was able to clear the objectives that were given to it.  Firstly, the Arduino Mega was able to utilize the motors on the RC car by sending servo commands to them. With fullcontrol of the car, the Arduino gathered data from its sensors and used advanced algorithms to find the desired heading and drove the RC car accordingly to the waypoint. While driving to the waypoint, the Arduino utilized its state-control program to avoid any events that may interfere with its path using its infrared sensors and drove around the objects that were in the way.

Future Work

Though this project can be considered a success, there were many shortcomings that can be improved on. Because the compass module was damaged due to overvoltage, the tests for 100% accuracy of the GPS algorithms were cut short. This means that though the car worked, it is impossible to be able to conclude the project as a success and will require more tests in the future. Since ROS was not included in the final product, 





Tuesday, May 13, 2014

Week 5-6 Update


Objectives

  • Add scaled steering so the amount the wheels turn is dependent upon how far off of the desired course the robot is
  • Calculations to determine heading and distance between current location and next waypoint
  • Basic state Control with 3 IR sensors

Accomplished


  • Determined series of tests for IR sensor testing
  • Scaled steering when traveling north
  • Heading and distance calculations between waypoints
  • Integrated calculations, and scaled steering into code such that robot turns toward next waypoint
Not permanently mounted, but the car is controlled by the Arduino regardless
Close up of the RC Car

IR Sensor Testing

  • Began brainstorming different situations that the car could run into when it is driving
  • The following images represent an outline of tests that will be performed using 3 infrared distance sensors mounted on the front bumper of the vehicle
  • The purpose of these tests is to determine the success of the obstacle avoidance algorithm
Scenario1 : Avoids Object that is in slightly to the side of it by going
the path which requires the least turn
Scenario 2 : Same situation as Scenario 1 but turns the other way this time
Scenario 3: When it is directly in front of it, it will decide which way
    will bring the car closer to the final destination
Scenario 4: When it is surrounded by objects, it will back up
and try to maneuver around it
Scenario 5: It will continue object avoidance after it
 clears its first obstacle
Scenario 6: When approaching a wall, it will turn accordingly 

Scenario 7: Same situation as Scenario 6 but the other side of the car

Scenario 8: Will have to identify other cars that are also running on the track

Scenario 9: Same situation as Scenario 8

Scale Steering


  • Allows robot to turn more or less based on how far off of desired heading it currently is
  • This will minimize swerving and smooth path of travel

Video of Scaled Steering


Formula to get the Angle needed for the Heading


Next Tasks


  • Travel to and stop at target waypoint
  • Change target waypoint
  • Travel to new target waypoint
  • Basic state Control with 3 IR sensors


Hopeful test run of the RC car going from point to point on Buckley Field



Tuesday, May 6, 2014

Week 4-5 update

Week 4


Objectives

  • Acquire and display GPS receiver data via ROS
  • ROS implementation on RaspPi
  • Communication between ROS and Arduino
  • Vehicle moving to single, specified waypoint
  • Basic obstacle avoidance
  • Decide on a path planning algorithm to pursue

Accomplished


  • Acquired and displayed GPS receiver data via ROS
  • Communication between ROS and Arduino
  • Vehicle moving toward single, specified waypoint
  • Decide on a path planning algorithm
  • Flow chart of program

The Flow Chart and Logic System for the Robot



Current Code as of Now

Next Tasks


  • Add scaled steering so the amount the wheels turn is dependent upon how far off of the desired course the robot is
  • Calculations to determine heading and distance between current location and next waypoint
  • Basic state Control with 3 IR sensors






Tuesday, April 29, 2014

Week 3-4 Update

Week 3


Objective:
Get all of the sensors tested to make sure they are working and test the specific ranges the sensors will return

Accomplishments:

The Magnetometer (Digital Compass)

Able to communicate with the Arduino and return accurate values of the direction it is pointing

Specifications:

  • 12C (serial) interface

              - 1 to 20 hz selectable update rate

  • .5 degree heading resolution
  • 1 degree repeatability
  • 2.5 degree accuracy 
Will be mounted in the front of the car and will be kept far from other electronics so that there is no electrical interference acting upon the compass

Compass module and IR distance Sensor connected to the Arduino

The IR distance sensor 

Diagram of the IR Sensor

Able to return values where 0 represented that there is nothing within range and higher numbers represented how close the distance was.

Specifications:

  • Range:  20 to 150 cm.
  • Analog connection
How to Add to RC Car:
The  is going to be to mount 5 IR distance sensors in five prime locations on the car so that it will be able to detect objects from all angles that it is heading. One will be mounted forward to detect things directly in front of it, two will be looking diagonally forward to detect oncoming objects from the side and two will be on the side to detect whether the RC car is riding along a wall.

Because of the limitations in the range of the IR Sensor, the car will have to be able to respond to an object after it is in a range of 1.5 meters so that will be a challenge for the group to perfect.


ROS

Now running on an Ubuntu Server with the Arduino attached via USB. The ROS server can be communicated with through SSH or TeamViewer desktop client. A program was written for the Arduino to print simulated NMEA data to its serial port for processing in a python script running on ROS. The python script to parse the data is still being written but the calculations themselves are finished.

Ross Communication between Arduino and Server


How far have we gotten with ROS

  • Began understanding the basics
  • Created simulator to move a turtle around the screen with inputted data
    • Similar to how GPS robot movements will be controlled with inputted data
  • Created ROS server and client to process inputted data
    • Running ROS on Ubuntu Server until ROS is built on RasPi
  • Much more difficult to input NMEA data directly through serial (less support than Arduino)
  • GPS receiver will be its own node
Ability to move servo with Arduino Via Ros


Xbee Tranciever Module

Data can now be passed between Arduino and ROS through serial.
Both Xbee Trancievers

Specifications
  • Creates wireless serial communications between two devices
  • Useful for monitoring ROS and debugging code
  • Capable of 6 mile transmission
  • 156 kbps transmission rate

Next Tasks

  • Acquire and display GPS receiver data via ROS
  • ROS implementation on RaspPi
  • Communication between ROS (on RasPi and Arduino)
  • Vehicle moving to single, specified waypoint
  • Basic obstacle avoidance
  • Decide a path planning algorithm to pursue


Tuesday, April 22, 2014

Week 2-3 Update

Week 2 Conclusion
Objectives:

Connection between the Arduino and the ESC:
The Arduino was finally able to connect to the Traxis ESC. It was very difficult to do because the Traxis has its own preprogrammed arming sequence that we had to replicate to connect to the ESC with our Arduino.  To fix this issue, we had to connect the ESC to an oscilloscope and analyze the connection between the ESC and the receiver so that the Arduino can replicate the same signal.

GPS:
The Arduino and the GPS module
The Arduino was able to utilize the GPS module and connect to various satellites to acquire locational data. The GPS was very inaccurate due to the urban setting and hopefully will have better success in a rural area where there is not as much interference.
The GPS saying the "current location"




Current Situation:

The Arduino is now able to utilize all of the motors on the vehicle. It is also now able to use the GPS. Getting the Arduino to connect to all the motors on the RC car was difficult and now that it has been done, a major hurdle has been overcome.

For the final project to come together, there are still many things have to come together before the final product. First of all, all of the sensors have to be tested in the Arduino and tuned to return values that will be useful to the RC car. Secondly, the algorithm for the movement has to be put together so that the car will be able to navigate to the predetermined destinations autonomously.

Future Plans:
Sensors that have to be worked on soon:
Compass module
Infrared Distance Sensor

Xbee Transceiver modules
The IR Sensor, Compass Module, and GPS


Algorithm:
Obstacle Avoidance
Movement Algorithm



Friday, April 11, 2014

Week 2 Objectives

After the Week 2 meeting with Dr. Char, Group 19 has split up the duties of the project for this week to accomplish two main tasks. 

Objectives:

Connecting the Arduino to the Traxis XL ESC:
Make sure that the Arduino can communicate with the ESC to move the back-wheel motors

GPS:
Have the GPS accurately communicate with the Arduino and send back the current coordinates of its location

Thursday, April 10, 2014

Week 1-2 Blog

Week 1: The Beginning of the Project

Goals:

  • Start the project
  • Contact Dr. Char



Overview: 
The group met together on April 4th and talked about the future plans of the project. It was decided that it was important to focus on the coding aspect on the project so it was a priority to get all the basics out of the way before any complicated coding was to be done. This meant that all the materials had to be brought together, the Arduino had to be plugged into the RC Car, make sure that all the motors are working with the Arduino.

What Happened During Week 1:

Gathered all the Essential Materials
The RC Car, the Arduino Board, extra wires, and a GPS were obtained

Testing Steering Servo as demonstrated by video
The Steering Servo was plugged directly into the Arduino and since it was a direct connection, it was not that difficult for the Arduino to control.
This is a video to show how the Arduino controlled the motors.

https://www.youtube.com/watch?v=qGcUkF0rZm8

Test the back-wheels with the Arduino
The back wheels are controlled by an ESC so it meant that the Arduino has to connect with the ESC so that the ESC can control the speed of the back wheel.
The Arduino was not able to connect with the ESC so it was necessary look at how the Radio transceiver of the RC car connected to the