Final presentation
Here is the powerpoint for the final project presentation. final.ppt
Here is the powerpoint for the final project presentation. final.ppt
The UAV project is probably over. I moved away, and the airplane is in my parents’ basement. I don’t think we will be flying it anymore.
We flew the airplane, but radio interference caused the data logging software to exit. There were some radio problems, so the airplane was uncontrolled at several points. The landing gear was slightly bent and the propeller was chipped when the airplane went off the runway after landing.
I think I graduated. No more school for me. Now I’ll just go home and collect welfare.
Today I had my last class ever. It was a stupid class: American Indian studies, but who cares. I wrote three major assignments in the last three days. My 25-page senior design report only took 6 hours to put together. The antisatellite missile project is over. We did our presentation Thursday, and the paper is all done. Unfortunately our final design didn’t quite hit the satellite in the simulations. Only one more week and three easy finals until school is over forever.
Only two more papers to write and three more tests to take until school is over forever.
I actually found something to wear for the presentation. I’m not sure if it matched, but it appears to have been sufficient for the occassion. Vance Coffman was at my presentation. I expected he would try to hire me for lockheed, but maybe he just forgot. I had 36 slides in my presentation and it still only took 12 minutes to get through it. That was strange because it took me 15 minutes to read through it on my own.
I spent about 5 hours putting together a power point presentation for the symposium tomorrow. Unfortunately I think I’m supposed to dress more formally for the presentation than I normally do. I discovered that I have two sports coats in my closet, but I’m not sure if either one is mine. I think they might be Homer’s. I guess I will just take a risk and attempt to match a shirt and tie with some pants. I have never done this successfully before, so I probably won’t get it right this time either. Oh, well. At least I found a tie that is already tied, becasue I’m not very good at tying ties. Maybe I could wear a clip-on bowtie instead.
Flight testing didn’t happen, but I worked on the airplane for about 15 hours saturday and sunday. We tried to fly it but the engine didn’t function to specs. I found that the flight computer needs a new set of batteries (like RC car batteries or something) because the cheap ones keep dying. I also need to refine the flight controller, especially the servo driver. I need to ad external com port and power switch to airplane. There is no more time to fly it before the presentation, but it will fly after school is over.
I spent about two hours today working on the autopilot. I put the pitot equation in the airspeed calculations, so that it is no longer just a local linear approximation for airspeed. I also found that the rudder and throttle commands had been swapped. Then I increased the pitch and yaw rate gains by a factor of 3. I should do the same for the roll gain. The pitch and yaw rate corrections are in the right direction. I got rid of the time averaging for the angular rate sensors. I reduced the time averaging for the accelerometers and the IR sensors.
I met with Dr. Vogel for the second time this semester. I pretty much just filled him in on the status of the project.
I spent 5 hours today refining the flight controller. The program now calibrates the accelerometer and gyro offset voltages every time it is run. This makes a big difference in reducing errors. Now all of the inertial sensors seem to be working well. I added an online calibration routine for the airspeed sensor as well. It will calibrate itself based on GPS speed. This will not really be an actual airspeed unless there is no wind. It will give a good interpolation of GPS speeds, though. Also, it is a local linear approximation for airspeed. I need to go back and modify it so that it actually calculates the unknown constants in a simple pitot equation. If I combine the airspeed calibration information with that of the atlimeter calibration, I can calculate temperature. Knowing temperature, I could, if i wanted to, calibrate the thermistor.
I need to verify which way I need to orient the X-Y plane IR sensors to work with my coordinate system. I also need to do ground testing to verify the controller gains I’m using so far. I should do this outside, since there isn’t a correct thermal contrast in my room to use the IR sensors.
The flight controller is at least able to run the servos. That is a start.
Only one week until the presentation.
Sam and I spent 5 hours yesterday installing all of the electronics in the airplane. We also fixed the muffler, which had been coming loose. We checked the balance, and it is just about right. It may be a bit nose-heavy, which means we might be able to remove some of the lead weights from the nose.
Next weekend is the last chance I’ll have to fly it before my presentation. I think I might be able to get it ready to fly by then. It is already setup to collect flight data, but not quite ready to control the airplane on its own. Right now there are two receivers onboard: one for control, and the other for data logging. I think I need to solder a longer antenna on the modified receiver before I trust it with the airplane.
I think my flight control software might be sending sevo command updates to frequently. I’m not sure, but it seems like the servo controller is missing some of the signals. I might have to slow the flight software main loop down, or at least slow the servo update down.
Also, the flight computer is missing about 1/4 of the IMU signals due to buffer overruns. This means that I either need to speed main loop execution somehow, or that I need to reduce the IMU output frequency.
I worked for about 12 hours on the project today. I had some help calibrating the gyros. We did this by setting the imu on a piece of rotating farm equipment and timing the revolutions to find the rate. This worked well for the pitch and roll gyros, but the yaw gyro has a problem. I might not be able to use it for the yaw rate controller.
I also made many refinements to the flight software. I corrected some errors and added more file outputs. I ran into a problem, though. There are so many outputs to a data file that the main loop isn’t fast enough to clear the IMU buffer at full speed anymore. I guess I’ve reached the upper limit of performance for the 386 computer.
Tomorrow I intend to install the system in the airplane. I doubt if it will fly tomorrow because I have too many other school things to do this weekend.
Next weekend is the very last chance I will get to fly the airplane.
I spent 8 hours today writing the flight controller software. I have the sensor, navigation, guidance, and control routines completed. It will need much more development to fine-tune things, but almost all of the sophistication is there. I made it so the infrared sensors and pressure altitude are calibrated online. In the future I will add a feature to “lock” the altimeter calibration when the GPS is not working, and to trust the altitude value that indicates the lowest value if there is a significant disagreement.
Right now the navigation system relies mostly on the GPS. I will program 4 different target points to fly to, then the software uses a modified roll-command PN guidance to fly to each target in sequence, then start back at the beginning and repeat the process. A successful target intercept occurs when the airplane flies within a 200 foot horizontal radius centered on the target.
The altitude hold feature is a proportional-integral controller that commands pitch attitudes.
The pitch controller is proportional-derivative with elevator deflection being the control.
The roll controller is a P-D system similar to the pitch controller.
The throttle is currently open loop.
I put in a yaw rate controller to coordinate the banked turns. The output of the controller is proportional to the yaw rate error. The commanded yaw rate is based on the PN heading rate and the bank angle. I need to double-check the way I calculated the yaw rate for coordinated flight.
I don’t have enough time left in the semseter to make a SIMULINK model of the airplane to test controllers and gains, so I will have to do that by trial and error.
I need to calibrate the gyros. I also need to find the offset voltages for the IR sensors. Then I can install everything in the airplane and fly it.
I finally tracked down the bugs in the subroutine that transforms the GPS outputs to a local flat earth system. It works by first converting laltitude, longitude and altitude into a Cartestian Earth-centered Earth-fixed, then rotating the frame into a local topocentric-horizon system. I can’t even remember what the problem was that made it not work before.
I’ve started coding the guidance, navigation, and control parts of the software. I plan on making a rough framework with unknown constants to fill in as I get calibration curves for the sensors and experimental results for the flight characteristics.
I spent another hour last night trying to fix the GPS coordinate transforms. I thought I had found the problem, but now both axes, south and east, are off. I will go through the equations again to verify them before trying some other ideas.
I spent 6 hours today trying to fix the problem with the coordinate system. I tried a few different things. I tried scaling the output to match the scale of the velocity output, but the scale factor was dependent on the direction of travel and was useless. I verified that the lat/long numbers were being read and converted properly. I put in a different set of expressions to change from lat/long/alt to ECEF with no results. I have looked over the rotation matrix for the ECEF-SEZ transformation. It looks ok. Currently the East coordinate is being calculated correctly, but the South coordinate is off by a factor that ranges from 3.16 to 3.5 or so. I need to output the ECEF coordinates and verify them by taking a series of measurements over time at a constant simulated velocity. Then find the magnitude of the change in position. I will take this distance divided by time and compare with the magnitude of the velocity reported by the GPS. If they Are the same, I will be fairly certain that the lat/long to ECEF conversion is OK. Then I will verify all of the intermediate calculations and the transformation matrix to SEZ.
I spent another 5 our 6 hours last week programming. Now I have a functional GPS interface and parser. I have a small problem with the coordinate transformation to the local flat earth. The position information is not in the same scale as the speed information. I think I might have a bad number or equation or something. I’ll have to go through it again. Otherwise, I can just change the earth size/shape parameters until the speed and position scales line up.
I spent about 15 hours so far this week on the project. I’ve calibrated the accelerometers. The gyros, infrared things, pressure sensors, and thermometer all still need calibration. I’ve been working on getting the GPS information integrated in the software. It mostly works now, but I had to let the GPS take up the console port on the 386. I still need to correct the parsing subroutine to make it work right. I need to build a pitot probe. Then I will test everything on the ultralight.
I had a problem with the radio signal getting garbled in the conversion process. I found that the problem was with a timer interrupt that I was using as a system clock. I had to get rid of the timer and replace it with something a bit less accurate.
Note to self: don’t turn GPS on before 386. It can trigger the backup boot mode on the 386 if it is running at 9600 bps. I might have to go back to 4800 bps to avoid this problem.
I spent about 3 hours today working on software for the GPS interface. I tried a few different things. The last thing I tried was to poll the port in the main loop of the data logger. I could get some of the GPS strings, but usually only about 2 or three characters out of 56. The problem is that the fifo buffer on the UART is only 8 bytes. With a 30 - 60 Hz main loop, it just doesn’t get to the buffer fast enough to get all of the characters. I need another interrupt-driven serial interface. The problem here is that I don’t know the address of the UART. I can’t go any farther with this, so I emailed jkmicro. Hopefully they can either tell me the correct address, or hook me up with a driver set that will work.
Powered by WordPress