Introduction with Disclaimers
This thread was created to help people get started with the ArduPilot (not ArduMega for right now) and it's integration with ArduIMU, Remzibi OSD and using the NMEA GPS unit that came with Remzibi's OSD. This project is not for the faint of heart. It requires time, money and at the very minimum the use of programming cables to update the firmware on 3 different devices. It might not require any actual programming knowledge to complete all the steps listed below, but you're going to have to install software and open uncompiled source code to upload it to your devices. Just fair warning. It's not rocket science, but it is going to require thought, some skill (making cables) and LOTS of patience. Please don't think you can follow these directions and get everything working in an hour (but who knows, maybe you can). The stuff below won't be at 100% newbie level but I'm also hoping it won't require that you be a programmer or an engineer to follow along. With that said (I hope I've covered my butt enough there)....
Everything you will need (does not include video/audio equipment for FPV)
Boards & Sensors:
~$25 + Shipping
~$57 (with cables, headers, etc) + Shipping
~$100 + Shipping
~$114 + Shipping
Cables & Connectors:
~$20 + Shipping
~$5 (Might want to get 2-3 of these) + Shipping
~Depends. I bought a bunch of different sizes from 1x1 to 1x6 so I could make all the different connectors I'd need
~$4 + Shipping
~$10 + Shipping (This will make life easier during step #5 testing)
Tools you will need:
~$15 + Shipping - You might want to consider a kit
~$9 + Shipping (Makes life easier so you don't have to use your RX to cahnge modes)
BEC to use as 5V Power supply
So you're looking at about $325 + connectors and tools
Steps in the Process
To make life easier, you may want to complete the steps listed below in the order I have them listed. Trying to jump to the last step without completing those that come before it is a recipe for disaster. There is troubleshooting required at each step and since the software is a compilation of several people's work and enhancements are made from time to time, it is best to make sure one thing works at a time.
Step 1) Getting the ArduPilot to work with the Remzibi GPS unit.
Step 2) Getting the ArduPilot to work with the ArduShield and the Remzibi GPS unit (optional if using ArduIMU).
Step 3) Getting the ArduIMU to work with the Remzibi GPS unit.
Step 4) Getting the ArduPilot to work with the ArduIMU and Remzibi GPS unit.
Step 5) Getting the Remzibi OSD to work with the ArduPilot, ArduShield, ArduIMU and Remzibi GPS unit.
A few decisions to make
While this code generally aims at using the NMEA GPS unit that ships with Remzibi's OSD, you have the option of using other GPS units. Currently, uBlox and NMEA are the only two units fully supported, but Sirf (EM-406) support will be added shortly. Listed below are your options and some pros and cons to the decisions you make:
1) Which GPS to use?
The NMEA unit that comes with Remzibi's OSD is very inexpensive. If you purchased an OSD then you already have one. It's accuracy isn't fantastic (+/- 9 ft) but it is 5V (instead of 3.3V) which means it will work with the IMU, the ArduPilot, the OSD or the Shield and it's capable of up to 115,200 baud (not recommended) and 10Hz (not really necessary).
Your next option would be another inexpensive NMEA GPS like the one sold by OHARAP
. The unit is $25 and you might want to get the breakout board for another $12.50 (since the GPS itself has 2mm pins instead of the typical .1" header pins). This is a 3.3V unit and will require the use of the ArduShield which has a 3.3V voltage regulator on board. In reality, you probably don't want to use a 3.3V GPS for this reason. Your hands will be tied and require you to use the ArduShield.
If your GPS is broken, lost or you just need another one, Jordi has started selling the same unit as Remzibi's for only $35
. If you've got one routed through one plane and you're building another, you've got the option of buying more...
Next, you can get a Sirf GPS from Jordi
for $60 or from Futurelec
for $40. I can't say why you'd want to go this route since I don't know what the advantage to Sirf or this module is, but it's going to be supported by this thread shortly.
Lastly, there's uBlox. To my knowledge, it's considered to be the best. It has the biggest antenna, it can go NMEA or uBlox binary protocol and on "warm" starts, it aquires GPS lock in about 2 seconds (which is waaaaay faster than the NMEA units). The uBlox GPS
is $90 plus $20 for the adapter
so it's by far the most expensive. The accuracy is also supposed to be the best on this unit. One minor perk to the uBlox is in the current edits to the ArduPilot firmware, the uBlox code allows for a "timezoneoffset" selection so you can show actual time on your OSD instead of UTC time (Greenwich mean time
2) To shield or not to shield...V1 or V2?
I can't say for sure what's different between the two versions of the ArduShield...other than an additional mux (I think) to enable or disable different serial ports (3 on the shield but all connected to one serial port on the ArduPilot). The benefit of using the shield is it has the built in 3.3V voltage regulator as mentioned above, so if you've got a 3.3V GPS, you need to use it. The other thing it provides is a pressure sensor to determine if the plane is moving forward. If you don't have this, when the plane is flying itself, it will have to use a fixed throttle position instead of varying the throttle to keep it moving. Also, if you're using the thermopiles (not the ArduIMU) the shield has a nice connector
for attaching them. You may also want to try this stand-alone pressure sensor
instead of the whole shield.
3) Which OSD firmware?
There are currently 3 versions of firmware available for Remzibi's OSD. Here we're only focused on OSDV1_68 (standard) and ARDU1_3. The standard firmware contains all the logic of the stand-alone OSD where it's expecting to just have a NMEA GPS unit connected. The additional display variables shown are sent through a custom command message called $M commands. These can be configured to show anything you want from debug messages to contol mode messages (like which mode, waypoint, distance, etc). Only text strings can be added to your existing layout that was configured through the Remzibi OSD config tool.
The Ardu firmware V1.3 uses !!!*** and +++*** status messages from the ArduPilot to show all of the same data except for UTC date and time and does not include any logic for distance to home or direction home. So why would you want to use this firmware? Because it includes a rather basic artificial horizon. There are a series of dashes that appear in the middle of the screen and get updated about 10 times a second. So there's very little lag. The other data gets updated about twice a second since it's not so time critical. $M commands are not compatible with Ardu firmware 1.3 on the OSD and if you try sending them, it will detect 9600 baud rate no matter what...and then nothing will work.
Remzibi's next release of the Ardu firmware will support a few new messages and will no longer support the !!!*** and +++*** status messages from the ArduPilot. Instead $M, $A (replaces status messages), $I (IMU data for pitch and roll) and $SH (to set home location) will be available.
4) How fast should I go?
So everything here has the ability to go 115200 baud and some GPS's can do 10Hz...so why not? Here's the reason. Most of the ArduPilot source was written to work best with uBlox which is fixed at 4Hz. That means 4 times a second, the uBlox sends a message to the ArduPilot. Then the ArduPilot has to do something with it just as fast as it comes in. If you start cranking out data 2.5 times as fast, then the ArduPilot is going to have a hard time parsing all that data. Plus, do you really need the data that fast? Usually, the answer is no. So my suggestion is to stick to between 3 and 5Hz. Another thing to remember is your base station software. It's been my experience that even at 5Hz, the base station software can't handle it....
Baud rate is typically 38,400. That's fast enough to give you lots of bandwidth but not so fast that you get a bunch of checksum errors and re-sent data. By my calculations, the uBlox at 4Hz sending it's 4 messages (NAV-POSLLH, NAV-VELNED, NAV-STATUS and NAV-SOL) it's using 18% of it's bandwidth at 38,400. With NMEA's 2 messages (GPGGA and GPRMC) at 4Hz and 38.400 baud, it's using 16% of the available bandwidth. So the faster you go, the more bandwidth available and the more error prone things will be due to outside interference.
Other places to go to read and get help
ArduPilot Code Page
ArduIMU Code Page
Remzibi (Poor Man's OSD) Thread
Remzibi OSD FAQ Page
NMEA Sentence Detail
Parts List Photo
What's not shown above is all of the video equipment required to use the OSD. Video transmitter & receiver, camera, antennas, etc.
Here's a very impressive example of the end result from cholo!!!!