My GPS Emulator will now output ArduPilot sentences for groundstation testing. It now includes an installer for com0com's null modem emulator. With this tool it is possible to tie two COM ports together for testing purposes.
When you first run the emulator, you'll see a button that says "Install Feedback Ports" right on the main screen next to the exit button. Once the com0com installer has been run, you can click Options, Setup Feedback Ports and select the two new virtual COM ports you'd like to use (IE COM254 and COM255). Once these ports are created, you can specify one port for the emulator and the other on your application (ie: ArduIMU test application, ground station, u-Center, MiniGPS, etc). Now, you're ready to emulate.
On the main screen, you have menu options to enable NMEA, uBlox or ArduPilot messages. The new ArduPilot messages include:
ArduPilot Attitude = RER, THH, PSET, CRT
ArduPilot Waypoints = STT, WPN, DST
GPS Data = LAT, LNG, SPD, ALT, ALH, BER
ArduPilot Sensors = BTV, ASP, THH, RLL, PCH
ArduPilot IMU = RLL, PCH, YAW, COG, SOG, FIX, ALT, LAT, LNG, EX0-EX8, AN0-AN5
Sample Output - Everything but IMU
*** Ardu 12/3/2009 2:00:08 AM = UTC: 070008.718 ***
Sample Output - IMU
*** Ardu 12/3/2009 1:57:38 AM = UTC: 065738.78 ***
EDIT: There seems to be some confusion about what exactly I'm trying to show here. The graphical gauges shown above are a part of Dr Mike Black's additions to Jordi's LabView ground station. My software is shown in the top right corner and runs indepentantly of the ground station. It's simply an example of one function you can accomplish with it. Here's an overview of what the emulator is.
Simply put, it generates GPS and ArudPilot messages as if you had a GPS or ArduPilot connected to the serial port.
Function #1) Remzibi's OSD. The program started as a way to fake out Remzibi's OSD and show lat, long, speed, alt, etc object change on the screen. I use a USB to serial cable connected from the PC to the OSD and use my emulator to connect to that COM port. At which point, the OSD comes to life (it stops searching and finds what it thinks are NMEA sentences from the GPS) and starts parsing my data. I have the ability to "fake" out the flight of the plane by moving sliders and making the place fly in circles or change altitude or speed...
Function #2) ArduPilot missions. The second thing I added was the ability to connect the emulator to the ArduPilot via the USB to serial cable and again start streaming NMEA sentences. Additionally, I started listening for ArduPilot messages back in through the COM port and would change my course based on the messages from the ArduPilot. If it said to turn left, my emulator would turn left. If it said go up, the emulator would go up. I used Google Maps to show the location and flight path.
Function #3) uBlox functionality. The third thing I added was the uBlox protocol. It really was just to help with Function #2 and for Function #4. However, with the use of the com0com null port software (included with the emulator) it's easy to specify COM254 and COM255 as virtual serial ports so no hardware is needed to talk from the emulator to the u-center and MiniGPS applications for sentence testing and verification. I spent a bunch of time making fake responses to satellite queries (NAV-SVINFO and GPGSA) to make random strong and weak signals and all sorts of stuff with GPS lock that nobody but me will ever play with.
Function #4) Ground Station Software. The fourth thing I added was ArduPilot messaging on the output. It is possible to use the com0com null port software to create the virtual ports and have the emulator start pumping ArduPilot messages (!!!LAT:XXXX,LON:XXXX*** etc) out the COM port to be received by Dr Mike Black's ground station software in LabView.
Function #5) ArduIMU Software. The fifth thing is the ArduIMU sentences. I'm not 100% done with this because I'd like to add some faked data for EX0-EX8 and AN0-AN5 to make it seems like the board just moved when the sliders get moved, but for the moment, it does fake out the roll, pitch and yaw as well as speed, lat, long and alt parts of the message.
General Info) The emulator currently works from COM1 to COM255, bauds 4800 to 115200 and Hertz 1 to 10. It will also calculate the bandwidth based on the number of messages you are sending. You can turn every message on or off individually (7 NMEA message types, 11 uBlox message types, 5 ArduPilot message types)
I wrote it specifically for software developers who are creating an OSD, Auto Pilot, ground station, ArduIMU application or any other device that parses GPS or ArduPilot/ArduIMU messages.