There are a zillion quad- and tri-copters out there, from the priciest commercial ones to the funkyiest DIY rigs. This guy has done a tremendous job of trying to bring all the available info in one place: a RCG thread (scroll down past the poll results). If you're into quads, you'll want to check this out.
All Posts (11086)
This article was brought to my attention. It might be of interest here. The gyro in the article is made by STMicroelectronics. There is another post (click HERE) about the first-ever 3-axis digital gyro made by InvenSense.
Click HERE to read article in IEEE Spectrum magazine.
Paul
Tadaa! The new Platform
In our discussion the other day about what programming language to use for our next generation of ArduPilot Ground Control Station (GCS), I mentioned the PixHawk GCS, which is written in Qt. I've been in touch with Lorenz Meier, the team leader, and he's been super helpful in explaining the project and sharing code (see below). We're considering basing the ArduPilot Mega GCS on this code, so this is an opportunity for the community here to check out the code and evaluate how appropriate it is for us.
PixHawk in a general-purpose Micro Air Vehicle (MAV) platform. The first version is a small coaxial helicopter that won first prize in the 2009 European Micro Air Vehicle Indoor Autonomy Competition. It's got an x86 computer onboard, running Linux. Since then, the project has expanded to include a quadcopter and a full open source robotics computer vision toolkit.
Here's a video showing the progress to the competition win:
Although there are lots of impressive aspects of the project that may be of use to us, we're now focusing on the groundstation. Here, from the project's website, is the project description:
"The groundstation is the only interface to an autonomous operating
robot. Even when not operating autonomously, e.g. during system tests,
just a joystick or the remote control is not enough as measurement
values have to be available in real-time and configuration settings have
to be changed.
Features
- Multi-MAV support
- Support for rotary and fixed-wing (Airplanes, helicopters, coaxial and quadrotor designs)
- Joystick control
- Voice/Audio output tested on Mac
Implementation
- Cross-platform: Windows, Linux, MacOs, Maemo
- Open Source (GPLv3+)
- C++, Qt 4.6 based
- Look and Feel completely customizable
Supported Hardware
- Any PC/Mac
- iPad
- Smartphones (iPhone, Nokia N900, currently untested)"
Here are some other views of the interface:
Engineer view
Parameter / Settings / MAVLink View
Pilot view
The source code (in zip and rar forms) is now hosted here.
There is a very complete API, with documentation here.
They're just cleaning up the code a bit, and once they do the latest versions will be hosted on github here.
I'm no programmer, but I've been very impressed by what I've seen so far. Rather than reinvent the wheel, I'm leaning towards recommending that our team start with PixHawk
There are loads of open source quadcopters out there, but they're all a bit too DIY for me--I just want something cheap that works right out of the box. I love the Parrot AR.Drone, which fits that bill, but it's not really a UAV, because you can't give it waypoints and it doesn't know where it is since it doesn't have GPS.
Adding GPS to the AR.Drone would be easy if you could get access to the datastream the AR.Drone is sending back via WiFi, and there is indeed a physical port that could allow that, but Parrot has not enabled that and they don't want to emphasize that possibility for fear that the AR.Drone might get regulated as a UAV, rather than a flying toy.
So rather than wait for them to turn that on, I decided to take matters into my own hands. As you can see above, I just added an ArduPilot, a GPS and an Xbee to the AR.Drone. They're powered by a tap off the balancing connector of the quad's battery, but otherwise they don't have any connection to the onboard electronics.
(Note: you don't really need ArduPilot for this--you could probably connect the GPS right to the Xbee--but I'm using it right now to parse the GPS data and just send down the essentials, along with providing a power regulator for the Xbee and GPS module. But going forward, having ArduPilot onboard will let us add other sensors and do more onboard processing.)
All this setup does is send back GPS coordinates to the ground station, with an Xbee at each end. But that's enough to turn the AR.Drone into a proper UAV, since Parrot has already released software that lets you control the AR.Drone from a PC. So all we need to do is modify that code to take the GPS telemetry in from the Xbee, compare that with given waypoints, and calculate a directional vector for the AR.Drone to fly to hit the next waypoint. Then that XYZ command can be sent back to the AR.Drone via WiFi using the Parrot data standard.
So in a sense, the AR.Drone handles the inner loop (stabilization) of an autopilot onboard, but the outer loop (navigation) we'll do from the ground station, along with image processing and other mission planning. Because the outer loop only needs to run at GPS speed (1Hz-4Hz), wireless latency isn't an issue.
Right now, the only official AR.Drone PC ground station is for Linux (here), which is a bit over my head. But now that the quads are getting out to developers, I'm sure someone will port that to Windows, at which point I can have a go at writing the software to read the incoming Xbee data from the serial port and turn it into flying commands to send back via WiFi.
Stay tuned....
This may be of interest to the group !
>>>>>>>>>>>>>>>>>>INVITEFLY-IN
<<<<<<<<<<<<<<<<<<<<<<
OK people...How is this for the "First Annual EZ* (and More) Fly-In"
May 14 thru May 17 2009 (Friday thru Monday)..... Sunup till Sundown
with night flights optional.
Mountainair,NM 87036 (Center of NM)
75 miles SE of ABQ
Altitude 6500 feet (faster TO and Landings !)
Average sunny days .... 24
Average rain days ....... 5
Average Rain amount < .6 for entire month
Average wind for month 10 mph
Average high .............. 75
Average low ............... 41
Looks like middle of May is good.
No neighbors for over 2 miles and area is quite foot-able for those
pesky run away flights. Plenty of room for RV's or tents, and nice
motels and one hotel in town 3.5 miles away.
Noise is not a problem.......Neighbors are usually quiet.
Earl
1.-Download SparkFun Model from here
2.-Open Goggle Earth and click on the Tab Add>Model or just press Ctrl+Shift+M.
3.-In the next window click on "browse" and select the model you just downloaded with extension ".dae".
4.-Drag the building to any position you want and VOILA!!
Your own SparkFun building!
Hello, I did this because I noticed that the altitude of GPS is not stable. GPS coordinates are correct however.
They remain well within a radius of ten meters around the real point. But the altitude is completely crazy, it depends on the day, and even the moment of day. This is related to the position of satellites, I am in Europe, Is this the problem?.But, it's may be a problem for the stabilization of our plane in altitude. And increasingly it is not very accurate.
And with two I2C devices it works, cool.
What do you think of this approach?
This board comes with a dsPIC30F6015 CPU and just for control servo ,receive redio-in and RF datalink.
It can provide the RF moden power directly and driving 4 futaba 3003 servos in the same time.
The sensors and gps will be integrated as one board and connect with this via connector for using new components in the future.
Just for fun.
The only pieces left to complete are numSV doesn't seem to be set right with the Ublox GPS adapter so I can't report on the number of satellites and I need to figure out a UTC clock source for the UTC time and DATE field. Might have to enable those messages on the Ublox.
I've only done bench testing with this as I'm still building my UAV, so if anyone wants to help out please add this to your print.pde file:
void print_remzibi(void)
{
int nMult=0;
int nMeters=0; //Change this to 1 for meters, 0 for feet
long current_lat;
long current_lng;
float lat=0;
float lng=0;
int lat_dd=0;
float lat_ff=0;
int lng_dd=0;
float lng_ff=0;
char *lat_hemi;
char *lng_hemi;
char *lat_zero;
char *lng_zero;
if (nMeters==1)
nMult=1;
else
nMult=3.2808399;
digitalWrite(13,HIGH);
Serial.print("$GPGGA,");
Serial.print("064951.000");//UTC time
Serial.print(",");
if(current_loc.lat < 0)
{
current_lat = current_loc.lat * -1;
lat_hemi = "S";
lat_zero = "0";
}
else
{
current_lat = current_loc.lat;
lat_hemi = "N";
lat_zero = "";
}
lat_dd = (int) (current_lat/10000000);
lat_ff = (float)((current_lat - (lat_dd * 10000000)));
lat_ff = 60 * lat_ff;
lat_ff = (float)(lat_ff / 10000000);
lat = (float)(lat_dd * 100) + lat_ff;
Serial.print(lat_zero);
Serial.print(lat);
Serial.print(",");
Serial.print(lat_hemi);
Serial.print(",");
if(current_loc.lng < 0)
{
current_lng = current_loc.lng * -1;
lng_hemi = "W";
lng_zero = "0";
}
else
{
current_lng = current_loc.lng;
lng_hemi = "E";
lng_zero = "";
}
lng_dd = (int) (current_lng/10000000);
lng_ff = (float)((current_lng - (lng_dd * 10000000)));
lng_ff = 60 * lng_ff;
lng_ff = (float)(lng_ff / 10000000);
lng = (float)(lng_dd * 100) + lat_ff;
Serial.print(lng_zero);
Serial.print(lng);
Serial.print(",");
Serial.print(lng_hemi);
Serial.print(",");
Serial.print("1,");
Serial.print((int)numSV);//number of sats
Serial.print(",,");
Serial.print(current_loc.alt/1000);
Serial.println(",,");
delay(50);
Serial.print("$GPRMC,");
Serial.print("064951.000");//time
Serial.print(",,,,,,");
Serial.print(ground_speed/100,DEC);//ground_speed
Serial.print(",");
Serial.print(ground_course/100,DEC);//ground_course
Serial.print(",");
Serial.print("020410");//date
Serial.println(",,");
delay(50);
//$M message bus system for remzibi OSD
Serial.print("$M");
Serial.print("82"); // Hex Column (01h - 1Eh) for small fonts add 80h (81h - 9Eh)
Serial.print("09"); // Hex Row (01h - 0Dh for NTSC, 01h - 10h for PAL)
Serial.print("BA"); // Hex address of First Character
Serial.print("00"); // Hex address of Last Character
switch (control_mode){
case MANUAL:
Serial.print("MANUAL");
Serial.println(" ");
break;
case STABILIZE:
Serial.print("STABILIZE");
Serial.println(" ");
break;
case FLY_BY_WIRE:
Serial.print("FLY BY WIRE");
Serial.println(" ");
break;
case AUTO:
if (wp_index == 0)
{
Serial.print("HOME:"); //Min length = 7
Serial.print((int)(wp_distance*nMult));
Serial.println(" ");
}
else
{
Serial.print("WP"); //Min length = 6
Serial.print((int)wp_index);
Serial.print(":");
Serial.print((int)(wp_distance*nMult));
Serial.println(" ");
}
break;
case RTL:
Serial.print("RTL");
Serial.println(" ");
break;
case LOITER:
Serial.print("LOITER");
Serial.println(" ");
break;
}
digitalWrite(13,LOW);
}
Then in your main Ardupilot_25_04 file add the following below the if print_telemtry section:
if(REMZIBI)
{
print_remzibi();
}
Also you'll want to then set REMZIBI to 1 in your define.pde
https://www.youtube.com/watch?v=MdQxBZTAv4Y
Its based on Arduimu - flat version.
Everything works at 50hz.
I used SPI to communicate between the CPUs.
Stabilization is simple gyros(drift corrected) feedback loop.
However when I tried adding proportional component to the stabilization (using the euler angels from the IMU) Icouldn't get reed of the oscilations... I gess its becouse of the delays...
any suggestions/comments will be appreciated!
Very nice prototype of a iPad UAV groundstation in this RCG thread. Was originally designed for the iPhone but clearly works better on the bigger screen.
MARCY 1 ATTITUDE HOLD 4 U
Attitude hold on Marcy 1 seems to be a disaster. In the wind, She seemed to actually stabilize with the attitude hold on. When She got near the trees, that must have confused the thermopiles & caused her to bank away from the trees, leading to a seemingly stable position in the middle of the fairway.
In 1 short break between storms, the attitude hold was a disaster.
Cyclic seems to be responding properly but is lagging by 1/2 a complete phase.
Lacking thermopile calibration, currently hard coding the gain & sign. Relying on manual takeoff, taking neutral from whatever the attitude is when the autopilot is engaged.
There is a way to sense when the magnetometer flips over due to pitch. Detect when its gain gets below a minimum. Record thermopile pitch at that point. When gain rises above minimum, if thermopile pitch is reversed, phase is reversed. Theoretically it couldn't reverse pitch & get mag above minimum at the same time. What if it really reverses pitch in 1 revolution where mag is below minimum?
The magnetometer can sense pitch with the thermopile for roll only. The thermopile is a much better pitch estimator than the mag.
Marcy 1 uses throttle modulation for attitude control & maximum flight time, but it reduces thrust by 1/2 & is worthless in wind. 1 option is to overdrive the motor with a 3S or a longer propeller. Also still searching for an actuator which can survive thousands of cycles & is light enough. Not happy about giving Canadia $20 for a crummy coil.
Throttle modulation may also reduce flight time if it causes the motor to run outside its optimum RPM & causes inertia changes in the propeller's airflow.
MARCY 2 CONTINUES AS A TRI ROTOR
With the weather closed back in, desired a more weather proof Marcy vehicle.
Rebuilt her IMU using the straight LISY300AL's from last year's buying spree & a 3/4" balsa cube. The ancient IDG300's just have too much trouble initializing & are too unstable to bother with. Can't see them ever being used for anything now.
Went back to radio foam instead of Marcy Foam #2009 because of the lack of space.
Unfortunately, a 1st flight test revealed the need for Marcy Foam. A bit too much vibration. Despite using the same motors & battery, the smaller Marcy 2 configuration has a lot more power than Vika 2. Maybe the extra cable, CF tubing, & plywood is significant.
RETURN OF STILL PHOTO TIMELAPSES
These are made in 1920x1440. If computing power wasn't so limited, they could go up to 3000x2300.
Now some notes on still photo timelapses.
Create a JPEG list of all the photos: ls `pwd`/*.jpg > list.jpg
Add the file format to the beginning of list.jpg. The format is JPEGLIST, framerate, width, height:
JPEGLIST
4
3648
2736
Create a Cinelerra project with framerate 4, canvas size 2048x2048, YUV color.
Load list.jpg into Cinelerra
Shrink camera so the images fit on the canvas.
Disable track playback.
Rewind to frame 0.
Attach motion.
Set motion thus:
Set the following:
Track translation & track rotation enabled.
Calculation: Save coords to /tmp
Action: Do nothing
Previous frame same block enabled
Draw vectors enabled
Position settling speed: 10
Maximum position offset: 50
Translation search steps: 256
Translation direction: Both
Rotation search radius: 10
Rotation search steps: 4
Rotation center: 0
Max angle offset: 50
Rotation settling speed: 10
Enable track playback.
Set translation block size so the block covers 1/4 of the scaled image & not the black area.
Adjust Block X & Block Y so the block is over an area which always has detail.
Set translation search radius to cover entire area of scaled image but not black area.
Remove all /tmp/motion0* files on every render node.
Render using renderfarm to compute the motion vectors. Use Quicktime MPEG-4 quantization 5.
Disable track playback.
Copy all the /tmp/motion0* files from every render node to the master node.
Set the following in Motion:
Calculation: Load coords from /tmp
Action: Stabilize Pixel
Draw vectors disabled.
Attach Time Average below Motion.
In Time Average set the following:
Frame count: 1
Restart for every frame: off
Don't buffer frames: on
Replace: on
Threshold: 1
Border: 4
In Settings->Set Format set Color model to YUVA-8 bit
Rewind & enable track playback.
Render to Quicktime JPEG maximum quality WITHOUT the renderfarm. That's the rough stabilization print. Motion must be rendered contiguously to accumulate the motion history. Next comes the smooth stabilization.
Disable track playback.
In Settings->Set Format set Color model to YUV-8 bit, Frame rate to 24.
Import the Quicktime movie in a new track & play through it to determine the new range of motion.
Disable playback in the new track.
Rewind to frame 0.
Attach Motion.
Set the following:
Track translation enabled.
Track rotation disabled.
Calculation: Save coords to /tmp
Action: Do nothing
Previous frame same block enabled
Draw vectors enabled
Position settling speed: 3
Maximum position offset: 50
Translation search steps: 256
Translation direction: Both
Enable playback of the new track only.
Reduce translation search radius to cover only the new range of motion.
Remove all /tmp/motion0* files on every render node.
Render using renderfarm to compute the motion vectors. Use Quicktime MPEG-4 quantization 5.
Disable track playback.
Copy all the /tmp/motion0* files from every render node to the master node.
Set the following in Motion:
Calculation: Load coords from /tmp
Action: Stabilize Subpixel
Draw vectors disabled.
Attach Time Average below Motion.
Use the same Time Average settings as the old track.
In Settings->Set Format set Width: 1920 Height: 1440
Rewind & enable track playback.
Render to the final output format WITHOUT the renderfarm. This is the smooth stabilization print.
This is our final timeline.
just wanted to share first pictures of a new project - integrating Ardupilot into the new Arcus Sport glider (a product of robbe here in Germany). The Arcus is an electric glider with a wing span of 2.6 meters, completely made out of "Arcel" - a similar foam like Multiplex's "Elapor". It comes as an RTF kit, complete with six servos (rudder, elevator, 2 x ailerons, 2 x flaps, ESC, and a brushless outrunner for about 260 Euros (350 $).
I have integrated the Ardupilot into the canopy, here are some pics:
Everything is now installed, and Ardupilot 25.4 is installed. All works well under test conditions, will now start integrating into the airframe and test it out in the air...
Best regards from Germany
Matias
Hi All,
I made a little video clip of the Groundstation yesterday!
Let me interduce the FY-3ZT autopilot for small UAV.
Yes! it's made in China.
Yes! it will be low cost. Price level (not set yet)
No! I didn't test it yet. Working on it.
The company who made it call it FY-3ZT! Lets call it jealouspilot. Just a joke.
The Data modem I got with the test sample is the small 2,4 Ghz. (Also provide a long range 433 Mhz 500 mW like the one on the picture.
The 2,4 Ghz
Some of the software was on Chinese So I had to find the right driver by my self. It wasn't a problem just a little annoying.
This is the Autopilot system: It's like "PnP" Everything fits and ready for installation.
This is for Ground station Plug into PC via USB. Also more or les "PnP". (I know this is not the best antenna bla bla) This was what was in the box)
The driver for USB to Serie was on Chinese!.
And now for the Commodore 64 look a like GSC.
You are able to fine tune the settings in Air.
FY3-ZT provide high-precision attitude through to use 32 ARM7microprocessors, integrate
GPS receiver, three-axis MEMS gyro, three-axis accelerometers, pressure altimeter, inertial
strapdown attitude algorithm and combined with Kalman digital filtering and data fusion
algorithms .
Integrated UBLOX 5th generation GPS receiver, 4Hz output, 35 seconds fast positioning time
and accuracy of 2.5 meters CEP.
50HZ inner attitude control, 4HZ outer navigation control.
Multi-channel mixed-control output can be easily adjusting the mixed-control. Including
normal layout none mixed rudder control navigation, elevator and aileron rudder navigation,
elevator and aileron mixed-control navigation, none ailerons rudder navigation. And can
adjust the neutral position in real-time.
Three kinds of control modes: Manual remote control, Auto balance remote control and
Automatic navigation control.
Two kinds of automatic navigation control modes: Air route navigation mode and Mouse
pointing flight mode.
Integrate automatic and manual remote control, higher reliability and practicality, and is
compatible with all common RC remote control facilities, and to provide Servo output
checking.
Auto-return protection of communication interruption.
Distance Automatic photography.
The ground station software contains electronic map that can change the route and tasks online,
real-time semi-autonomous remote control, and can real-time record flight data and play back
off-line.
Adjust and save all the control parameters on line, with the convenience standalone parameter
adjustment software.
Contains the autopilot power supply voltage monitoring, electric aircraft power voltage
monitoring, GPS accuracy of detection and autopilot temperature detection.
Technical parameter.
This is what I have! Feel free to ask and comment!.
Latest documentation
HOOKS.
| Project | Status |
|---|---|
| ArduPilot Mega hardware | In production at Sparkfun. Should be out within the month |
| ArduPilot software | 2.5.04 is stable and very good with thermopiles. 2.5.1 working well with ArduIMU. Doug Wiebel and Jason Short are working on integrating the two into a single 2.6 release |
| ArduPilot Mega software | Should be a pretty easy port from ArduPilot 2.6, but waiting for final hardware |
| ArduPilot Mega IMU shield | Finished. Going into production at DIY Drones HQ this month |
| Ground station software | Automatik is working on improvements to current version, but major rewrite planned for Mega. Decision still coming on which programming language |
| ArduStation Mega | Specs and schematic done. Waiting for PCB layout/fabbing |
| Turn-rate limiter autopilot | This is the cheap, small, easy gyro based autopilot with built-in GPS. Designed for beginners. PCB done. Now debating whether to add full IMU |
| Documentation | Always a work in progress, but the ArduPilot migration to the wiki is complete |
The creators explain what it's for: "We have very high speeds and very long endurance so the platform is ideal for about anything. We have a universal mounting system that lets us put almost anything that is under the payload limits up in the sky. This ship will carry about 10 lbs extra payload.
Presently we have used this design to film off roading, marathons, bike races, nature shots and golf courses. It is perfect for anything from border patrol and event security to crop study and nature filming.
We are currently working with Marine biologists who will use the platform to track and study migrating whales. Unlike planes and helicopters this airship can silently hover over the whales and gather the images needed. They will also be able to take plume samples by lowering a device to into the mist of the whale plumes. For the first time ever the biologist can gather this information while being un-intrusive to the whales environment.
The ship in this video has been customized for Forest Service Fire Fighting Applications. It is set up to carry a TransPeater for communications link, 2 axis HD camera and Thermal Image camera. With all of these mounted it becomes the ideal asset for watching fire lines and tracking ground operations. Unlike other platforms, we can attach a tether and avoid FAA regulations that would otherwise apply."