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
ArduPilot Sensors = BTV, ASP, THH, RLL, PCH

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.

Views: 3329

Comment by Morli on December 3, 2009 at 2:57am
Cool, Good work Happy:) ,
now isn't open source innovative ?
Comment by Paul Mather on December 3, 2009 at 7:36am
Only kind of. I didn't use the source or have to edit anything in the ground station. It's good that ArduPilot is open source which makes decoding their output messages a bit easier... but my GPS Emulator doesn't require any editing of the source (with the exception of running the hardware in the loop mission).
Comment by Rasit Eskicioglu on December 3, 2009 at 9:23am
It is a cool display panel. Will you open source it?
Comment by Paul Mather on December 3, 2009 at 9:35am
Right now, I can't. It's still in VB6 and it's using a 3rd party COM control from MarshallSoft to handle COM ports above COM16. That's one of the down-sides to open source. You can't use 3rd party controls....
Comment by Ahmad Usman on December 3, 2009 at 9:58am
is it open source from where i can download this
Comment by vu2at on December 3, 2009 at 12:00pm
Hey Buddy, its really crazy !
I have seen someone testing ardupilot with X-Plane Flight simulator;
ArduPilot successful flight simulation:
Comment by Paul Mather on December 3, 2009 at 1:25pm
The purpose of this tool is slightly different than a flight simulation. My GPS Emulator creates NMEA, eBlox and ArduPilot output without needing the GPS or ArduPilot/ArduIMU to create it. This can be helpful in testing any application that takes GPS input on a serial port. For example: Let's say you wanted to create a new ground station software. Are you going to go outside and run around in circles with your ArduPilot plane while someone else watches what happens on the screen?

Using the emulator you can create an artificial "test flight" with GPS commands streaming in just like you were out running in circles....
Comment by Dr Mike Black on December 3, 2009 at 3:12pm
Well Done Happy,

Skipped past my GCS and then clocked a new window on it....had to take a second look..

Superb work, working 2.6.5GCs at the mo,weather terrible so this will be excellent to test with instead of runnnign around in the rain!!!

Can you use mscomm as your in VB6 instead of is open as far as i know, well at least its downloadable fre on the net...
again well done!!!!

Comment by Paul Mather on December 3, 2009 at 4:11pm
The downside to MSCOMM is the limit of COM16 as a max.... I really need to make it .NET....
Comment by vu2at on December 3, 2009 at 6:54pm
Hey nice buddy ! Most of your talks are going above my head as I don;'t have that much of kiddeny to understand !
Can I test my autopilot in this software without going for a actual flight and see Ardupilot doing well !


You need to be a member of DIY Drones to add comments!

Join DIY Drones

© 2020   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service