The autonomous UAV Team is another of the three teams within PVIT Robotics. In Autonomous UAV, our ultimate goal is to design, build, and program a fixed wing aircraft that will be capable of navigating an airborne course without any human interaction. The aircraft is controlled by a small on-board computer that must be able to deal with issues like changes in wind gust speed, maintaining a constant altitude during turns, what to do if it is headed towards a building, etc. To aid in dealing with these tasks and issues, the computer will have at its disposal a variety of sensors including GPS, Camera, Altitude/airspeed sensors, 3-axis gyros, and a compass. The team strides to attend the annual SparkFun Autonomous Vehicle Competition which is to be held in mid-April in Boulder, Colorado. There the aircraft must complete a lap around the SparkFun warehouse building. The team to do it in the least amount of time will win the competition. If no team completes a full lap, both time and distance will be taken into account to choose a winner.

This is the first year that PVIT has had an Autonomous UAV team, so unlike the other teams, we have no mistakes from which to learn. Look forward to another update outlining our progress.

 

It is now possible to count on one hand the months we have left until competition. At this time, we enter panic mode. Lucky for us, panic mode isn’t the only mode we will be using. We are going to tackle the programming of the robot with a modular structure, using different modes for the various situations the robot will be in.

Our current modes are Camera Mode, Obstacle Mode, GPS/Navigation Mode, Drive Mode, and Initialization mode.

Initialization Mode will only run when the robot is first turned on. This mode will check all of the sensors, read and parse the control file and then read the first instruction.

Drive Mode will be our least used mode. It simply tells the robot to drive a certain distance in a certain direction. We will use this mode if GPS signal is erratic or unavailable in any part of the course.

Our main mode will most likely be GPS/Navigation Mode. In this mode the robot will be navigating towards a GPS waypoint using GPS and an electronic compass to stay on course. The robot will exit this mode if one of two states are met:

  1. If the sonar sensors detect on object in front of the car the robot will go into Obstacle Mode.
  2. If the robot is navigating towards a cone and is within 5 meters of the GPS point the robot will enter Camera Mode.

In Obstacle Mode the robot will attempt to identify whether it will hit the detected object or if it can pass by it safely. If the robot will hit the detected obstacle, it will reverse in a semi-random direction and go back into the mode it was in previously.

In Camera Mode the robot will start receiving data from the camera. If an orange conical shape is detected, the robot will attempt to slowly move towards it. If no cone is detected, the robot will spin around and check if it detects a cone anywhere. If  no cone is detected, the robot will go off in a random direction and then go back into GPS/Navigation Mode in order to repeat the process. If worst case scenario no cone is found once again, the robot will move onto the next instruction in the control file.

Robot winding down after a tough day

In Stop Mode our robot will power down and relax with a nice bottle of champagne, if and only if it completed the course.

 

Our sensor setup last year was sorely lacking. We had one sonar sensor mounted in the front, a few vex touch sensors, and a non-functioning camera. We had a random algorithm for obstacle avoidance that sometimes led us into corners and walls. This year we plan to have a more effective sensor array, utilizing five sonars in total. We will have two sonars mounted on the front, two on either side, and one on the rear of the robot. When turning left or right, we will check the readings on the respective side sensor, and if is reporting an object in its range, we won’t turn into the obstacle. We will also do the same type of check when backing up the robot as well. Hopefully these checks will allow us to solve the problems (and walls) we ran into last year.

Another big obstacle we didn’t successfully circumvent was giving our bot instructions. We were able to tell the robot to go to Location 1 and then Location 2 and then look for a cone at Location 2, but we couldn’t say go to Location 1, pass through Location 1.5 and then look for a cone at Location 2. The only team that successfully completed the course was UCLA’s team, and they were able to  easily place a way point for the robot to pass through. Additionally, we also had a problem where we wanted the robot to go straight north for a few meters, but had no way to tell the bot to do that. To fix these cases, we are creating a control file to give our bot instructions. The commands will be simple, such as drive for 10 meters and x degrees, or find a cone at X,Y, or go to X,Y and then move onto the next instruction. This text file will be easily readable by everyone, including those with no programming knowledge. Although interpreting a .txt file in Python programming language is not a trivial task, we have almost finished the required code! We plan on creating a few courses throughout our school campus and then creating a control file for each course. Then we can simply run the robot with a specific control file and have it complete different courses with little downtime. A sample control file is located below, although we would need an autonomous plane to run this one (Hey Boeing, any spares?).

CONE 4043.250 08936.567
DRIV 1000000 180
CONE 3903.350 09541.267
GOTO 4542.400 12131.300 5000
CONE 3359.019 11841.006
 

Last year we had a big problem with our chosen camera, a specialized robotics camera made by Carnegie Mellon University. We could never get it to work outside, no matter the weather conditions. This year has barely started and we already have a fully functioning camera that can identify cones indoors and outdoors. We can successfully navigate to a cone using only directions such as “Go left”, “Go Right”, or “Go Straight”.

 

Additionally, we are slowly splitting up into small teams dedicated to a certain aspect of Robomagellan. Currently the teams are Sensors (Camera, sonar, touch), and Control (GPS, Movement, Main Coding). These groups will change (members are free to hop around between groups) but the split allows us to focus on a certain part of the robot until we need to integrate the systems. Last week, the control team began creating a control schematic that we will soon model in code and the sensor team tested the webcam’s capabilities.

 

Last week the competitive ROV team compared the relative strengths of several different types of motors measured in their gallons per hour and Newtons of force against a fixed apparatus. The data we gathered demonstrated what we had predicted, Tsunami bilge pumps don’t provide enough power. As a result, we’ve turned to Seabotix motors which will effectively double our thrust with only a minimal increase in the weight and displacement of the ROV.
The tests also revealed that the technique we used last year to waterproof the motors, epoxy and other plastics, can’t withstand sustained operation in the conditions for the MATE 2012 competition. The Seabotix motors that we plan on buying will come already waterproofed which should solve both the problems of power and leakage. Next week we’ll receive the mission guidelines and can begin working on the props and mission specific tools.

 

In the last few weeks, the Robomagellan work has been working extensively on learning how to program in Python. We are using the Google Code University Python Class which is a free collection of videos from a college course on basic Python.

Each week we have assigned a different video to watch and then during our Sunday meetings we go over what was covered in the previous lesson and apply it to Robomagellan. Over the last few weeks we have been able to calculate the distance between our GPS coordinates, calculate the angle to the next coordinate, and create a “map” of GPS coordinates with instructions such as “Go 29 Degrees North East for 65 Meters” to go between coordinates . Additionally we created two courses for our Robot, one simple to test the steering and navigation and one challenge course to test obstacle detection as well as navigation and steering.

 

 

Robomagellan is one of the three robotics programs in the PVIT Club. Robomagellan culminates in an April robotics competition where all entered competing robots  are completely autonomous – there can be no human interaction with the robots while they are competing. The goal of the entire competition is to have our robot navigate from a start point to an end point, and touch an orange traffic cone located at the end point. Throughout the course, there are  various obstacles and a few bonus cones that decrease completion time (and thus increase our score). The only information we are given is the GPS coordinates of the cones. So, to successfully complete the course, our robot has to avoid obstacles (which can be trashcans, people, trees, stairs, etc) while at the same time searching for an orange traffic cone.

We have been working on Robomagellan for two years, and last year was our first competition. Most of the teams were college teams, including UCLA and UCSD’s robotics teams. We were one of two high schools competing. We did well, but have a lot of room for improvement!

This year, we plan on using a laptop to do all of our computing, instead of individual micro controllers. This will enable us to have a more central and comprehensive code, and not have to split up tasks among different micro-controllers. Additionally, we are going to re-write all of our code in  Python. All of our team members, even if they aren’t working directly on the programming, will learn how to code in the Python language.

This is going to be an incredible year and we can’t wait to get it started!

 

Sunday saw our biggest and best kickoff so far: clearly the offer of free tacos worked (and thank you again, Mrs Kashyap!). We had a lot of interest and many sign-ups for the different teams, but if you couldn’t make it, didn’t sign up yet, or think you’ve changed your mind, don’t worry: just show up at our regular meeting time of 1pm Sunday and get involved. Now the work – and the fun – begins…

 



One of the fun things with robotics is when you get behavior you didn’t expect and certainly hadn’t programmed – like this little guy who likes orange cones but has a vampire-like fear of sunlight.

 

As part of our weekly updates, we’ll be posting Bios of contributing members to the PVIT program, starting this week with John Jenkins.

John, a current Junior, has been involved in PVIT for 3 years. Last year, he worked on the Robomagellan team, focusing heavily on the mechanical engineering side of the project. This year, he will be leading a new project, the Autonomous Unmanned Aerial Vehicle (UAV)  while still contributing to the Robomagellan project.

John is considering majoring in Aerospace Engineering at MIT. Outside of school he enjoys playing golf  and is the saxophone section leader in the PVHS Marching Band.

© 2012 Palos Verdes Institute of Technology Suffusion theme by Sayontan Sinha