Paul Mather's Posts (44)

Sort by

Closed-source developer forced open-source

For those who are just now joining this thread already in progress... I recently learned how easy it is to disassemble .NET programs. I belived my source code was being posted without my consent and have since been in contact with the user in question and all is good...

That said, please, if you're a .NET developer who's considering creating and selling a commercial program there are programs out there like .NET Reflector (FREE) which can easily disassemble and display your code in seconds.... Do yourself a favor and look into obfuscation software for .NET which will atleast make it harder to disassemble and will, for the most part, stop the casual hacker from viewing your code.

I appreciate all of the positive feedback I've gotten from everyone here and I'm moving forward with the GCS program...in .NET. I am going to release it as open source but I'd like to get more of the development out of the way before I start getting other people involved. I haven't had much success with multi-developer situations and I'd like to get my "big ideas" done before letting everyone else have at it.

Thanks!
Read more…

HappyKillmore's GCS Alpha Release is ready

LotsOfWaypoints.gif
FirstPerson.gif
ChaseCam.gif


I guess I'll call it an Aplha release. I'm not done with the installer yet. The system requirements are .NET 2.0 framework, Google Earth (and maybe the plugin) and DirectX must be installed.

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&displaylang=en
http://www.google.com/earth/download/ge/
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3&displaylang=en
http://www.google.com/earth/explore/products/plugin.html

Download the GCS

I would STRONGLY recommend NOT trying this in the field with a live plane! This program is for TESTING ONLY at this point.

To use the program, select your COM port with your GPS or AP connected through FTDI or USB to serial. Select your baud rate. Click Connect. You can try the Search COM button which will cycle through all your available COM ports at different baud rates looking for your data stream. The Search Baud button will only search on the selected COM port for your data stream at different baud rates.

Once connected, if it's an AP unit, the waypoints and home location should be set automatically. If you're not using AP then you can build a mission file using the AP config tool and copy the .TXT file into the missions folder that gets created in the root directory with the GCS executable. Don't worry, this process will be easier in the future.

On the settings tab, you can select different options for your instruments and Google Earth Settings. The cockpit view isn't working yet.

Chances are excellent that nothing will work with APM since I have done absolutely zero testing with APM.

This release also includes NO error trapping and it will fail if you start collecting serial data before the Google Earth window is loaded....

Let me know how things go....

Read more…
GoogleEarth.gif
LiveVideo.gif
I've made some progress on my GCS project. I'm getting close to a releasable version. Google Earth is working now. I still need to read the mission data when the AP or APM starts sending so I can create the waypoints. Live Video (EasyCAP with Remzibi OSD connected for testing) is working but I need to add a few things so users can configure their input device. The 3D models are working great.
Read more…

HK GCS Proof of Concept

Main.gif

I must be crazy throwing my hat in this ring... but here goes.

http://www.happykillmore.com/Software/HK_GCS/HK.zip

Yet another Ground Control Station project has begun. It's little more than a proof of concept. There is absolutely no documentation or error trapping and is not overly functional... but hey, you've got to start somewhere.

My hopes are to create a language file for this so I can get some friends from around the globe to help me translate this into a bunch of languages.

A few things to warn you about right from the start.

1) It's written in VB.NET so it won't run on Linux or Mac natively...so don't ask. If you're looking for something cross-platform, check one of these GCS programs out:

Andrew Matthews GCS http://www.millswoodeng.com.au/fd_gcs.html - Cross-platform - Written in "Processing."

Jaron http://www.diydrones.com/profiles/blogs/uav-playground-12-an-approach - Cross-platform - Written in Java and "Processing."

PixHawk http://pixhawk.ethz.ch/wiki/software/mavlink/ - Cross-platform - Written in QT

AP GCS - Soon to be cross-platform? - Written in Labview

2) More than likely, this program cannot become the "default" GCS program for AP/APM because of #1 and the general concensus among the APM developers that VB.NET is not the right way to go. For that reason I probably won't make this open source... but it's still "freeware."

My next functions I'm planning on adding are Google Earth integration, Live Camera feed (essentially done but I need to optimize and add some error trapping), KML file support and Recorded file playback.

Unzip the files into a folder and run the HK_GCS.exe file. The emulator is in there as well for testing.

Right now, I'm able to parse NMEA, uBlox, MediaTek, SiRF, ArduIMU binary and text and AP commands.

NOTE: This program requires .NET 3.0 and the "Interop Assemblies" in the links below

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=10cc340b-f857-4a14-83f5-25634c3bf043

http://www.microsoft.com/downloads/en/details.aspx?familyid=3c9a983a-ac14-4125-8ba0-d36d67e0f4ad&displaylang=en

Once I get a little further, I'll have an installer so we won't have to worry about this stuff.

Steps to follow to get this thing to work:

1) Download and install the .NET 3.0 Framework

2) Download and install the interop assemblies

3) Download and install the GPS Emulator (this will give you the DX8VB driver) http://www.happykillmore.com/Software/GPSEmulator/Setup/Setup.exe

4) Download the HK.zip file above and unzip into a folder.

5) Run the GPS emulator. If you haven't already installed the com0com feedback ports, click the "Install Ports" button

6) Click options, setup feedback ports and select 2 unused port numbers (I like 254 and 255).

7) Wait for the ports to get added to your system (will take a minute and you'll have to click next)

8) Select one of your newly created ports in the Emulator but don't click connect yet.

9) Open the HK_GCS.exe and select the Serial Data tab. Click Search COM

10) On the emulator Click Protocols and select something. The 2 checkboxes for ArduIMU Binary are good choices.

11) Click Connect and Start on the main screen of the emulator.

You should see the plane moving on Google Maps and should be able to change pitch, roll, etc on the emulator and have it change things on the Instruments tab of the GCS.

Don't worry, it won't be this many steps in the future. Steps 1-5 will be part of a setup.

Read more…

ArduIMU 1.8.1 Posted

I posted an update to the ArduIMU. If someone else is working on this, please feel free to email me happy@happykillmore.com.

http://code.google.com/p/ardu-imu/downloads/detail?name=ArduIMU_1_8_1.zip&can=2&q=

Fixes in this post:

1) NMEA protocol now works (typos in update function and missing PMTK in init function)

2) Magnetometer works (typo in setup where it said MAGNETOMETER == 1 where it should have said USE_MAGNETOMETER == 1, AP_Compass must be changed to APM_Compass, Buffer mapping differs from AP2.7 and older code in AP_Compass.cpp)

3) Added blinking lights function to GPS parsing routine (blinks when there is no lock but valid message from GPS unit)

4) Added #define GPS_CONNECTION 0 // 0 for GPS pins, 1 for programming pins (this allows the user to select where the GPS is connected)

Please note that this isn't considered an "official" release and it may well get deleted... I didn't check with anyone before making these changes and posting this :)

Known issues with this version:

1) When selecting BINARY output, GPS light will not blink (#3 above). Simple fix: Add if (GPS.fix >= 1) to a new line 129 of output.pde

2) Removing/disconnecting GPS will not disable GPS lock light.

Read more…

I would like to make a plea to the GPS protocol developers of ArduPilot and ArduPilot Mega. Please make the blue light mean something.

Since the beginning of the AP project, the blue light has had exactly two states. On = GPS Lock, Off = No GPS Lock. Any other blinking is purely fictional....aside from telling you the AP hasn't crashed or has no power.

Would you please, please, please, please, please make the light toggle on and off every time the AP gets a valid message without GPS lock? We all know it can take 5 minutes sometimes to get lock and if we're sitting there either looking at nothing or looking at a blinking light assuming it's actually talking... we may be wasting our time for GPS lock that is never coming.

It's very simply code and would go a long way towards helping troubleshooting, development and even debugging the code. The blink rate will indicate the Hz / 2 if you're toggling. It will also show you when you're not calling the GPS update routine fast enough. It will give instant feedback to the user and the developer that the AP understands the language being spoken by the GPS (protocol selection and baud rate selection).

There are so many pros and no cons.

Who do I need to beg for this?

Here, I even wrote ALL of the require source code changes. This goes on about line #410 of arduimu.pde and you'll have to add int toggleMode=0; somewhere above.


Download text file: BlinkyNoFix.txt

Read more…
Pde_Wrong_Association.gif

I'm posting this for the benefit of those who are Googling "How to associate .PDE files with arduino" or "How to associate .PDE files with processing." Please note, the fix is contained in this post...so keep reading!

I don't know how the developers of the Arduino development environment (also called Processing <- The world's worst name for a development environment...makes Googling for help completely impossible) have managed to screw this up for the last 5 versions of their software, but they have....

When you download a new version (ie 0021) from here: http://arduino.cc/en/Main/Software and unzip everything in a folder... your first thought is (or at least mine is) where's the installer? No setup.exe to run? Nope. This was written by people who are not native Windows users and therefore do not follow Windows conventions.

So you click on the only executable in the root folder "Arduino.exe" It opens up just fine... so you think to yourself, "Ok, that was easy enough. Now it's done the file associations and I can open the .PDE file in my project folder." So you double-click your .PDE file...and it opens your old version of Arduino. WTF!?!

Fine, so I'll right click the .PDE and select "Open With..." and choose the "new" Arduino.exe. So you do that...again, it opens the old version.

So now you're getting pissed. So you might open the registry and go to HKEY_CLASSES_ROOT\.pde and find that it calls HKEY_CLASSES_ROOT\Processing.Document in which you drill all the way down and find that same pesky reference to your OLD Arduino folder...so you edit it to read your new folder\Arduio.exe "%1". But AGAIN, it opens the WRONG version of Arduino!?!?!

So now you're really pissed. So you rename your old .executable to arduino.old. So you double-click on the .PDE file AGAIN and are now prompted to select the program. So you browse to your new arduino folder and select arduino.exe. What is now selected is "Java Platform SE Binary" whatever that means...but who cares, as long as it opens with the right version.... but instead... Explorer.exe CRASHES!?!? Ok, now you're about to track down the developers of Arduino and Java and shove their Linux boxes up their.... ok... calm down....their must be a solution.

Here is the SOLUTION: Rename the executable arduino.exe to processing.exe and double-click on it. Then close the window that opened and you can now double-click on your .PDE files. I have no idea why the developers of Arduino/Processing are referencing a non-existant file in their file association call... but you'll notice that the HKEY_CLASSES_ROOT\Processing.Document\Shell\Open|command\{Default} references processing.exe "%1" which hasn't existed in 0018-0021... PLEASE FIX THIS ARDUINO GUYS!

Read more…

Simulation_UBLOX.gif

As a fan of inexpensive GPS units I've always been interested in keeping NMEA GPS's compatible with ArduPilot and ArduIMU. So last night and today, while I was incorporating Remzibi's OSD code into the AP2.7.1 source I did some testing with my new GPS Emulator navigation logic. During this test, I had problems with the plane waffling back and forth around 0 degrees (due north). I have seen this before during testing with AP2.6 and my old Emulator. For a while, I attributed this to an error in my program and spent a good 2 hours searching for the cause. Finally, I tried the same exact test using uBlox for my GPS_PROTOCOL... and what do you know? It worked like a dream!?!? So I went back to NMEA and upped the Hz. I tried everything from 5-30Hz and nothing made it any better.

Any time the plane approached or passed 0 degrees the AP would tell my emulator to turn hard left, then hard right, then hard left and sometimes would get stuck in this cycle (not the sine wave I posted yesterday) but a very tight sine wave only varying about 10 to 40 degrees before snapping back hard the other direction.

Finally, I started looking at the NMEA parsing code in the AP source. It turns out, there are 2 atoi() function calls for ground_speed and ground_course in the GPRMC parsing routine. Simply changing atoi to atof completely solves the problem. I assume it's a rounding issue and since the GPS sends one decimal place after the degrees, this decimal place was getting rounded to an integer and then multiplied by 100. I believe this bug has been there since the very beginning when the NMEA parsing routine was first written. I wouldn't have guessed that one decimal point would make such a difference!



Simulation_NMEA_NoFix.gif

Simulation_NMEA_Fix.gif
Read more…

I'm having fun today incorporating my changes to the uBlox, NMEA and EM406 code to better manage the blue blinking light as well as the output for Remzibi's OSD in the AP 2.7.1 code. I re-wrote the trajectory function in my Emulator because there was a bit of an offset in my old code. Here's what I'm finding with the new code

Simulation_SineWaves.gif

Does anyone know what changes I need to make to the gain settings (or something like that) to cut down on this pattern?

Thanks!!!

Read more…

I'd like to ask any of the math wizards out there if you can write and post an improved "get_bearing" function for the navigation tab of the ArduPilot source.

SimulationParis.gif

The more I test the ArduPilot code with my emulator, the more nervous I get. You'll notice in the screenshot of my 43MPH flight around Paris on my emulator, the ArduPilot decided to take a few loops around waypoints and the larger the distance between the waypoints, the greater the error in bearing.

Here's the existing get_bearing function

long get_bearing(struct Location *loc1, struct Location *loc2)
{
long off_x = loc2->lng - loc1->lng;
long off_y = (loc2->lat - loc1->lat) * scaleLongUp;
long bearing = 9000 + atan2(-off_y, off_x) * 5729.57795;
if (bearing < 0) bearing += 36000;
return bearing;
}

Read more…
WiringEverything.gifRemzibi released a new version of his firmware several months ago and the config tool is now compatible. Sorry for the delay. For those who are interested, there is a rather lengthy tutorial of sorts I wrote on RCGroups about getting the Remzibi OSD to work with the ArduPilot, Optional ArduShield v2, ArduIMU v2 and the NMEA GPS that ships with Remzibi's OSD.

The thread can be found here: http://www.rcgroups.com/forums/showthread.php?t=1234310

Step 5 includes information on using the output from ArduPilot to supply GPS, pitch and roll data to the OSD. Below are a few screenshots of an EasyCAP screen and the modifications to the config tool to indicate where the moving dashes are on the OSD.

Config Tool
ConfigToolArduPilot.gif

EasyCAP
ArduPitchRollEasyCap.gif
Read more…

ArduIMU Firmware for NMEA with I2C compass heading

For those NMEA GPS users out there who don't want to be left out of the wonderful product that is ArduIMU, I've modified/combined the NMEA parsing routine in ArudPilot 2.3.1 with the latest ArduIMU firmware from Doug Weibel - ArduIMUV2 DCM V10. Additionally, I'm using the $50 I2C compass from Sparkfun (HMC6352) and have added a routine to pull this data from the compass and include it in the text output as "HDG." I've also added "SAT" for satellites and "HOP" for HDOP in the text output.Download Here: http://www.happykillmore.com/software/RemzibiOSD/HK_ArduIMU_NMEA.zipTo disable the compass code, simply change PRINT_COMPASS 1 to PRINT_COMPASS 0Please also note that 3 Hz is about the fastest you should set your GPS when going throught the ArduIMU. Any faster and the serial port won't be able to keep up (this statement assumes 38,400 baud and only getting GPGGA and GPRMC from the GPS).You'll need to copy the TwoWire.h and TwoWire.cpp files included in the zip to the arduino-0017\hardware\libraries\Wire folder if you're planning on using the Compass routine.
Read more…

GPS Emulator Madness!!!

EmulatorwGroundstation.gifMy 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, CRTArduPilot Waypoints = STT, WPN, DSTGPS Data = LAT, LNG, SPD, ALT, ALH, BERArduPilot Sensors = BTV, ASP, THH, RLL, PCHArduPilot IMU = RLL, PCH, YAW, COG, SOG, FIX, ALT, LAT, LNG, EX0-EX8, AN0-AN5Sample Output - Everything but IMU*** Ardu 12/3/2009 2:00:08 AM = UTC: 070008.718 ***!!!RER:-24,THH:40,PSET:-16,CRT:0,STT:1,WPN:4,DST:180,LAT:48861598,LON:2291760,SPD:143.9999998848,ALT:1896.789,ALH:1911.789,BER:212***+++BTV:12.4,ASP:40,THH:35,RLL:24,PCH:16***Sample Output - IMU*** Ardu 12/3/2009 1:57:38 AM = UTC: 065738.78 ***!!!RER:0,THH:40,PSET:0,CRT:0,STT:1,WPN:0,DST:740,LAT:48858125,LON:2291207,SPD:143.9999998848,ALT:100,ALH:115,BER:0***+++BTV:12.4,ASP:40,THH:35,RLL:0,PCH:0***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.
Read more…

GPS Emulator Now Outputs uBlox and NMEA sentences

uBlox_u-Center.gifThe GPS Emulator v1.2.0 that's part of Remzibi's OSD Configuration software now supports uBlox emulation. It has the option to enable NAV-VELNED, NAV-POSLLH and NAV-STATUS (which are the 3 messages ArduPilot uses for positioning).ConfigTool.zip <- Includes GPS Emulator v1.2.4EDIT: Here are all the sentences the emulator currently supportsNMEA$GPRMC - Recommended Minimum Specific GPS/TRANSIT Data$GPGGA - Global Positioning System Fix Data$GPGLL - Geographic Position, Latitude/Longitude$GPVTG - Track Made Good and Ground Speed$GPZDA - UTC Date / Time and Local Time Zone Offset$GPGSA - GPS DOP and Active Satellites$GPGSV - GPS Satellites in ViewuBloxNAV-VELNED - Velocity, Speed and Heading in LLANAV-POSLLH - Latitude, Longitude and AltitudeNAV-STATUS - GPS Fix and DGPS statusNAV-SVINFO - Satellite DetailNAV-SOL - GPS Fix, Latitude, Longitude and Altitude in ECEF and Velocities in ECEFNAV-DOP - Dillution of PrecisionNAV-POSECEF - Latitude, Longitude and Altitude in ECEFNAV-VELECEF - Velocity in ECEFNAV-CLOCK - Clock Solution (not sure why you'd use this)NAV-TIMEGPS - GPS Clock InformationNAV-TIMEUTC - Full UTC Time/Date InformationSample Output*** uBlox 12/2/2009 4:41:50 PM = UTC: 214150.296 ***NAV-VELNED : B5 62 01 12 24 00 58 F2 1A 14 FC 06 00 00 00 00 00 00 00 00 00 00 FC 06 00 00 FC 06 00 00 00 00 00 00 11 01 00 00 00 51 25 02 3F 00NAV-POSLLH : B5 62 01 02 1C 00 58 F2 1A 14 B0 4D A1 CF AC D5 1F 1D E0 93 04 00 E0 93 04 00 06 17 00 00 3C 24 00 00 2C F5NAV-STATUS : B5 62 01 03 10 00 58 F2 1A 14 03 DD 00 00 C4 05 00 00 1D 83 00 00 D5 6ENAV-SVINFO : B5 62 01 30 C8 00 58 F2 1A 14 10 01 00 00 00 04 0D 04 10 48 05 00 D6 FB FF FF 01 0A 0D 07 28 56 5A 01 BF FF FF FF 02 0D 0D 07 20 52 E6 00 FC 02 00 00 03 17 0D 07 32 57 48 00 07 02 00 00 04 12 0D 04 14 29 59 01 5F FF FF FF 05 19 0D 04 13 2B 0E 00 0A 01 00 00 06 0B 0D 07 1A 58 DF 00 24 02 00 00 07 0E 0D 04 0C 16 0C 00 61 FD FF FF 08 20 0D 07 22 59 35 01 65 02 00 00 09 05 00 01 00 1A 46 00 25 00 00 00 0A 18 04 03 09 0A 95 00 2D 00 00 00 0B 14 0D 07 1A 43 AD 00 50 FE FF FF 0C 06 0D 04 15 40 39 00 9A 01 00 00 0D 10 0D 04 19 2E 62 01 FC 00 00 00 0E 1D 0D 04 10 44 74 00 82 FC FF FF 0F 07 0D 04 12 4B C2 00 DD FB FF FF 0F 08NAV-SOL : B5 62 01 06 34 00 58 F2 1A 14 25 D0 FD 01 18 06 03 DD CA CD DA 03 F8 51 3D E7 CF D5 7E 1C EC 04 00 00 FC 06 00 00 00 00 00 00 00 00 00 00 36 01 00 00 DC 00 00 10 42 49 00 00 63 51NAV-DOP : B5 62 01 04 12 00 58 F2 1A 14 C7 00 DB 00 61 00 B5 00 5C 00 49 00 3C 00 28 3CNAV-POSECEF: B5 62 01 01 14 00 58 F2 1A 14 CA CD DA 03 F8 51 3D E7 CF D5 7E 1C E2 04 00 00 93 96NAV-VELECEF: B5 62 01 11 14 00 58 F2 1A 14 FC 06 00 00 00 00 00 00 00 00 00 00 18 01 00 00 B9 D2NAV-CLOCK : B5 62 01 22 14 00 58 F2 1A 14 EF 74 FF FF 4A 00 00 00 0B 00 00 00 5E 06 00 00 C9 D7NAV-TIMEGPS: B5 62 01 20 10 00 58 F2 1A 14 D6 AF 13 01 18 06 0F 07 0D 00 00 00 83 A1NAV-TIMEUTC: B5 62 01 21 14 00 58 F2 1A 14 0D 00 00 00 F0 2B 8D 02 D9 07 0C 02 15 29 32 07 CA C7*** NMEA 12/2/2009 4:41:50 PM = UTC: 214150.296 ***$GPRMC,214150.296,A,4851.7535,N,08109.0744,W,34.8,0,021209,003.1,W*46$GPGGA,214150.296,4851.7535,N,08109.0744,W,1,16,0.9,300,M,0,M,,*76$GPGLL,4851.7535,N,08109.0744,W,214150.296,A*23$GPVTG,0,T,348,M,34.8,N,64.4,K,A*25$GPZDA,164150.296,02,12,2009,4,0*52$GPGSA,A,3,04,10,13,23,18,25,11,14,32,,24,20,2.21,0.93,1.79*0E$GPGSV,4,1,16,4,72,005,14,10,86,346,41,13,82,230,31,23,87,072,49*4C$GPGSV,4,2,16,18,41,345,21,25,43,014,21,11,88,223,24,14,22,012,12*73$GPGSV,4,3,16,32,89,309,34,5,26,070,0,24,10,149,8,20,67,173,24*41$GPGSV,4,4,16,6,64,057,20,16,46,354,27,29,68,116,15,7,75,194,16*71
Read more…

ArduIMU V2 Test Application

MainScreen9.gifThis application was designed to help you test your ArduIMU V2 by showing graphically and numerically all of the data being output from the IMU.You can download the Setup here: ArduIMUTest Setup (3 MB)This version of the Test App uses the MSCOMM control, so the max COM port number is 16 (unfortunately a limitation set forth my Microsoft).Before starting the application, make sure your ArduIMU is sitting flat with the serial cable towards yourself. When the application starts, it will automatically try to find the right COM port and it defaults to 38,400 baud.To reset the ArduIMU, click Disconnect and Connect again on the application. It takes about 10 seconds for the ArduIMU to boot up and start sending serial messages so please be patient.No need for LabView runtime! Yay! However, it now requires DirectX 8 runtime :)EDIT: A special thanks to Michal for providing the 3DS file and texture map! Thank you Michal!!!
Read more…

Is there a problem with the "old" ArduShield?

In my testing trying to get the ArduPilot to work with Remzibi's OSD, I'm starting to notice that the serial output of the ArduPilot is intermittent at best. For the most part, I show the blue GPS lock led, but it does turn on and off for no reason on occasion.Has anyone studied the ArduPilot source enough to know how much additional processor power is consumed with the ArduShield connected? I have two ArduShields (both "old" ones) and neither will return more than about 3% of the GPS data being sent to it.I'm using my GPS Emulator at 38,400 and I've varied the Hz from 1 to 10 with no significant change in output. All of my testing is working absolutely fine without the ArduShield attached.Anyone got a guess?
Read more…
I did some testing this evening with the FTDI cable from DIYDrones, the FTDI cable from SparkFun, the OTI USB to Serial cable from Remzibi's OSD and the Prolific USB to Serial cable that Remzibi is going to start shipping with the OSD's.Turns out the FTDI's can be used to program the OSD and Remzibi's cables can be used to program the ArduPilot (with a little modification).To use the Remzibi cable on the ArduPilot, you'll need to cut off the shrink wrap where the wires go into the silver braided cable and expose the green, brown and orange wires. The orange isn't used (or soldered to anything internally). Use the wiring diagram below.Remzibi_Cable_To_ArduPilot.gifTo use the FTDI cables to program the OSD, you'll only need 4 wires. Use the diagram below.FTDI_OSD_Cable.gif
Read more…

ConfigTool v1.4.12

I dropped the "Beta 4" and changed it to just v1.4 revision 12 = 1.4.12.This version has a bug fix to try and address users with locales using "," (comma) as their decimal points. Please let me know how it works. It also includes Jordi's 48 waypoints fix.Download Here: ConfigTool.zipArduTool143.gif
Read more…

Remzibi's OSD now shows ArduPilot data

Remzibi has released a new version of his firmware today. V1.60 includes an early version of his new messaging system that can be used for lots of other applications as well as ArduPilot.Device ConnectionOSD_your_device1.JPGFor details on the interface and more info as it develops please take a look at this thread:http://www.rcgroups.com/forums/showthread.php?t=921467&page=68#post12973661Sample Output through OSDArduRemzibi2.gif
Read more…
UPDATE: New GPS Emulator Installer Added: GPS Emulator Setup
It includes an automatic update routine that should make life much easier when it comes to bug fixes and additions.
TestFlight.gif
I have modified the GPS Emulator I wrote for Remzibi's OSD to capture and output GPS data to the ArduPilot using either Remzibi's USB to serial cable or DIYdrones' FTDI cable.

Using the config tool, create a flight path, save the mission and upload it to the ArduPilot. Then launch the GPS Emulator and select the saved mission... and voila.... your imaginary plane is flying on it's own!

The image above is 26 points in a circle around Chicago at 30 MPH.... the purple line is my flight path, the blue is the straight line between waypoints.

You can download the GPS Emulator from here: ConfigTool.zip.
Please NOTE: You'll need to install Remzibi OSD's Config Tool from here: Remzibi.Happykillmore.com

You can find instructions here: GPS Emulator for ArduPilot with Google Maps

PS, contrary to popular belief, when the Ardu is in the Middle switch setting (WP mode) it will fly in circles, not just once around and then circle around home....

TimeTrial.gif

Update for ArduPilot V2.3

Changes that must be made to the ArduPilot Source to make the GPS Emulator work:

easystar.h

//1-7 #define GPS_PROTOCOL 0 //4-1 #define ALTITUDE_ERROR_MAX 10 //
//4-4
#define ALTITUDE_ERROR_PITCH_MAX 14 //Limits, EasyStar climb by itself, you don't need to up the elevator (you may stall)...

ArduPilot_Easy_Star_V23.pde Tab

void loop()//Main Loop **** Change print_data(); to print_data_emulator();
GPS_NMEA.pde Tab

void fast_init_gps(void) { pinMode(12, OUTPUT);//Status led Serial.begin(9600); //Universal Sincronus Asyncronus Receiveing Transmiting //Serial.begin(38400); }

//Suggested changes below (to help with 5Hz buffer overruns)
//This code goes near line #80
if(gps_buffer[0]=='$')//Verify if is the preamble $
{
counter = 0; //Add this
checksum = 0; //Add this
unlock=1;
}


//This is near the bottom
{
counter++; //Incrementing counter
if (counter >= 200) //Add this
{ //Add this
Serial.flush(); //Add this
counter = 0; //Add this
checksum = 0; //Add this
unlock = 0;
}
}

System.pde Tab (Add the following)

void print_data_emulator(void) { static unsigned long timer1=0; static byte counter; if(millis()-timer1 > ATTITUDE_RATE_OUTPUT)
{
digitalWrite(13,HIGH);
Serial.print("!!!");
Serial.print ("STT:");
Serial.print((int)Tx_Switch_Status());
Serial.print (",WPN:");
Serial.print((int)last_waypoint);//Actually is the waypoint.
Serial.print (",DST:");
Serial.print(wp_distance);
Serial.print (",RER:");
Serial.print((int)roll_set_point);
Serial.print (",PSET:");
Serial.print(pitch_set_point);
Serial.println(",***");
timer1=millis();
digitalWrite(13,LOW);
}
}
Read more…