First steps to autonomous outdoor flight...
Some of you might already suspect that I am trying to make my tricopter fly autonomously not only indoors, but also outdoors. I got some parts as a present from watterott.com (GPS & pressure sensor) and I bought an aditional compass sensor. First of all, I had a look at the GPS. It is a 10Hz, 65 channel SUP500F receiver (SUP500F). Results were a bit disappointing:
I am standing still during logging (~1 minute), with a free view to the sky and no clouds. Next, I tested the pressure sensor (Bosch BMP-085). I was just using some very simple low-pass filters, and results were pretty ok already:
The sensor was moved several times from 0 to 2.5 meters. The compass (HMC6352) also works pretty ok. It delivers very precise heading information, even when the motors are running. But, when the sensor is tilted, there is an error in heading (due to the principle of measuring). There are much more expensive sensors available that can correct for tilt, but that is not really a problem I think: In position hold, the tilt angle will always be pretty low. When doing waypoint navigation, the heading can be read from GPS, hence heading data can be calculated from complementary filtering of gyro/ GPS/ compass if necessary. Here is a extremely boring video of my DLX with pressure sensor and compass active. From second 20 till the end of the video, I am not touching throttle or yaw anymore:
Finally, I had the opportunity to test a uBlox LEA4 GPS receiver from a friend of mine. On the first picture, I was standing still for ~1 minute, on the second picture I was walking around in several "8's". This GPS receiver seems to be pretty awesome, that's why I instantly ordered one. I am pretty confident that position-hold will work out with this sensor.
GPS, pressure sensor & compass are connected to an extra microcontroller which does all the processing. It sends a small byte array (4 bytes containing throttle, yaw, roll & pitch correction data) to the TriGUIDE via UART. The correction data is forwarded directly to the motors. Like this, modifications on the TriGUIDE firmware are minimal, and processing speed doesn't suffer.
I am standing still during logging (~1 minute), with a free view to the sky and no clouds. Next, I tested the pressure sensor (Bosch BMP-085). I was just using some very simple low-pass filters, and results were pretty ok already:
The sensor was moved several times from 0 to 2.5 meters. The compass (HMC6352) also works pretty ok. It delivers very precise heading information, even when the motors are running. But, when the sensor is tilted, there is an error in heading (due to the principle of measuring). There are much more expensive sensors available that can correct for tilt, but that is not really a problem I think: In position hold, the tilt angle will always be pretty low. When doing waypoint navigation, the heading can be read from GPS, hence heading data can be calculated from complementary filtering of gyro/ GPS/ compass if necessary. Here is a extremely boring video of my DLX with pressure sensor and compass active. From second 20 till the end of the video, I am not touching throttle or yaw anymore:
Finally, I had the opportunity to test a uBlox LEA4 GPS receiver from a friend of mine. On the first picture, I was standing still for ~1 minute, on the second picture I was walking around in several "8's". This GPS receiver seems to be pretty awesome, that's why I instantly ordered one. I am pretty confident that position-hold will work out with this sensor.
GPS, pressure sensor & compass are connected to an extra microcontroller which does all the processing. It sends a small byte array (4 bytes containing throttle, yaw, roll & pitch correction data) to the TriGUIDE via UART. The correction data is forwarded directly to the motors. Like this, modifications on the TriGUIDE firmware are minimal, and processing speed doesn't suffer.
Very nice, i will build my self a tri when i have time.. One thing i have thought about is if it would be possible to have two gps, one on the aircraft and one on the ground as reference to calculate out the errors to get cm accuracy. If you have access to two uBlox LEA4 GPS, you could do a test, and log them to see if they produce the same drift, if so it would be possible.. I am very curious, it might be that they do some fancy interpolation calculations inside, and do not produce the same position...
ReplyDeleteHi, I think for d-GPS to work, both receivers need to have exactly the same conditions (satellites, time etc.), and that will never be the case unless special algorithms are used inside the GPS modules...
ReplyDeleteHey William. Your height control looks really stable. With the GPS I've experienced similar problems. Unfortunately it is not the quality of the receiver which makes it suitable for a control task but the settings of the internal filter. I compared a expensive FV-M8 and also the LEA4 by walking on a stone circle:
ReplyDeletehttp://tinyurl.com/GPS-FV-M8
http://tinyurl.com/GPS-lea4
The main advantage of the LEA4 is that you can configure the internal filter to suit our control task. I'm looking forward to your first position hold tests.
~Stefan
Hello Willian ... you are the master !
ReplyDeletei making my own navi code too.
i am using a ublox4 and atmega 168
i started my project this week.
can i talk with you about the calculation to auto pilot the uavp ?
regards Eduardo ...
Hi Eduardo,
ReplyDeleteyes we can discuss some things if you like. How about if you write me an email with the components you use and your ideas. My code is almost finished (but not working yet ;-D), I can also tell you my ideas.