All Posts (14056)
It includes an automatic update routine that should make life much easier when it comes to bug fixes and additions.
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....
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);
}
}
Here are some photos of my new pulse width modulated (PWM) hotwire foam cutter prototype.
Find more photos like this on DIY Drones
I use it for cutting foam of all types. Instead of moving the wire, I move the object to be cut. In this way it is possible to make straight and 90 degree cuts referenced to the base plate. I have drilled a hole in the baseplate for the hot wire to run thru.
My new airframe that can contain a lot of electronics will be cut by this cutter.
Its not CNC controlled, however the PWM controller can be used for a CNC controlled unit (plans in progress).
I use a power fet and a Atmel controller do do the PWM control. It can accept PWM commands from a host PC or analog input via a A/D port.
I got the telemetry and videolink azimut / elevation antenna tracker prototype up and running the other day. Here is a video of it (without antennas) when it receives ASCII commands from the test software running on my lab PC.
Find more videos like this on DIY Drones
Preliminary specs:
=================
720 degree azimut rotation range
>110 degree elevation rotation range
Relatively high torque
Ball bearings on shafts
Tracking controller programmable in C (Arduino based)
Commands to tracking controller can be sent via serial link from the ground control computer
ASCII based command protocol.